#include
#include
#include
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define UP 0x4800
#define DOWN 0x5000
#define ENTER 0x000d
#define ESC 0x0011b
struct
{
int x;
int y;
}body[300]; /* 蛇的坐标 */
struct
{
int x;
int y;
}heart[500]; /*食物的坐标*/
int k=0; /*蛇的长度*/
int n=0; /*该吃地几个食物*/
int score=0;
void prin();
void loadheart();
void gameover();
void load();
void find();
void eat();
void game ();
void pringame();
void main()
{
prin();
clrscr();
game();
getch();
}
void prin() /*打印提示*/
{ textmode(C80);
window(0,0,80,25);
textbackground(GREEN);
textcolor(BLUE);
clrscr();
gotoxy(30,9);
cprintf("Welcome to my game!");
gotoxy(30,10);
cprintf("Scores");
gotoxy(30,11);
cprintf("Are you ready" );
gotoxy(30,12);
cprintf("Press anykey to beagin!");
getch();
}
void game()
{ /*游戏过程*/
int i;
int key=0;
load(); /*初始化蛇的坐标*/
/*产生食物*/
loadheart();
randomize();
pringame(); /*打印环境*/
gotoxy(heart[n-1].x,heart[n-1].y); /*打印食物*/
putch(3);
for(i=0;i
{
gotoxy(body[i].x,body[i].y); /*打印蛇*/
putch(4);
}
do
{
while(!kbhit())
{
switch(key)
{
case ESC :
exit(1);break;
case LEFT:
for(i=0;i
{
body[i].x=body[i+1].x;
body[i].y=body[i+1].y;
}
body[k-1].x--;
break;
case RIGHT :
for(i=0;i
{
body[i].x=body[i+1].x;
body[i].y=body[i+1].y;
}
body[k-1].x++;
break;
case UP: for(i=0;i
{
body[i].x=body[i+1].x;
body[i].y=body[i+1].y;
}
body[k-1].y--;
break;
case DOWN : for(i=0;i
{
body[i].x=body[i+1].x;
body[i].y=body[i+1].y;
}
body[k-1].y++;
break;
case ENTER:
getch(); break;
}
find();
eat();
pringame();
delay(60000);
clrscr();
for(i=0;i
{
gotoxy(body[i].x,body[i].y);
putch(4);
}
gotoxy(heart[n-1].x,heart[n-1].y);
putch(3);
}
key=bioskey(0);
}while(1);
}
void load()
{
body[0].x=1;
body[0].y=3;
body[1].x=2;
body[1].y=3;
body[2].x=3;
body[2].y=3;
k=3;
}
void pringame()
{
int i;
gotoxy(35,1);
cputs("score:");
gotoxy(43,1);
cprintf("%d",score);
for(i=1;i<=80;i++)
{
gotoxy(i,2);
putch(23);
}
}
void find()
{ int i;
for(i=0;i
{
if(body[i].x==0||body[i].x==85||body[i].y==2||body[i].y==26)
gameover();
}
for(i=0;i
{
if(body[k-1].x==body[i].x&&body[k-1].y==body[i].y)
gameover();
}
}
void gameover() /* 游戏结束*/
{
int i;
window(0,0,80,25);
textbackground(GREEN);
textcolor(BLUE);
clrscr();
gotoxy(33,10);
cputs("Game Over");
gotoxy(35,12);
cputs("Score");
gotoxy(42,12);
cprintf("%d",score);
getch();
}
void eat() /*吃食物长大,得分,再加食物*/
{
if(body[k-1].x==heart[n-1].x&&body[k-1].y==heart[n-1].y)
{ score=score+5;
body[k].x=heart[n-1].x;
body[k].y=heart[n-1].y;
k++;
loadheart();
}
}
void loadheart() /*初始化食物*/
{
heart[n].x=(rand()%83)+2;
heart[n].y=(rand()%22)+3;
n++ ;
}
我加了注释:看哈啊,给点意见:
指导下啊。
/*************我就是程序;程序就是我!******************/