fix(MCU课设): 修正方块生成逻辑
This commit is contained in:
parent
4f0e69ddab
commit
49cb727472
5 changed files with 807 additions and 750 deletions
File diff suppressed because it is too large
Load diff
|
@ -10,10 +10,6 @@ extern enum OPR opr;
|
|||
void blockInit()
|
||||
{
|
||||
|
||||
base[0][0] = 1;
|
||||
base[0][1] = 1;
|
||||
base[0][2] = 1;
|
||||
|
||||
}
|
||||
|
||||
void blockDestroy()
|
||||
|
@ -26,8 +22,8 @@ void genPiece()
|
|||
|
||||
char i, j;
|
||||
//需要一点随机性
|
||||
int random = TH0 % 4;
|
||||
int len = 2 + TH0 % 3;
|
||||
int random = TH0 % 9;
|
||||
|
||||
|
||||
|
||||
//若存在尚未下落完成的方块则打断
|
||||
|
@ -36,52 +32,53 @@ void genPiece()
|
|||
if(base[i][j] == 2)
|
||||
return;
|
||||
|
||||
|
||||
//当两个方块的情况
|
||||
if(random == 0)
|
||||
{
|
||||
base[4][8] = 2;
|
||||
}
|
||||
|
||||
//当两个方块的情况
|
||||
if(len == 2)
|
||||
if(random == 1 || random == 2)
|
||||
{
|
||||
if(random % 2 == 0)
|
||||
{
|
||||
base[4][8] = 2; //
|
||||
base[4][8] = 2; //
|
||||
}
|
||||
else
|
||||
{
|
||||
base[3][8] = 2; ////
|
||||
base[4][8] = 2;
|
||||
}
|
||||
base[4][8] = 2; //
|
||||
base[5][8] = 2; //
|
||||
}
|
||||
else if(random == 3)
|
||||
{
|
||||
base[3][8] = 2; ////
|
||||
base[4][8] = 2;
|
||||
}
|
||||
|
||||
//当三个方块的情况
|
||||
if(len == 3)
|
||||
else if(random == 4 || random == 5)
|
||||
{
|
||||
if(random == 0)
|
||||
{
|
||||
base[4][10] = 2;
|
||||
base[4][8] = 2;
|
||||
base[4][9] = 2;
|
||||
}
|
||||
else if(random == 1)
|
||||
{
|
||||
base[3][8] = 2;
|
||||
base[4][8] = 2;
|
||||
base[5][8] = 2;
|
||||
}
|
||||
else if(random == 2)
|
||||
{
|
||||
base[3][9] = 2;
|
||||
base[3][8] = 2;
|
||||
base[4][8] = 2;
|
||||
}
|
||||
else if (random == 3)
|
||||
{
|
||||
base[4][9] = 2;
|
||||
base[3][8] = 2;
|
||||
base[4][8] = 2;
|
||||
}
|
||||
|
||||
base[4][10] = 2;
|
||||
base[4][8] = 2;
|
||||
base[4][9] = 2;
|
||||
}
|
||||
//µ±Ëĸö·½¿éµÄÇé¿ö
|
||||
if(len == 3)
|
||||
else if(random == 6)
|
||||
{
|
||||
base[3][8] = 2;
|
||||
base[4][8] = 2;
|
||||
base[5][8] = 2;
|
||||
}
|
||||
else if(random == 7)
|
||||
{
|
||||
base[3][9] = 2;
|
||||
base[3][8] = 2;
|
||||
base[4][8] = 2;
|
||||
}
|
||||
else if (random == 8)
|
||||
{
|
||||
base[4][9] = 2;
|
||||
base[3][8] = 2;
|
||||
base[4][8] = 2;
|
||||
}
|
||||
|
||||
//当四个方块的情况
|
||||
else if(random == 6)
|
||||
{
|
||||
base[3][9] = 2;
|
||||
base[4][9] = 2;
|
||||
|
@ -107,7 +104,7 @@ void drawBlock()
|
|||
if(base[i][j] != 0)
|
||||
placeIMG_BLOCK(i, j);
|
||||
else
|
||||
place_VOID_BLOCK(i, j);
|
||||
placeVOID_BLOCK(i, j);
|
||||
}
|
||||
|
||||
//方块下落与合并
|
||||
|
|
|
@ -264,7 +264,7 @@ void placeIMG_BLOCK(unsigned char x,unsigned char y)
|
|||
}
|
||||
}
|
||||
|
||||
void place_VOID_BLOCK(unsigned char x,unsigned char y)
|
||||
void placeVOID_BLOCK(unsigned char x,unsigned char y)
|
||||
{
|
||||
char j;
|
||||
for(j = 0 ; j < 8; j++)
|
||||
|
@ -285,3 +285,37 @@ void place_VOID_BLOCK(unsigned char x,unsigned char y)
|
|||
write();
|
||||
}
|
||||
}
|
||||
|
||||
void drawVerticalDottedLine(char x)
|
||||
{
|
||||
unsigned int j;
|
||||
if(x<0||x>127)
|
||||
return;
|
||||
else if(x<64)
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
x=x-63;
|
||||
CSA = 0;
|
||||
CSB = 1;
|
||||
}
|
||||
|
||||
for(j = 0 ; j < 8; j++)
|
||||
{
|
||||
|
||||
RS = 0;
|
||||
RW = 0;
|
||||
P1 = 0xb8 + j;
|
||||
write();
|
||||
P1 = 0X40 + x;
|
||||
write(); //Ò³2ÁÐjÆÁA
|
||||
|
||||
RS = 1;
|
||||
RW = 0;
|
||||
P1 = 0x55;
|
||||
write();
|
||||
|
||||
}
|
||||
}
|
|
@ -9,5 +9,8 @@ void drawMAINMENU(unsigned char);
|
|||
////=================== 方块 ==================
|
||||
|
||||
void placeIMG_BLOCK(unsigned char x,unsigned char y);
|
||||
void place_VOID_BLOCK(unsigned char x,unsigned char y);
|
||||
void placeVOID_BLOCK(unsigned char x,unsigned char y);
|
||||
|
||||
////=================== 섯부 ==================
|
||||
void drawVerticalDottedLine(char x);
|
||||
#endif
|
|
@ -106,6 +106,7 @@ void m_block(struct _menu* this)
|
|||
if(LAST != &M_BLOCK)
|
||||
{
|
||||
LAST = &M_BLOCK;
|
||||
drawVerticalDottedLine(64);
|
||||
blockInit();
|
||||
}
|
||||
//ÖØÖÃ
|
||||
|
|
Reference in a new issue