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

📄 moveblock.c

📁 由51单片机与12864组成 俄罗斯方块游戏程序 keil工程
💻 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 + -