📄 gameprocess.lst
字号:
C51 COMPILER V8.05a GAMEPROCESS 09/08/2007 12:48:54 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE GAMEPROCESS
OBJECT MODULE PLACED IN GameProcess.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\GameProcess.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\G
-ameProcess.lst) OBJECT(GameProcess.obj)
line level source
1 //*************************************************************************************************
2 //* *
3 //* ******************************游戏动作处理程序************************** *
4 //* *
5 //*************************************************************************************************
6
7 //*************************************************************************************************
8 //* *
9 //* ******************************头文件及宏定义************************** *
10 //* *
11 //*************************************************************************************************
12 #include "at89x51.h"
13 #include "LCDShowMap.h"
14 #include "LCD12864.h"
15 #include "GameGraph.h"
16 #include "MoveDecide.h"
17 #include "MoveBlock.h"
18 #include "BlockCreate.h"
19 #include "GetMark.h"
20
21
22 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<方块动作>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
23 #define ACTIONROTATE 0
24 #define ACTIONRIGHT 1
25 #define ACTIONDOWN 2
26 #define ACTIONLEFT 3
27
28 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<方块类型>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
29 #define TYPEONE 0
30 #define TYPETWO 1
31 #define TYPETHREE 2
32 #define TYPEFOUR 3
33 #define TYPEFIVE 4
34 #define TYPESIX 5
35 #define TYPESEVEN 6
36
37 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<方块状态>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
38 #define STATEONE 0
39 #define STATETWO 1
40 #define STATETHREE 2
41 #define STATEFOUR 3
42
43 //*************************************************************************************************
44 //* *
45 //* ********************************全局变量******************************* *
46 //* *
47 //*************************************************************************************************
48 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定义当前方块属性变量>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
49 unsigned char uc_BlockType=TYPEFOUR;
50 unsigned char uc_BlockState=STATETHREE;
51 unsigned char uc_BlockRow=0;
52 unsigned char uc_BlockLine=4;
53
54 extern bit b_DownStart; //开启定时器定时下降标志位。
C51 COMPILER V8.05a GAMEPROCESS 09/08/2007 12:48:54 PAGE 2
55
56 unsigned int ui_GameMark=0; //当前游戏分数。
57
58
59 //*************************************************************************************************
60 //* *
61 //* **********************************创建新方块****************************** *
62 //* *
63 //*************************************************************************************************
64 void vNewBlock()
65 {
66 1 if(uc_BlockType==TYPESEVEN) //变换方块类型。
67 1 uc_BlockType=TYPEONE;
68 1 else
69 1 uc_BlockType++;
70 1
71 1 if(uc_BlockState==STATEFOUR) //变换方块状态。
72 1 uc_BlockState=STATEONE;
73 1 else
74 1 uc_BlockState++;
75 1
76 1 switch(uc_BlockState) //防止状态变量超出特定类型方块类型的取值范围。
77 1 {
78 2 case TYPEONE:uc_BlockState%=2;break;
79 2 case TYPETWO:uc_BlockState=0;break;
80 2 case TYPETHREE:uc_BlockState%=4;break;
81 2 case TYPEFOUR:uc_BlockState%=4;break;
82 2 case TYPEFIVE:uc_BlockState%=4;break;
83 2 case TYPESIX:uc_BlockState%=2;break;
84 2 case TYPESEVEN:uc_BlockState%=2;break;
85 2 default:break;
86 2 }
87 1
88 1 uc_BlockRow=0; //初始化方块位置
89 1 uc_BlockLine=4;
90 1 vBlockCreate(); //新建方块。
91 1 }
92
93
94 //*************************************************************************************************
95 //* *
96 //* ********************************游戏初始化******************************* *
97 //* *
98 //*************************************************************************************************
99 void vGameInitialize()
100 {
101 1 unsigned char ucCountOne,ucCountTwo;
102 1
103 1 vShowOneChin(1,2,uca_FEN); //显示“分数”。
104 1 vShowOneChin(1,18,uca_SHU);
105 1
106 1 vShowFrame(); //显示边框。
107 1
108 1 for(ucCountOne=0;ucCountOne<21;ucCountOne++) //清空游戏区域。
109 1 for(ucCountTwo=0;ucCountTwo<12;ucCountTwo++)
110 1 vCleanBlock(ucCountOne,ucCountTwo);
111 1
112 1 ui_GameMark=0; //清空游戏分数。
113 1 vShowNumber(4,0,0); //显示初始分数。
114 1 vNewBlock(); //新建方块。
115 1 b_DownStart=1; //开启定时器定时下降。
116 1 }
C51 COMPILER V8.05a GAMEPROCESS 09/08/2007 12:48:54 PAGE 3
117 //*************************************************************************************************
118 //* *
119 //* ******************************判断游戏是否结束************************** *
120 //* *
121 //*************************************************************************************************
122 unsigned char ucIsGameOver()
123 {
124 1 unsigned char ucCount,ucCountTwo;
125 1
126 1 for(ucCount=0;ucCount<12;ucCount++)
127 1 if(ucReadBlock(0,ucCount)==1)
128 1 {
129 2 if(uc_BlockType==TYPETHREE&&(uc_BlockState==STATETWO||uc_BlockState==STATEFOUR))
130 2 {
131 3 for(ucCountTwo=3;ucCountTwo<8;ucCountTwo++)
132 3 if(ucReadBlock(2,ucCountTwo)==1)
133 3 return 1;
134 3
135 3 }
136 2 else
137 2 {
138 3 for(ucCountTwo=3;ucCountTwo<8;ucCountTwo++)
139 3 if(ucReadBlock(1,ucCountTwo)==1)
140 3 return 1;
141 3 }
142 2 }
143 1 return 0;
144 1 }
145
146
147 //*************************************************************************************************
148 //* *
149 //* ******************************游戏结束处理函数************************** *
150 //* *
151 //*************************************************************************************************
152 void vGameOver()
153 {
154 1 b_DownStart=0;
155 1 vGameInitialize();
156 1 }
157
158 //*************************************************************************************************
159 //* *
160 //* ******************************游戏动作处理函数**************************** *
161 //* *
162 //*************************************************************************************************
163 void vBlockAction(unsigned char ucAction)
164 {
165 1 unsigned char ucCount;
166 1
167 1 if(ucMoveDecide(ucAction)) //判断方块是否可以移动。
168 1 {
169 2 vMoveBlock(ucAction); //如果可以,则移动方块。
170 2 if(uc_BlockLine<3) //此处是为了弥补移动方块时可能产生的错误。
171 2 for(ucCount=1;ucCount<7;ucCount++)
172 2 {
173 3 CS1=1;
174 3 CS2=0;
175 3 vWriteCMD(LCDPAGE+ucCount);
176 3 vWriteCMD(LCDLINE+FRAMELEFT);
177 3 vWriteData(0xFF);
178 3 vWriteData(0xFF);
C51 COMPILER V8.05a GAMEPROCESS 09/08/2007 12:48:54 PAGE 4
179 3 }
180 2 }
181 1 else
182 1 if(ucAction==ACTIONDOWN)
183 1 {
184 2 if(ucIsGameOver())
185 2 vGameOver();
186 2 else
187 2 {
188 3 vGetMark();
189 3 vNewBlock();
190 3 }
191 2 }
192 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 354 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 6
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -