📄 tetris_define.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 + -