perf(MCU课设): 优化方块生成逻辑
This commit is contained in:
parent
765045e00a
commit
c7abe9d0d6
2 changed files with 18 additions and 16 deletions
|
@ -4,6 +4,7 @@
|
||||||
#include <reg52.h>
|
#include <reg52.h>
|
||||||
#include "delay.h"
|
#include "delay.h"
|
||||||
#include "eeprom.h"
|
#include "eeprom.h"
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
extern unsigned int bestScore[];
|
extern unsigned int bestScore[];
|
||||||
char base[MAX_X][MAX_Y] = {0}; //x*y //0为空 1为下落完成 2为正在下落
|
char base[MAX_X][MAX_Y] = {0}; //x*y //0为空 1为下落完成 2为正在下落
|
||||||
|
@ -14,6 +15,7 @@ enum GS blockGameStatus = __idle;
|
||||||
void blockInit()
|
void blockInit()
|
||||||
{
|
{
|
||||||
score = 0;
|
score = 0;
|
||||||
|
srand((unsigned)TL0);
|
||||||
blockGameStatus = start;
|
blockGameStatus = start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,7 +55,7 @@ void genPiece()
|
||||||
|
|
||||||
char i, j;
|
char i, j;
|
||||||
//需要一点随机性
|
//需要一点随机性
|
||||||
int random = TH0 % 16;
|
int random = rand() % 100;
|
||||||
|
|
||||||
|
|
||||||
if(blockGameStatus == over)
|
if(blockGameStatus == over)
|
||||||
|
@ -67,56 +69,56 @@ void genPiece()
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//当两个方块的情况
|
//当两个方块的情况
|
||||||
if(random == 0)
|
if(random >= 0 && random <= 6)
|
||||||
{
|
{
|
||||||
base[4][9] = 2;
|
base[4][9] = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
//当两个方块的情况
|
//当两个方块的情况
|
||||||
if(random == 1 || random == 2)
|
if(random >= 7 && random <= 15)
|
||||||
{
|
{
|
||||||
base[4][9] = 2; //
|
base[4][9] = 2; //
|
||||||
base[4][10] = 2; //
|
base[4][10] = 2; //
|
||||||
}
|
}
|
||||||
else if(random == 3)
|
else if(random >= 16 && random <= 22)
|
||||||
{
|
{
|
||||||
base[3][9] = 2; ////
|
base[3][9] = 2; ////
|
||||||
base[4][9] = 2;
|
base[4][9] = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
//当三个方块的情况
|
//当三个方块的情况
|
||||||
else if(random == 4 || random == 5)
|
else if(random >= 23 && random <= 32)
|
||||||
{
|
{
|
||||||
|
|
||||||
base[4][11] = 2;
|
base[4][11] = 2;
|
||||||
base[4][10] = 2;
|
base[4][10] = 2;
|
||||||
base[4][9] = 2;
|
base[4][9] = 2;
|
||||||
}
|
}
|
||||||
else if(random == 6)
|
else if(random >= 32 && random <= 38)
|
||||||
{
|
{
|
||||||
base[3][9] = 2;
|
base[3][9] = 2;
|
||||||
base[4][9] = 2;
|
base[4][9] = 2;
|
||||||
base[5][9] = 2;
|
base[5][9] = 2;
|
||||||
}
|
}
|
||||||
else if(random == 7)
|
else if(random >= 39 && random <= 47)
|
||||||
{
|
{
|
||||||
base[3][10] = 2;
|
base[3][10] = 2;
|
||||||
base[3][9] = 2;
|
base[3][9] = 2;
|
||||||
base[4][9] = 2;
|
base[4][9] = 2;
|
||||||
}
|
}
|
||||||
else if (random == 8)
|
else if (random >= 48 && random <= 55)
|
||||||
{
|
{
|
||||||
base[4][10] = 2;
|
base[4][10] = 2;
|
||||||
base[3][9] = 2;
|
base[3][9] = 2;
|
||||||
base[4][9] = 2;
|
base[4][9] = 2;
|
||||||
}
|
}
|
||||||
else if (random == 9)
|
else if (random >= 56 && random <= 63)
|
||||||
{
|
{
|
||||||
base[4][9] = 2;
|
base[4][9] = 2;
|
||||||
base[3][10] = 2;
|
base[3][10] = 2;
|
||||||
base[4][10] = 2;
|
base[4][10] = 2;
|
||||||
}
|
}
|
||||||
else if (random == 10)
|
else if (random >= 64 && random <= 69)
|
||||||
{
|
{
|
||||||
base[3][9] = 2;
|
base[3][9] = 2;
|
||||||
base[3][10] = 2;
|
base[3][10] = 2;
|
||||||
|
@ -124,35 +126,35 @@ void genPiece()
|
||||||
}
|
}
|
||||||
|
|
||||||
//当四个方块的情况
|
//当四个方块的情况
|
||||||
else if(random == 11)
|
else if(random >= 70 && random <= 79)
|
||||||
{
|
{
|
||||||
base[3][10] = 2;
|
base[3][10] = 2;
|
||||||
base[4][10] = 2;
|
base[4][10] = 2;
|
||||||
base[3][9] = 2;
|
base[3][9] = 2;
|
||||||
base[4][9] = 2;
|
base[4][9] = 2;
|
||||||
}
|
}
|
||||||
else if(random == 12)
|
else if(random >= 80 && random <= 84)
|
||||||
{
|
{
|
||||||
base[3][10] = 2;
|
base[3][10] = 2;
|
||||||
base[4][10] = 2;
|
base[4][10] = 2;
|
||||||
base[3][9] = 2;
|
base[3][9] = 2;
|
||||||
base[4][11] = 2;
|
base[4][11] = 2;
|
||||||
}
|
}
|
||||||
else if(random == 13)
|
else if(random >= 85 && random <= 89)
|
||||||
{
|
{
|
||||||
base[3][10] = 2;
|
base[3][10] = 2;
|
||||||
base[4][10] = 2;
|
base[4][10] = 2;
|
||||||
base[3][11] = 2;
|
base[3][11] = 2;
|
||||||
base[4][9] = 2;
|
base[4][9] = 2;
|
||||||
}
|
}
|
||||||
else if(random == 14)
|
else if(random >= 90 && random <= 94)
|
||||||
{
|
{
|
||||||
base[3][10] = 2;
|
base[3][10] = 2;
|
||||||
base[4][10] = 2;
|
base[4][10] = 2;
|
||||||
base[4][9] = 2;
|
base[4][9] = 2;
|
||||||
base[5][9] = 2;
|
base[5][9] = 2;
|
||||||
}
|
}
|
||||||
else if(random == 15)
|
else if(random >= 95 && random <= 99)
|
||||||
{
|
{
|
||||||
base[3][10] = 2;
|
base[3][10] = 2;
|
||||||
base[4][10] = 2;
|
base[4][10] = 2;
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
//#define WIPE_BEST
|
//#define WIPE_BEST
|
||||||
|
|
||||||
#define RELOAD (65535-9216) //定时器填充值(1ms)
|
#define RELOAD (65535-8535) //定时器填充值(1ms)
|
||||||
unsigned char TH, TL;
|
unsigned char TH, TL;
|
||||||
|
|
||||||
extern Menu *NOW; //꽉데寧濾
|
extern Menu *NOW; //꽉데寧濾
|
||||||
|
|
Reference in a new issue