📄 snake.lst
字号:
C51 COMPILER V7.06 SNAKE 07/12/2010 23:49:26 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE SNAKE
OBJECT MODULE PLACED IN SNAKE.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE SNAKE.c BROWSE DEBUG OBJECTEXTEND PRINT(.\obj\SNAKE.lst)
stmt level source
1 /***********************************************************************************
2 /* 文件名称: SNAKE.c
3 /* 功 能: 贪吃蛇游戏代码
4 /* 署 名: 张先永(原作者)
5 /* 时 间: 2009年10月11日
6 /* 备 注:
7 /* 游戏按键由于需要快速的响应,所有按键通过线与扩展为中断按键
8 /* LCD 液晶显示器在PO口 需要上拉电阻
9 /***********************************************************************************/
10
11 #include <reg52.H>
12 #include <KEY_SWEEP.H>
13 #include"9325tp.h"
14 #include "SNAKE.h"
15
16
17 #define uchar unsigned char
18 //=================================================================
19 // 使用结构体定义变量 使程序的名称更加的清楚
20 //=================================================================
21 struct
22 {
23 uchar X;
24 uchar Y;
25 uchar Yes;
26 }Food; //食物结构体
27
28 #define SNAKE_Max_Long 20 //最大长度
29 struct
30 {
31 uchar X[SNAKE_Max_Long];
32 uchar Y[SNAKE_Max_Long];
33 uchar Long;
34 uchar Life;
35 uchar Score; //蛇的分数
36 uchar Level; //蛇的等级
37 }Snake; //蛇结构体
38
39 uchar Key_V_temp=0; //取出上次按键值
40
41 //=================================================================
42 //函数功能:1ms延时函数
43 //晶 振:11.0592 M
44 //入口参数:n
45 //出口参数:无
46 //=================================================================
47 void Delay_1mS(unsigned int n)
48 {
49 1 unsigned int i;
50 1 unsigned char j;
51 1
52 1 for(i=0;i<n;i++)
53 1 for(j=0;j<120;j++) ;
54 1 }
55
C51 COMPILER V7.06 SNAKE 07/12/2010 23:49:26 PAGE 2
56 //=================================================================
57 //函数名称:void Init_time0 (void)
58 //函数功能:初始化定时器1 用于产生随机数种子 ,用于放置实物
59 //入口参数:无
60 //出口参数:无
61 //=================================================================
62 void Init_time0 (void)
63 {
64 1 EA=1;
65 1 ET1=1;
66 1 TMOD|=0x10;
67 1 TH1=0X00;
68 1 TL1=0X00;
69 1 TR1=1;
70 1 }
71 void time1 (void) interrupt 3
72 {
73 1 TH1=0X00;
74 1 TL1=0X00;
75 1 }
76
77
78 //=================================================================
79 //函数名称:Trun_On_Point Trun_Off_Point (uchar x,uchar y)
80 //函数功能:点亮或者熄灭 一个点。用于显示蛇身体
81 //入口参数:无
82 //出口参数:无
83 //特别说明:此 Trun_On,函数换成其他的就可以兼容其他的液晶
84 // 入8*8 点阵 12864 等
85 //=================================================================
86 void Trun_On_Point (uchar x,uchar y,uchar color)
87 {
88 1 Bar((4*(x+2)),(4*(y+2)),(4*(x+3)),(4*(y+3)),color);
89 1 }
90
91 void Trun_Off_Point (uchar x,uchar y)
92 {
93 1 Bar((4*(x+2)),(4*(y+2)),(4*(x+3)),(4*(y+3)),0xBE5F);
94 1 }
95
96 //=================================================================
97 //函数名称:void Init_SNAKE(void)
98 //函数功能:绘制游戏界面,初始化游戏等级等参数
99 //入口参数:无
100 //出口参数:无
101 //=================================================================
102 void Init_SNAKE(void)
103 {
104 1 uchar i;
105 1
106 1 Init_time0();
107 1 //***********绘制游戏界面********************//
108 1 CLR_Screen(0xBE5F);
109 1 Rectangle(8,8-1,85,120,0xaa);//绘制一个矩形框, 0-127
110 1 LCD_PutString(88,8,"Score",0x00ff,0xBE5F);
111 1 LCDShow_uCharNumber(96,24,Snake.Score,0x00ff,0xBE5F);
112 1 LCD_PutString(88,81,"LEVEL",0x00ff,0xBE5F);
113 1 LCDShow_uCharNumber(96,97,Snake.Level,0x00ff,0xBE5F);
114 1
115 1 //***********初始化蛇参数********************//
116 1 Snake.Long=2; //定义初始化蛇的长度
117 1 Snake.Life=0; //初始化蛇还活着
C51 COMPILER V7.06 SNAKE 07/12/2010 23:49:26 PAGE 3
118 1 Snake.Score=0;
119 1 Food.Yes=1;
120 1 Key_Value=0;
121 1 Key_V_temp=0;
122 1
123 1 for(i=0;i<Snake.Long;i++) //将蛇给赋值
124 1 {
125 2 Snake.X[i]=i+2;
126 2 Snake.Y[i]=2;
127 2 }
128 1 for(i=0;i<Snake.Long;i++) //将蛇给画出来
129 1 {
130 2 Trun_On_Point(Snake.X[i],Snake.Y[i],0xaa);
131 2 }
132 1 }
133 //=================================================================
134 //函数名称:void Display_dead(uchar i)
135 //函数功能:显示死亡界面
136 //入口参数:无
137 //出口参数:无
138 //=================================================================
139 void Display_dead(void)
140 {
141 1
142 1 LCD_PutString(10,40,"GAME OVER",0x00ff,0xBE5F);
143 1 while(Key_Value!=Key_Enter)
144 1 {
145 2 Key();
146 2 }
147 1 Init_SNAKE();
148 1 }
149
150 //=================================================================
151 //函数名称:void Display_Pass(uchar i)
152 //函数功能:显示过关界面
153 //入口参数:无
154 //出口参数:无
155 //=================================================================
156 void Display_Pass(void)
157 {
158 1 Snake.Level++;
159 1 LCD_PutString(18,40,"You are",0xcc88,0xBE5F);
160 1 LCD_PutString(34,56,"WIN!",0xcc88,0xBE5F);
161 1 while(Key_Value!=Key_Enter)
162 1 {
163 2 Key();
164 2 }
165 1 Init_SNAKE();
166 1 }
167 //=================================================================
168 //函数名称:void Run_SNAKE(void)
169 //函数功能:蛇运动函数 (游戏精华)
170 //入口参数:无
171 //出口参数:无
172 //=================================================================
173 void Run_SNAKE(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -