更新
游戏在判断结束后,如果没有结束,那么更新屏幕上的“贪吃蛇”的状态。
四个模块的核心代码如下:
// 运行游戏的具体实现
void gamePlay(void)
{
bit hero = FALSE; // 完成游戏
while(1) {
EA = 1;
if (ESC == FALSE) {
gameSpeed = 20;
level = 1;
s1[0] = ‘1’;
start();
}
while(ESC == FALSE) {
EA = 1;
move(); // 贪吃蛇向前移动
if(snake.x[0] == food.x && snake.y[0] == food.y) { // 判断蛇头吃到食物以后
RectArea(food.x, food.y, food.x + 2, food.y + 2, ERASE); // 把画面上的食物去掉
snake.node++; // 蛇的身体长一节
if (increaseLevel()) { // 根据难度变化判断是否要重新开始
restart();
continue;
}
while (!createNewFood()) { // 如果创建失败则继续创建,直到成功
;
}
RectArea(food.x, food.y, food.x + 2, food.y + 2, REWRITTEN); // 在画面上显示食物
}
if (isOver()) { // 判断游戏是否结束
if(snake.node == 39)
hero = TRUE;
}
ESC = TRUE;
hero = gameOver(hero);
break;
}
// 打印贪吃蛇
updataSnakeHead(); // 更新头部
delay(gameSpeed); // 速度设置
eraseSnakeTail(); // 删除尾巴
} // 退出循环(!ESC)
}
}
其余的函数代码编写如下:
// 随机数产生
int rand(void)
{
int i;
i = ((TH0 《《 8) “ TL0) & 0x7fff;
return(i);
}
// 延时
void delay(uchar ms) // 10毫秒
{
uchar i, j, k;
while(ms--) {
for(i = 5; i 》 0; i--) {
for(j = 4; j 》 0; j--) {
for(k = 248; k 》 0; k--)
;
}
责任编辑;zl
关于控制,MCU就介绍完了,您有什么想法可以联系小编。