模拟贪吃蛇:笑脸移动的边界问题

ogiso_pest 2008-07-08 03:23:39
程序实现功能:
使用键盘上的上下左右四个键控制笑脸的移动,ESC键控制游戏退出,一次移动一步,移动之后,
将原来的笑脸擦除,在移动后的地方上重新置入笑脸,但是当笑脸移动到四周的边框的时候,方向键不管用了!请问怎么解决这个个问题啊??谢谢了~~

#include <stdio.h>

#include <conio.h>
#include <bios.h>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define UP 0x4800

#define DOWN 0x5000

#define Esc 0x011b

void displayFace(int x, int y){

gotoxy(x, y);

printf("%c", 2);

return;

}

void erasureFace(int x, int y){

gotoxy(x, y);

printf(" ");

return;

}

int isAllow(x, y){

if((x > 80) || (x < 1) || (y > 25) || (y < 1)){

return 0;

}
else
{

return 1;

}

}


int main(){

int x, y;

int oldX, oldY;

int key;

x = y = 10;

clrscr();

displayFace(x, y);

oldX = x;

oldY = y;

while(1){

key = bioskey(0);

if(key == Esc){

break;

}

switch(key){

case LEFT: x--; break;

case RIGHT: x++; break;

case UP: y--; break;

case DOWN: y++; break;

default: break;

}

erasureFace(oldX, oldY);

displayFace(x, y);

oldX = x;

oldY = y;

}
if(isAllow(x, y))
{

erasureFace(oldX, oldY);

displayFace(x, y);

oldX = x;

oldY = y;

}
else{

x = oldX;

y = oldY;

}





return 0;

}

...全文
94 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ogiso_pest 2008-07-08
  • 打赏
  • 举报
回复
好了
问题解决了 但是就在移动到右下角后 不对劲
麻烦你了啊
hai040 2008-07-08
  • 打赏
  • 举报
回复
switch(key){
...
}
/*用if代替这段
erasureFace(oldX, oldY);
displayFace(x, y);
oldX = x;
oldY = y;*/
if(isAllow(x, y))
{
...
}
else
{
...
}
}
  • 打赏
  • 举报
回复
sf???? o(∩_∩)o...看看

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧