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

📄 pic_game.h

📁 单片机控制实现几个小游戏:贪吃蛇、俄罗斯方块、推箱子
💻 H
字号:
#ifndef __PIC_GAME_h__
#define __PIC_GAME_h__
#include <PIC.h>
#include "defin_data.h"
//乘方替代
ROM_DTAT uint16_t mux_int[]={
0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,
0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000};

void delay(uint8_t MS);	//短延时程序
void delay_long(uint16_t MS);//长短延时程序
void delay_long_int(uint16_t MS);//超长延时程序
//显示器配置
#define NULL 0//无效变量
#define DISPLAY_TIME_L	0x00 //显示刷新频率
#define DISPLAY_TIME_H	0xF0
#define FLASH_NO_TIME 1	//一直闪烁
#define FLASH_YES_TIME 2//闪烁一定时间
#define NO_FLASH 0		//不闪烁
#define FLASH_WIDTH 127	//闪烁占空比
bank1 uint8_t flash_status;		//闪烁状态控制 闪烁,关闭,定时闪烁

bank3 uint16_t displaybuffer[32];//显示缓冲区
bank3 uint16_t * displaybuffer_16mux16=&displaybuffer[0];//显示缓冲区指针

bank1 uint16_t flash_displaybuffer[16];//闪烁缓冲区

bank2 uint16_t BG_display_16mux16[16];//背景显示缓冲区
bank2 uint16_t ROLE_display_16mux16[16];//角色显示缓冲区

bank1 uint8_t buffer_y=0;			//纵坐标

bank1 uint8_t flash_ctrl;			//闪烁控制变量
bank1 uint8_t flash_fre_ctrl=64;	//速度等级1/2/4/8/16/32/64/128
bank1 uint16_t flash_time;		//闪烁时间变量 时间约为 flash_time/48秒

#define DISPLAY_CMD_OVER 255		//显示游戏结束
#define DISPLAY_CMD_FLASH_TIME 254	//带时间闪烁
#define DISPLAY_CMD_FLASH 253		//不带时间闪烁
#define DISPLAY_CMD_FLASH_CLR 252	//清除闪烁信息
#define DISPLAY_CMD_FLASH_CLOSE 251	//关闭闪烁
#define DISPLAY_CMD_WIN 250			//游戏胜利
#define DISPLAY_CMD_CLR 249//清屏指令
#define DISPLAY_CMD_BG_CLR 248  //清屏背景指令
#define DISPLAY_CMD_ROLE_CLR 247  //清屏角色层指令

void display_cmd(uint8_t cmd,uint16_t d_data);//显示命令输入
//游戏结束显示YOU_OVER
ROM_DTAT int16_t game_over[]={
0x0000,0x0000,0x0000,0x0000,0x5722,0x3155,0x7755,0x5155,
0x7752,0x0000,0x0000,0x3184,0x4a44,0x4a44,0x4a4a,0x4991};
//游戏胜利显示YOU_WIN
ROM_DTAT int16_t game_win[]={
0x0000,0x0000,0x0000,0x0000,0x651c,0x552a,0x552a,0x552a,
0x4d49,0x0000,0x0000,0x3184,0x4a44,0x4a44,0x4a4a,0x4991};
//背景显示缓冲区初始化为游戏开始,显示哆啦A梦铃铛
ROM_DTAT int16_t game_dora[]={
0x07c0,0x1e70,0x331c,0x6186,0x41c3,0xc1c1,0xc083,0x800f,
0xc019,0xf833,0x4fe2,0x6306,0x300c,0x1c18,0x07f0,0x01c0};
#define CODE_A 0x77
#define CODE_B 0x7c

bank1 uint8_t LED_cur;//当前7段LED位

//#define display_LED_total_NO() 
//游戏配置
#define MODEL_OVER 1
#define MODEL_WIN 0
#define A_model 1
#define B_model 0
bank1 uint8_t game_model;		//游戏模式

#define GANE_BEGIN 0
#define GANE_STOP  1
int1_t stop_game=GANE_BEGIN;	//全局停止变量

bank1 uint16_t currspeed;		//游戏速度
bank1 uint16_t addspeed;		//速度键控制
bank1 uint16_t total_NO=0;		//游戏分数

//键盘配置

#define UP 0b01111100
#define DOWN 0b01111010
#define LEFT 0b01110110
#define RIGHT 0b01101110
#define OK 0b01011110
#define STOP 0b00111110
bank1 uint8_t keywords;	//当前键值,线选取键值0111 1110
#define SHORT_PUSH 3500	//键盘连击速度 (延时时间-SHORT_LONG)/15
//keywords_delay=LONG_PUSH;

//游戏配置
#define DEFAULTS 0		//默认的游戏状态
#define SNAKE 1
#define BRICK 2
#define HIT_BRICK 3
#define LOSTWAY 4
bank1 uint8_t Current_game=DEFAULTS;//当前游戏状态0为等待游戏选择
bank1 uint8_t select_game=DEFAULTS;//当前游戏状态0,游戏选择变量

void defaults(void);
void snake(void);
void brick(void);
void hit_brick(void);
void lostway(void);
void defaults_key(void);

void key_hit(void);//打砖块键盘处理
void key_snake(void); //贪食蛇键盘注册
void key_brick(void); //键盘处理
void lostway_key(void);		//迷宫键盘处理
typedef struct //游戏流程结构体
   {
		void (* my_game)(void);//流程程序
		ROM_DTAT int16_t * my_game_wait;
		//注册键盘竟然,与中断冲突,古怪的编译器
   } MY_GAME;
//游戏配置


#include "C51_2_ANSI.H"
#include "CLASS_MAP.H"
#include "snake.h"
#include "hit_brick.h"
#include "brick.h"
#include "lostway.h"
ROM_DTAT MY_GAME game[5]={
defaults,game_dora,snake,game_snake,brick,game_brick,hit_brick,game_brick_hit,lostway,game_lostway};

#define SPEED_0 16 
ROM_DTAT int16_t display_speed_0[SPEED_0]={
1500,1400,1300,1200,1000,1100,1200,1300,
1400,1500,1600,1800,2000,2500,5000,7000,
};
#define SPEED_1 2
ROM_DTAT int16_t display_speed_1[SPEED_1]={
7000,9000//,11000
};
#define SPEED_2 3
ROM_DTAT int16_t display_speed_2[SPEED_2]={
7000,5000,4000//,3000
};
#define SPEED_3 1
#define display_speed_3 4000//,5000

void display_moving_down(const int16_t *cur);
void display_moving_up(const int16_t *cur);

#endif

⌨️ 快捷键说明

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