fix(MCU课设): 完全修正方块下落bug
This commit is contained in:
parent
a7eaddb690
commit
f926ffad48
3 changed files with 673 additions and 677 deletions
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,7 @@
|
|||
#include "block.h"
|
||||
#include "draw.h"
|
||||
#include "button.h"
|
||||
#include <reg52.h>
|
||||
|
||||
char base[MAX_X][MAX_Y] = {0}; //x*y //0为空 1为下落完成 2为正在下落
|
||||
enum BLK_TP type = none;
|
||||
|
@ -22,16 +23,17 @@ void genPiece()
|
|||
{
|
||||
|
||||
char i, j;
|
||||
|
||||
//需要一点随机性
|
||||
int random = rand() % 4;
|
||||
int len = 2 + rand() % 3;
|
||||
int random = TH0 % 4;
|
||||
int len = 2 + TH0 % 3;
|
||||
|
||||
|
||||
//若存在尚未下落完成的方块则打断
|
||||
for(i = 0; i < MAX_X; i++)
|
||||
for(j = 0; j < MAX_Y; j++)
|
||||
if(base[i][j] == 2)
|
||||
break;
|
||||
return;
|
||||
|
||||
|
||||
|
||||
//当两个方块的情况
|
||||
|
@ -112,9 +114,9 @@ void dropPiece()
|
|||
char i, j, flag = 0;
|
||||
|
||||
//检测是否触底
|
||||
for(i = 0; i < 8; i++)
|
||||
for(i = 0; i < MAX_X; i++)
|
||||
{
|
||||
for(j = 0; j < 8; j++)
|
||||
for(j = 0; j < MAX_Y; j++)
|
||||
{
|
||||
if(flag == 1)
|
||||
break;
|
||||
|
@ -133,9 +135,9 @@ void dropPiece()
|
|||
break;
|
||||
}
|
||||
//转换嵌套
|
||||
for(i = 0; i < 8; i++)
|
||||
for(i = 0; i < MAX_X; i++)
|
||||
{
|
||||
for(j = 0; j < 8; j++)
|
||||
for(j = 0; j < MAX_Y; j++)
|
||||
{
|
||||
if(base[i][j] == 2)
|
||||
{
|
||||
|
@ -158,8 +160,8 @@ void dropPiece()
|
|||
void movePiece(enum OPR opr)
|
||||
{
|
||||
char i, j;
|
||||
for(i = 0; i < 8; i++)
|
||||
for(j = 0; j < 8; j++)
|
||||
for(i = 0; i < MAX_X; i++)
|
||||
for(j = 0; j < MAX_Y; j++)
|
||||
if(base[i][j] == 2)
|
||||
{
|
||||
|
||||
|
|
|
@ -6,6 +6,12 @@
|
|||
#include <stdlib.h>
|
||||
#include "block.h"
|
||||
|
||||
//便于调试的预编译命令
|
||||
#define DEBUG_MODE
|
||||
|
||||
#ifdef DEBUG_MODE
|
||||
#define M_DEBUG M_BLOCK
|
||||
#endif
|
||||
|
||||
Menu M_MAINMENU;//主菜单
|
||||
Menu M_BLOCK; //俄罗斯方块
|
||||
|
@ -125,6 +131,9 @@ void menuInit()
|
|||
M_MAINMENU.f = m_mainmenu;
|
||||
M_BLOCK.f = m_block;
|
||||
|
||||
|
||||
#ifdef DEBUG_MODE
|
||||
NOW = &M_DEBUG;
|
||||
#else
|
||||
NOW = &M_STARTUP;
|
||||
#endif
|
||||
}
|
||||
|
|
Reference in a new issue