📄 movedecide.c
字号:
//*************************************************************************************************
//* *
//* ******************************方块移动判定函数************************** *
//* *
//*************************************************************************************************
#include "includes.h"
unsigned char ucMoveDecide(unsigned char ucAction)
{
unsigned char ucRow=uc_BlockRow,ucLine=uc_BlockLine; //把当前方块位置暂存。
unsigned char ucRowOffset,ucLineOffset; //方块位置偏移量。
unsigned int uiDecideMap; //方块判断位图。
if(ucAction==ACTIONROTATE)
uiDecideMap=psta_BlockCur->uiRotateDecide;
else
{
uiDecideMap=psta_BlockCur->uiBlockMap;
switch(ucAction)
{
case ACTIONLEFT:
uiDecideMap=(~(0x7777&(uiDecideMap>>1)))&uiDecideMap;
ucLine++;break;
case ACTIONRIGHT:
uiDecideMap=(~(0xEEEE&(uiDecideMap<<1)))&uiDecideMap;
ucLine--;break;
case ACTIONDOWN:
uiDecideMap=(~(uiDecideMap>>4))&uiDecideMap;
ucRow++;break;
default:break;
}
}
for(ucRowOffset=0;ucRowOffset<4;ucRowOffset++)
for(ucLineOffset=0;ucLineOffset<4;ucLineOffset++)
{
if(0x01&(unsigned char)(uiDecideMap>>(ucRowOffset*4+ucLineOffset)))
{
if((ucLine+ucLineOffset)<LINE(0)||(ucLine+ucLineOffset)>LINE(11)
||(ucRow+ucRowOffset)>ROW(20))
return 0;
if(ucReadBlock(ucRow+ucRowOffset-ROW(0),ucLine+ucLineOffset-LINE(0)))
return 0;
}
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -