⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 moveblockone.c

📁 用proteus模拟仿真实现俄罗期方块游戏
💻 C
字号:
//*************************************************************************************************
//*																								  *
//*			 ********************************移动方块1********************************			  *
//*																								  *
//*************************************************************************************************
#include "GameGraph.h"
#include "GameProcess.h"
#include "BlockCreate.h"

//*************************************************************************************************
//*																								  *
//*			 ********************************方块1状态1移动*****************************		  *
//*																								  *
//*************************************************************************************************
void vMoveStateOne(unsigned char ucAction)
{
	switch(ucAction)
		{
		//<<<<<<<<<<<<<<<<<<<<<<<<<旋转处理>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		case ACTIONROTATE:
				uc_BlockState=STATETWO;
				switch(uc_BlockLine)
					{
					case 0:
							vCleanBlock(uc_BlockRow,uc_BlockLine);
							vCleanBlock(uc_BlockRow-1,uc_BlockLine);
							vCleanBlock(uc_BlockRow-3,uc_BlockLine);
							uc_BlockRow-=2;
							vBlockCreate();
							break;
					case 10:
							vCleanBlock(uc_BlockRow,uc_BlockLine);
							vCleanBlock(uc_BlockRow-1,uc_BlockLine);
							vCleanBlock(uc_BlockRow-3,uc_BlockLine);
							uc_BlockRow-=2;
							uc_BlockLine-=2;
							vBlockCreate();
							break;
					case 11:
							vCleanBlock(uc_BlockRow,uc_BlockLine);
							vCleanBlock(uc_BlockRow-1,uc_BlockLine);
							vCleanBlock(uc_BlockRow-3,uc_BlockLine);
							uc_BlockRow-=2;
							uc_BlockLine-=3;
							vBlockCreate();
							break;
					default:
							vCleanBlock(uc_BlockRow,uc_BlockLine);
							vCleanBlock(uc_BlockRow-1,uc_BlockLine);
							vCleanBlock(uc_BlockRow-3,uc_BlockLine);
							uc_BlockRow-=2;
							uc_BlockLine--;
							vBlockCreate();
					}
				break;
		//<<<<<<<<<<<<<<<<<<<<<<<<<右移处理>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		case ACTIONRIGHT:
				vCleanBlock(uc_BlockRow,uc_BlockLine);
				vCleanBlock(uc_BlockRow-1,uc_BlockLine);
				vCleanBlock(uc_BlockRow-2,uc_BlockLine);
				vCleanBlock(uc_BlockRow-3,uc_BlockLine);
				uc_BlockLine--;
				vBlockCreate();										
				break;
		//<<<<<<<<<<<<<<<<<<<<<<<<<左移处理>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>	
		case ACTIONLEFT:
				vCleanBlock(uc_BlockRow,uc_BlockLine);
				vCleanBlock(uc_BlockRow-1,uc_BlockLine);
				vCleanBlock(uc_BlockRow-2,uc_BlockLine);
				vCleanBlock(uc_BlockRow-3,uc_BlockLine);
				uc_BlockLine++;
				vBlockCreate();										
				break;
		//<<<<<<<<<<<<<<<<<<<<<<<<<下降处理>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		case ACTIONDOWN:
				if(uc_BlockRow<3)
					{
					uc_BlockRow++;
					vBlockCreate();
					}
				else
					{
					vCleanBlock(uc_BlockRow-3,uc_BlockLine);
					uc_BlockRow++;
					vShowBlock(uc_BlockRow,uc_BlockLine);
					}
					break;
		//<<<<<<<<<<<<<<<<<<<<<<<<<默认处理>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		default:break;
		}
}

//*************************************************************************************************
//*																								  *
//*			 ********************************方块1状态2移动*****************************		  *
//*																								  *
//*************************************************************************************************
void vMoveStateTwo(unsigned char ucAction)
{
	switch(ucAction)
		{
		case ACTIONROTATE:
				uc_BlockState=STATEONE;
				vCleanBlock(uc_BlockRow,uc_BlockLine);
				vCleanBlock(uc_BlockRow,uc_BlockLine+2);
				vCleanBlock(uc_BlockRow,uc_BlockLine+3);
				uc_BlockRow+=2;
				uc_BlockLine++;
				vBlockCreate();
				break;
		case ACTIONRIGHT:
				vCleanBlock(uc_BlockRow,uc_BlockLine+3);
				vShowBlock(uc_BlockRow,uc_BlockLine-1);
				uc_BlockLine--;
				break;
		case ACTIONDOWN:
				vCleanBlock(uc_BlockRow,uc_BlockLine);
				vCleanBlock(uc_BlockRow,uc_BlockLine+1);
				vCleanBlock(uc_BlockRow,uc_BlockLine+2);
				vCleanBlock(uc_BlockRow,uc_BlockLine+3);
				uc_BlockRow++;
				vBlockCreate();
				break;
		case ACTIONLEFT:
				vCleanBlock(uc_BlockRow,uc_BlockLine);
				vShowBlock(uc_BlockRow,uc_BlockLine+4);
				uc_BlockLine++;
				break;
		default:break;
		}
}

//*************************************************************************************************
//*																								  *
//*			********************************状态分派函数********************************		  *
//*																								  *
//*************************************************************************************************
void vMoveBlockOne(unsigned char ucAction)
{			
	switch(uc_BlockState)
		{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<状态1处理>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		case STATEONE:vMoveStateOne(ucAction);break;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<状态2处理>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		case STATETWO:vMoveStateTwo(ucAction);break;
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
		default:break;
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -