更新

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