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

📄 tetris_define.h

📁 在51单片机上运行的俄罗斯方块游戏,内含键盘扫描
💻 H
字号:
/************************************************************


				Tetris_define.h
				俄罗斯方块游戏定义程序
				制作人:内蒙古大学 夏士通
				时间:2008年5月14日
				E-mail:xiashitong@hotmail.com
				支持开源,欢迎交流


************************************************************/

/*Tetris.h中定义*/
unsigned int code Box_Ram_data[]=
{
0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,
0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,0x0020,
0xffff,0x0000,0x0000//多出来的三行是为了能让方块落到最低位置
					//多出来的第一行置0xffff用于检测方块释放到底
					//显示行初值为0x0020表示右边界
};//游戏点阵缓存10*16(用前10位表示)(1表示亮,0表示灭)

unsigned int code game_data[]=
{
0x64DB,0x8AAA,0x8AAA,0x8AAB,0xEEAA,0xAAAA,0xEAAB,0x0000
};//game字模(0x64,0xDB,0x8A,0xAA,0x8A,0xAA,0x8A,0xAB,0xEE,0xAA,0xAA,0xAA,0xEA,0xAB,0x00,0x00,)

unsigned int code over_data[]=
{
0x6566,0x9549,0x9549,0x956F,0x954A,0x9549,0x6268,0x0000
};//over字模(0x65,0x66,0x95,0x49,0x95,0x49,0x95,0x6F,0x95,0x4A,0x95,0x49,0x62,0x68,0x00,0x00,)

unsigned int code score_data[]=
{
0xC000,0x8000,0x9BB7,0xD2A5,0x52A7,0x52A4,0xDBA7,0x0000
};//score字模(0xC0,0x00,0x80,0x00,0x9B,0xB7,0xD2,0xA5,0x52,0xA7,0x52,0xA4,0xDB,0xA7,0x00,0x00,)

unsigned int code tetris_data[]=
{
0xE000,0x4008,0x4000,0x5A6B,0x574A,0x5A4B,0x5249,0x5B4B
};//tetris字模(0xE0,0x00,0x40,0x08,0x40,0x00,0x5A,0x6B,0x57,0x4A,0x5A,0x4B,0x52,0x49,0x5B,0x4B,)



unsigned long code num_data[]=
{
0xF99999F0,//0字模
0x11111110,//1字模
0xF11F88F0,//2字模
0xF11F11F0,//3字模
0x999F1110,//4字模
0xF88F11F0,//5字模
0xF88F99F0,//6字模
0xF1111110,//7字模
0xF99F99F0,//8字模
0xF99F11F0,//9字模
};//数字字模

unsigned int idata Box_Ram[19];//定义游戏点阵缓存10*16
unsigned char box_down_reg;//定义方块下落累加寄存器
unsigned char time0_reg;//定义定时器0累加寄存器
unsigned char next_mode;//定义下一个方块的类型
unsigned char next_shape;//定义下一个方块的形状
bit game_over_flag;//游戏结束标志位置0表示游戏未结束
bit pause_game_flag;//游戏暂停标志位置0表示游戏未暂停


struct
{
	unsigned char mode;//类型
	unsigned char shape;//形状
	unsigned char x;//x坐标
	unsigned char y;//y坐标
	unsigned int box;//定义方块缓存
}s_box;	//定义方块结构体

//声明函数
void box_build();//方块生成函数
unsigned int box_read_data(unsigned char tpmode,unsigned char tpshape);//方块缓存数据函数(输入方块类型和形状即可获得方块缓存数据)
void box_load();//方块载入函数
void box_to_Box_Ram(unsigned char tpx,unsigned char tpy,unsigned int tpbox);//方块映射游戏点阵缓存函数(参数是原来方块的位置、缓存,先消去原有位置的方块)
void Box_Ram_to_Ram();//游戏点阵缓存映射显示点阵缓存函数
void game_execute();//游戏执行函数(控制方块下落,检测是否到底,如果到底调用消行函数)
void time0_initialize();//定时器0初始化函数
bit check_cover(unsigned char tpx,unsigned char tpy,unsigned int tpbox);//检查覆盖函数(检查此时带入的参数所确定的方块是否会覆盖原有图形,不会覆盖返回1,覆盖返回0)
void destroy_row();//消行函数
void next_box();//显示下一个方块函数
void Tetris_main();//俄罗斯方块游戏主函数
void game_over_show();//游戏结束画面显示函数
void game_initialize();//游戏初始化函数
void game_start_show();//游戏开始显示画面
bit check_game_over();//检查游戏结束函数(游戏结束返回1,游戏没有结束返回0)
void check_pause_game();//检测暂停游戏函数


/*Tetris.h中定义*/

/*button_drive.h中定义*/
#define button_delay 600  //按键延时

sbit button_a = P0^7;
sbit up = P3^4;
sbit down = P3^5;
sbit left = P3^6;
sbit right = P3^7;
									 
unsigned int up_reg=button_delay;       //按键up累加器
unsigned int down_reg=button_delay;     //按键down累加器
unsigned int left_reg=button_delay;     //按键left累加器
unsigned int right_reg=button_delay;    //按键right累加器
unsigned int button_a_reg=button_delay; //按键button_a累加器

//声明函数
void game_button();//游戏中按键识别程序(有优先级,从高到低依次是button_a_reg>down>left>right)
unsigned char basic_button();//基本按键程序(返回0表示没按键被按下,返回1表示down被按下,返回2表示up被按下,返回3表示button_a被按下,返回4表示left被按下,返回5表示right被按下)
/*button_drive.h中定义*/

⌨️ 快捷键说明

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