更新

基于AT89C51单片机的贪吃蛇游戏代码设计

游戏在判断结束后,如果没有结束,那么更新屏幕上的“贪吃蛇”的状态。

四个模块的核心代码如下:

// 运行游戏的具体实现

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就介绍完了,您有什么想法可以联系小编。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查