2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > c语言贪吃蛇显示边框 c语言写的贪吃蛇程序 VC++6.0 控制台字符显示

c语言贪吃蛇显示边框 c语言写的贪吃蛇程序 VC++6.0 控制台字符显示

时间:2023-03-01 23:32:53

相关推荐

c语言贪吃蛇显示边框 c语言写的贪吃蛇程序 VC++6.0 控制台字符显示

该楼层疑似违规已被系统折叠隐藏此楼查看此楼

#include

#include

#include

#include

#define GZ 30

struct SnakePoint{

COORD pos;

int mx,my;

struct SnakePoint *Next;

} *SnakeHeader,*SnakeTail,*SnakeTmp;

COORD pos;

COORD FoodPos;

COORD Origin={{0},{0}};

void gotoxy(COORD pos)

{

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);

}

void init()

{

srand(time(0));

SnakeHeader = (SnakePoint *)malloc(sizeof(SnakePoint));

SnakeTail = SnakeHeader;

SnakeTail->Next = SnakeHeader;

SnakeHeader->pos.X=GZ/2;

SnakeHeader->pos.Y=GZ/2;

SnakeHeader->mx = 1;

SnakeHeader->my = 0;

gotoxy(SnakeHeader->pos);

printf("*");

gotoxy(Origin);

}

void GenrateFood()

{

FoodPos.X = rand()%GZ;

FoodPos.Y = rand()%GZ;

gotoxy(FoodPos);

printf("*");

gotoxy(Origin);

}

bool isEaten()

{

if(SnakeHeader->pos.X == FoodPos.X && SnakeHeader->pos.Y == FoodPos.Y)

return true;

else

return false;

}

void MoveSnake()

{

int mx,my;

COORD pos;

mx = SnakeHeader->mx;

my = SnakeHeader->my;

pos.X = SnakeHeader->pos.X+SnakeHeader->mx;

pos.Y = SnakeHeader->pos.Y+SnakeHeader->my;

gotoxy(pos);

printf("*");

gotoxy(Origin);

SnakeTmp = SnakeHeader;

SnakeHeader = (SnakePoint *)malloc(sizeof(SnakePoint));

SnakeTmp->Next = SnakeHeader;

SnakeHeader->pos = pos;

SnakeHeader->mx = mx;

SnakeHeader->my = my;

if(!isEaten())

{

pos = SnakeTail->pos;

gotoxy(pos);

printf(" ");

SnakeTmp = SnakeTail;

SnakeTail = SnakeTail->Next;

free(SnakeTmp);

}

else

{

GenrateFood();

}

}

void main()

{

int c;

init();

GenrateFood();

while(1)

{

if(kbhit())

{

c=getch();

switch(c)

{

case'w':

if(SnakeHeader->my!=1)

{

SnakeHeader->my=-1;

SnakeHeader->mx=0;

}

break;

case's':

if(SnakeHeader->my!=-1)

{

SnakeHeader->my=1;

SnakeHeader->mx=0;

}

break;

case'a':

if(SnakeHeader->mx!=1)

{

SnakeHeader->mx=-1;

SnakeHeader->my=0;

}

break;

case'd':

if(SnakeHeader->mx!=-1)

{

SnakeHeader->mx=1;

SnakeHeader->my=0;

}

break;

default:break;

}

}

MoveSnake();

Sleep(200);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。