?? moveblock.c
字號:
//*************************************************************************************************
//* *
//* ******************************方塊移動函數(shù)******************************* *
//* *
//*************************************************************************************************
#include "includes.h"
//*************************************************************************************************
//* *
//* **********************************創(chuàng)建一個方塊****************************** *
//* *
//*************************************************************************************************
void vCreateBlock() //在當(dāng)前位置創(chuàng)建一個方塊。
{
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() //在當(dāng)前位置刪除一個方塊。
{
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));
}
}
//*************************************************************************************************
//* *
//* **********************************產(chǎn)生一個新的方塊**************************** *
//* *
//*************************************************************************************************
void vNewBlock()
{
unsigned char ucBlockSelect; //用于選擇方塊類型及狀態(tài)的數(shù),通過取
ucBlockSelect=(TH0+TH1)%18; //定時器的值產(chǎn)生隨機(jī)數(shù)。
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();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -