📄 moveblock.c
字号:
//*************************************************************************************************
//* *
//* ******************************方块移动函数******************************* *
//* *
//*************************************************************************************************
#include "includes.h"
//*************************************************************************************************
//* *
//* **********************************创建一个方块****************************** *
//* *
//*************************************************************************************************
void vCreateBlock() //在当前位置创建一个方块。
{
unsigned char ucRowOffset,ucLineOffset;
for(ucRowOffset=0;ucRowOffset<4;ucRowOffset++)
for(ucLineOffset=0;ucLineOffset<4;ucLineOffset++)
{
if((0x01&(unsigned char)((psta_BlockCur->uiBlockMap)>>(ucRowOffset*4+ucLineOffset)))
&&(uc_BlockRow+ucRowOffset)>=ROW(0))
vShowBlock(uc_BlockRow+ucRowOffset-ROW(0),uc_BlockLine+ucLineOffset-LINE(0));
}
}
//*************************************************************************************************
//* *
//* **********************************删除一个方块****************************** *
//* *
//*************************************************************************************************
void vDeleteBlock() //在当前位置删除一个方块。
{
unsigned char ucRowOffset,ucLineOffset;
for(ucRowOffset=0;ucRowOffset<4;ucRowOffset++)
for(ucLineOffset=0;ucLineOffset<4;ucLineOffset++)
{
if((0x01&(unsigned char)((psta_BlockCur->uiBlockMap)>>(ucRowOffset*4+ucLineOffset)))
&&(uc_BlockRow+ucRowOffset)>=ROW(0))
vCleanBlock(uc_BlockRow+ucRowOffset-ROW(0),uc_BlockLine+ucLineOffset-LINE(0));
}
}
//*************************************************************************************************
//* *
//* **********************************产生一个新的方块**************************** *
//* *
//*************************************************************************************************
void vNewBlock()
{
unsigned char ucBlockSelect; //用于选择方块类型及状态的数,通过取
ucBlockSelect=(TH0+TH1)%18; //定时器的值产生随机数。
psta_BlockNext=&sta_BlockSet[ucBlockSelect];
}
//*************************************************************************************************
//* *
//* *********************************移动方块******************************* *
//* *
//*************************************************************************************************
void vMoveBlock(unsigned char ucAction)
{
vDeleteBlock();
switch(ucAction)
{
case ACTIONLEFT:uc_BlockLine++;break;
case ACTIONRIGHT:uc_BlockLine--;break;
case ACTIONDOWN:uc_BlockRow++;break;
case ACTIONROTATE:psta_BlockCur=&sta_BlockSet[psta_BlockCur->ucNextState];break;
default:break;
}
vCreateBlock();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -