模拟贪吃蛇:笑脸移动的边界问题
程序实现功能:
使用键盘上的上下左右四个键控制笑脸的移动,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;
}