#include<conio.h>#include<graphics.h>#include<time.h>#include<string.h>#include<malloc.h>#include<stdio.h>int grade=5,point=0,life=3void set(),menu(),move_head(),move_body(),move(),init_insect(),left(),upon(),right(),down(),init_graph(),food_f(),ahead(),crate()struct bug { int xint ystruct bug *laststruct bug *next}struct fd { int xint yint judge}food={0,0,0}struct bug *head_f=NULL,*head_l,*p1=NULL,*p2=NULLvoid main() { char chinitgraph(800,600)set()init_insect()while(1) { food_f()Sleep(grade*10)setcolor(BLACK)circle(head_l->x,head_l->y,2)setcolor(WHITE)move_body()if(kbhit()) { ch=getch()if(ch==27) { ahead()set()} else if(ch==-32) { switch(getch()) { case 72:upon()breakcase 80:down()breakcase 75:left()breakcase 77:right()break} } else ahead()} else { ahead()} if(head_f->x==food.x&&head_f->y==food.y) { Sleep(100)crate()food.judge=0point=point+(6-grade)*10if(food.x<30||food.y<30||food.x>570||food.y>570) life++menu()} if(head_f->x<5||head_f->x>595||head_f->y<5||head_f->y>595) { Sleep(1000)life--food.judge=0init_graph()init_insect()menu()} for(p1=head_f->nextp1!=NULLp1=p1->next) { if(head_f->x==p1->x&&head_f->y==p1->y) { Sleep(1000)life--food.judge=0init_graph()init_insect()menu()break} } if(life==0) { outtextxy(280,300,"游戏结束!")getch()return} move()}} void init_graph() { clearviewport()setlinestyle(PS_SOLID,1,5)rectangle(2,2,600,598)setlinestyle(PS_SOLID,1,1)} void set() { init_graph()outtextxy(640,50,"1、开始 / 返回")outtextxy(640,70,"2、退出")outtextxy(640,90,"3、
难度")outtextxy(640,110,"4、重新开始")switch(getch()) { case '1': menu()setcolor(GREEN)circle(food.x,food.y,2)setcolor(WHITE)returncase '2': exit(0)breakcase '3': outtextxy(700,90,":1 2 3 4 5")grade=getch()-48set()breakcase '4': food.judge=0,grade=5point=0life=3init_insect()menu()breakdefault: outtextxy(250,300,"输入错误!")set()break} } void menu() { char str[20],str1[]={"分数:"},str2[]={"难度:"},str3[]={"生命值:"}init_graph()sprintf(str,"%d",point)strcat(str1,str)outtextxy(640,50,str1)sprintf(str,"%d",grade)strcat(str2,str)outtextxy(640,70,str2)sprintf(str,"%d",life)strcat(str3,str)outtextxy(640,90,str3)outtextxy(640,110,"设置:ESC")} void init_insect() { head_f=(struct bug *)malloc(sizeof(struct bug))head_f->last=NULLhead_f->x=300head_f->y=300p2=head_f->next=p1=(struct bug *)malloc(sizeof(struct bug))p1->last=head_fp1->x=295p1->y=300p1=p1->next=(struct bug *)malloc(sizeof(struct bug))p1->next=NULLp1->x=290p1->y=300p1->last=p2head_l=p1} void move() { for(p1=head_fp1!=NULLp1=p1->next) { circle(p1->x,p1->y,2)} } void move_head() { } void move_body() { for(p1=head_l,p2=p1->lastp2!=NULLp1=p2,p2=p2->last) { p1->x=p2->xp1->y=p2->y} } void ahead() { p1=head_fp2=p1->nextp2=p2->nextif(p1->x==p2->x) { if(p1->y>p2->y) head_f->y+=5else head_f->y-=5} else { if(p1->x>p2->x) { head_f->x+=5} else head_f->x-=5} } void upon() { p1=head_f->nextp1=p1->nexthead_f->y-=5if(p1->x==head_f->x&&p1->y==head_f->y) { head_f->y+=5ahead()} } void down() { p1=head_f->nextp1=p1->nexthead_f->y+=5if(p1->x==head_f->x&&p1->y==head_f->y) { head_f->y-=5ahead()} } void left() { p1=head_f->nextp1=p1->nexthead_f->x-=5if(p1->x==head_f->x&&p1->y==head_f->y) { head_f->x+=5ahead()} } void right() { p1=head_f->nextp1=p1->nexthead_f->x+=5if(p1->x==head_f->x&&p1->y==head_f->y) { head_f->x-=5ahead()} } void food_f() { if(!food.judge) { food.x=(rand()%117+1)*5food.y=(rand()%117+1)*5food.judge=1if(food.x<30||food.y<30||food.x>570||food.y>570) { setcolor(RED)circle(f回答:Mr.emily
大师
6月3日 16:45 #define N 200
#include<graphics.h>
#include<stdlib.h>
#include<dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define Esc 0x011b
int i,key
int score=0
int gamespeed=50000
struct Food
{int x
int y
int yes
}food
struct Snake
{int x[N]
int y[N]
int node
int direction
int life
}snake
void Init()
void Close()
void DrawK()
void GamePlay()
void GameOver()
void PrScore()
void main()
{ Init()
DrawK()
GamePlay()
Close()
}
void Init()
{int gd=DETECT,gm
initgraph(&gd,&gm,"F:\\tuoboc2")/*此处为turboc的路径,读者可以根据自己的电脑而改*/
cleardevice()
}
void DrawK()
{setbkcolor(LIGHTGREEN)
setcolor(11)
setlinestyle(SOLID_LINE,0,THICK_WIDTH)
for(i=50i<=600i+=10)
{rectangle(i,40,i+10,49)
rectangle(i,451,i+10,460)
}
for(i=40i<=450i+=10)
{rectangle(50,i,59,i+10)
rectangle(601,i,610,i+10)
}
}
void GamePlay()
{randomize()
food.yes=1
snake.life=0
snake.direction=1
snake.x[0]=100snake.y[0]=100
snake.x[1]=110snake.y[1]=100
snake.node=2
PrScore()
while(1)
{while(!kbhit())
{ if(food.yes==1)
{food.x=rand()%400+60
food.y=rand()%350+60
while(food.x%10!=0)
food.x++
while(food.y%10!=0)
food.y++
food.yes=0
}
if(food.yes==0)
{setcolor(GREEN)
rectangle(food.x,food.y,food.x+10,food.y-10)
}
for(i=snake.node-1i>0i--)
{snake.x[i]=snake.x[i-1]
snake.y[i]=snake.y[i-1]
}
switch(snake.direction)
{case 1:
snake.x[0]+=10break
case 2:
snake.x[0]-=10break
case 3:
snake.y[0]-=10break
case 4:
snake.y[0]+=10break
}
for(i=3i<snake.nodei++)
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{ GameOver()
snake.life=1
break
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)
{GameOver()
snake.life=1
}
if(snake.life==1)
break
if(snake.x[0]==food.x&&snake.y[0]==food.y)
{setcolor(0)
rectangle(food.x,food.y,food.x+10,food.y-10)
snake.x[snake.node]=-20
snake.y[snake.node]=-20
snake.node++
food.yes=1
score+=10
PrScore()
}
setcolor(4)
for(i=0i<snake.nodei++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10)
delay(gamespeed)
setcolor(0)
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10)
}
if(snake.life==1)
break
key=bioskey(0)
if(key==Esc)
break
else if(key==UP&&snake.direction!=4)
snake.direction=3
else if(key==RIGHT&&snake.direction!=2)
snake.direction=1
else if(key==LEFT&&snake.direction!=1)
snake.direction=2
else if(key==DOWN&&snake.direction!=3)
snake.direction=4
}
}
void GameOver()
{
cleardevice()
PrScore()
setcolor(RED)
settextstyle(3,0,4)
outtextxy(100,100,"Mengmeng,i love you!")
getch()
}
void PrScore()
{char str[10]
setfillstyle(SOLID_FILL,YELLOW)
bar(50,15,220,35)
setcolor(6)
settextstyle(0,0,2)
sprintf(str,"score:%d",score)
outtextxy(55,20,str)
}
void Close()
{ getch()
closegraph()
}
Mr.emily