gameprocess.c

来自「由51单片机与12864组成 俄罗斯方块游戏程序 keil工程」· C语言 代码 · 共 109 行

C
109
字号
//*************************************************************************************************
//*																								  *
//*			 ******************************游戏动作处理程序**************************			  *
//*																								  *
//*************************************************************************************************
#include "includes.h"

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定义当前方块属性变量>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
BLOCK *psta_BlockCur=sta_BlockSet,*psta_BlockNext;	   	//指向当前方块设定的指针。

bit b_GameStart=0;		   				//游戏开始标志位。


//*************************************************************************************************
//*																								  *
//*			 ********************************游戏初始化*******************************			  *
//*																								  *
//*************************************************************************************************
void vGameInitialize()
{
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<清空LCD>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	vCleanAll();

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<清空游戏区域>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	vCleanAllBlock();

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化分数显示>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	vMarkInitialize();

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化时间显示>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	vTimeInitialize();

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化等级显示>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	vLevelInitialize();

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化游戏边框>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	vShowFrame();

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化方块位置>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>													 
	uc_BlockRow=STARTROW;
	uc_BlockLine=STARTLINE;

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化方块类型>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	vNewBlock();

	psta_BlockCur=psta_BlockNext;

	vNewBlock();

	vShowBlockEx(6,18,psta_BlockNext);

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<初始化方块显示>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	vCreateBlock();

//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设游戏开始标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	b_GameStart=1;			
} 
//*************************************************************************************************
//*																								  *
//*			 ******************************判断游戏是否结束**************************			  *
//*																								  *
//*************************************************************************************************
unsigned char ucIsGameOver()
{
	unsigned char ucCount;
	for(ucCount=0;ucCount<12;ucCount++)
		if(ucReadBlock(0,ucCount))
			return 1;		   
	return 0;
}

//*************************************************************************************************
//*																								  *
//*			 ******************************游戏结束处理函数**************************			  *
//*																								  *
//*************************************************************************************************
void vGameOver()
{
	b_GameStart=0;  
	vShowGraph(3,30,70,2,uca_GAMEOVER);
}


//*************************************************************************************************
//*																								  *
//*			 ******************************游戏动作处理函数****************************			  *
//*																								  *
//*************************************************************************************************
void vBlockAction(unsigned char ucAction)
{
	if(ucMoveDecide(ucAction))		   //判断方块是否可以移动。
		vMoveBlock(ucAction);		   //如果可以,则移动方块。
	else
		if(ucAction==ACTIONDOWN)
			{
			if(ucIsGameOver())
				vGameOver();
			else
				{
				vGetMark();
				uc_BlockRow=STARTROW;
				uc_BlockLine=STARTLINE;	
				psta_BlockCur=psta_BlockNext;
				vNewBlock();
				vShowBlockEx(6,18,psta_BlockNext);
				vCreateBlock();
				}
			}
}

⌨️ 快捷键说明

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