moveblockfour.c
来自「用proteus模拟仿真实现俄罗期方块游戏」· C语言 代码 · 共 220 行
C
220 行
//*************************************************************************************************
//* *
//* ********************************移动方块4******************************** *
//* *
//*************************************************************************************************
#include "GameGraph.h"
#include "GameProcess.h"
//*************************************************************************************************
//* *
//* *********************************状态1移动********************************** *
//* *
//*************************************************************************************************
void vMoveFourStateOne(unsigned char ucAction)
{
switch(ucAction)
{
case ACTIONROTATE:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow,uc_BlockLine+2);
vCleanBlock(uc_BlockRow-1,uc_BlockLine+2);
vShowBlock(uc_BlockRow-1,uc_BlockLine);
vShowBlock(uc_BlockRow-1,uc_BlockLine+1);
vShowBlock(uc_BlockRow+1,uc_BlockLine+1);
uc_BlockRow++;
uc_BlockLine++;
uc_BlockState=STATETWO;
break;
case ACTIONRIGHT:
vCleanBlock(uc_BlockRow,uc_BlockLine+2);
vCleanBlock(uc_BlockRow-1,uc_BlockLine+2);
vShowBlock(uc_BlockRow,uc_BlockLine-1);
vShowBlock(uc_BlockRow-1,uc_BlockLine+1);
uc_BlockLine--;
break;
case ACTIONDOWN:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow,uc_BlockLine+1);
if(uc_BlockRow)
vCleanBlock(uc_BlockRow-1,uc_BlockLine+2);
vShowBlock(uc_BlockRow+1,uc_BlockLine);
vShowBlock(uc_BlockRow+1,uc_BlockLine+1);
vShowBlock(uc_BlockRow+1,uc_BlockLine+2);
uc_BlockRow++;
break;
case ACTIONLEFT:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow-1,uc_BlockLine+2);
vShowBlock(uc_BlockRow,uc_BlockLine+3);
vShowBlock(uc_BlockRow-1,uc_BlockLine+3);
uc_BlockLine++;
break;
default:break;
}
}
//*************************************************************************************************
//* *
//* *********************************状态2移动********************************** *
//* *
//*************************************************************************************************
void vMoveFourStateTwo(unsigned char ucAction)
{
switch(ucAction)
{
case ACTIONROTATE:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow-2,uc_BlockLine);
vCleanBlock(uc_BlockRow-2,uc_BlockLine-1);
vShowBlock(uc_BlockRow-1,uc_BlockLine+1);
vShowBlock(uc_BlockRow,uc_BlockLine-1);
vShowBlock(uc_BlockRow-1,uc_BlockLine-1);
uc_BlockLine--;
uc_BlockState=STATETHREE;
break;
case ACTIONRIGHT:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow-1,uc_BlockLine);
vCleanBlock(uc_BlockRow-2,uc_BlockLine);
vShowBlock(uc_BlockRow,uc_BlockLine-1);
vShowBlock(uc_BlockRow-1,uc_BlockLine-1);
vShowBlock(uc_BlockRow-2,uc_BlockLine-2);
uc_BlockLine--;
break;
case ACTIONDOWN:
vCleanBlock(uc_BlockRow-2,uc_BlockLine);
vCleanBlock(uc_BlockRow-2,uc_BlockLine-1);
vShowBlock(uc_BlockRow-1,uc_BlockLine-1);
vShowBlock(uc_BlockRow+1,uc_BlockLine);
uc_BlockRow++;
break;
case ACTIONLEFT:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow-1,uc_BlockLine);
vCleanBlock(uc_BlockRow-2,uc_BlockLine-1);
vShowBlock(uc_BlockRow,uc_BlockLine+1);
vShowBlock(uc_BlockRow-1,uc_BlockLine+1);
vShowBlock(uc_BlockRow-2,uc_BlockLine+1);
uc_BlockLine++;
break;
default:break;
}
}
//*************************************************************************************************
//* *
//* *********************************状态3移动********************************** *
//* *
//*************************************************************************************************
void vMoveFourStateThree(unsigned char ucAction)
{
switch(ucAction)
{
case ACTIONROTATE:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow-1,uc_BlockLine);
vCleanBlock(uc_BlockRow-1,uc_BlockLine+2);
vShowBlock(uc_BlockRow,uc_BlockLine+1);
vShowBlock(uc_BlockRow,uc_BlockLine+2);
vShowBlock(uc_BlockRow-2,uc_BlockLine+1);
uc_BlockLine++;
uc_BlockState=STATEFOUR;
break;
case ACTIONRIGHT:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow-1,uc_BlockLine+2);
vShowBlock(uc_BlockRow,uc_BlockLine-1);
vShowBlock(uc_BlockRow-1,uc_BlockLine-1);
uc_BlockLine--;
break;
case ACTIONDOWN:
if(uc_BlockRow!=0)
{
vCleanBlock(uc_BlockRow-1,uc_BlockLine);
vCleanBlock(uc_BlockRow-1,uc_BlockLine+1);
vCleanBlock(uc_BlockRow-1,uc_BlockLine+2);
}
vShowBlock(uc_BlockRow,uc_BlockLine+1);
vShowBlock(uc_BlockRow,uc_BlockLine+2);
vShowBlock(uc_BlockRow+1,uc_BlockLine);
uc_BlockRow++;
break;
case ACTIONLEFT:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow-1,uc_BlockLine);
vShowBlock(uc_BlockRow,uc_BlockLine+1);
vShowBlock(uc_BlockRow-1,uc_BlockLine+3);
uc_BlockLine++;
break;
default:break;
}
}
//*************************************************************************************************
//* *
//* *********************************状态4移动********************************** *
//* *
//*************************************************************************************************
void vMoveFourStateFour(unsigned char ucAction)
{
switch(ucAction)
{
case ACTIONROTATE:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow,uc_BlockLine+1);
vCleanBlock(uc_BlockRow-2,uc_BlockLine);
vShowBlock(uc_BlockRow-1,uc_BlockLine-1);
vShowBlock(uc_BlockRow-1,uc_BlockLine+1);
vShowBlock(uc_BlockRow-2,uc_BlockLine+1);
uc_BlockRow--;
uc_BlockLine--;
uc_BlockState=STATEONE;
break;
case ACTIONRIGHT:
vCleanBlock(uc_BlockRow,uc_BlockLine+1);
vCleanBlock(uc_BlockRow-1,uc_BlockLine);
vCleanBlock(uc_BlockRow-2,uc_BlockLine);
vShowBlock(uc_BlockRow,uc_BlockLine-1);
vShowBlock(uc_BlockRow-1,uc_BlockLine-1);
vShowBlock(uc_BlockRow-2,uc_BlockLine-1);
uc_BlockLine--;
break;
case ACTIONDOWN:
if(uc_BlockRow>1)
vCleanBlock(uc_BlockRow-2,uc_BlockLine);
vCleanBlock(uc_BlockRow,uc_BlockLine+1);
vShowBlock(uc_BlockRow+1,uc_BlockLine);
vShowBlock(uc_BlockRow+1,uc_BlockLine+1);
uc_BlockRow++;
break;
case ACTIONLEFT:
vCleanBlock(uc_BlockRow,uc_BlockLine);
vCleanBlock(uc_BlockRow-1,uc_BlockLine);
vCleanBlock(uc_BlockRow-2,uc_BlockLine);
vShowBlock(uc_BlockRow-1,uc_BlockLine+1);
vShowBlock(uc_BlockRow-2,uc_BlockLine+1);
vShowBlock(uc_BlockRow,uc_BlockLine+2);
uc_BlockLine++;
break;
default:break;
}
}
//*************************************************************************************************
//* *
//* *********************************状态分派函数******************************* *
//* *
//*************************************************************************************************
void vMoveBlockFour(unsigned char ucAction)
{
switch(uc_BlockState)
{
case STATEONE:vMoveFourStateOne(ucAction);break;
case STATETWO:vMoveFourStateTwo(ucAction);break;
case STATETHREE:vMoveFourStateThree(ucAction);break;
case STATEFOUR:vMoveFourStateFour(ucAction);break;
default:break;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?