當前位置:編程學習大全網 - 編程語言 - 跪求VC6.0下C語言版貪食蛇代碼

跪求VC6.0下C語言版貪食蛇代碼

我找了壹個發給妳吧。

#include<stdio.h>

#include<conio.h>

#include<stdlib.h>

#include<bios.h>

#define KEY_UP 0x48

#define KEY_LEFT 0x4B

#define KEY_RIGHT 0x4D

#define KEY_DOWN 0x50

#define ESC 0x011b

const int gamespeed=90000 ;/*遊戲速度自己調整*/

struct point

{

int x ;

int y ;

}

p[100];

struct point fd;

void p_frame() /*邊界*/

{

int i ;

printf("\n\t\t");

for(i=0;i<41;i++)

printf("=");

printf("\n");

for(i=0;i<20;i++)

printf("\t\t|\t\t\t\t\t|\n");

printf("\t\t");

for(i=0;i<41;i++)

printf("=");

}

void print(int n)/*輸出蛇*/

{

int i ;

clrscr();

p_frame();

gotoxy(fd.x,fd.y);

printf("@");

for(i=0;i<=n;i++)

{

gotoxy(p[i].x,p[i].y);

printf("*");

}

}

int gameover(int n)/*是否咬到自己了*/

{

int i;

for(i=0;i<n-1;i++)

if(p[i].x==p[n].x && p[i].y==p[n].y )

return 1;

return 0;

}

void slp() /*這是我自己加的畫面*/

{

int a=40,b=20,i,t,x,y;

x=16;

y=2;

for(t=0;t<50;t++)

{

if(t%4==0) {

for(i=0;i<a;i++){

gotoxy(x++,y);

printf("*");

}

a--;

}

else

if(t%4==1){

for(i=0;i<b;i++){

gotoxy(x,y++);

printf("*");

}

b--;

}

else

if(t%4==2){

for(i=0;i<a;i++){

gotoxy(x--,y);

printf("*");

}

a--;

}

else

if(t%4==3){

for(i=0;i<b;i++){

gotoxy(x,y--);

printf("*");

}

b--;

}

delay(gamespeed);

}

}

void prover(int n)/*結束時的輸出*/

{

slp();/*落幕*/

clrscr();

p_frame();

gotoxy(23,8);

printf("Game Over T_T. You have got %d",n+1);

gotoxy(23,9);

printf("Go On?(y/n)");

}

void calculate(int *px,int *py,int *pn)/*計算更新每個節點的位子*/

{

int i,n,tx,ty;

n=*pn;

tx=*px;

ty=*py;

if(tx<17) tx=57;

else if(tx>56) tx=17;

if(ty<=1) ty=22;

else if(ty>22) ty=2;

if(tx==fd.x&&ty==fd.y)

{

n++;

p[n].x=fd.x ;

p[n].y=fd.y ;

printf("\a");

fd.x=rand()%39+18 ;

fd.y=rand()%20+3 ;

}

else

{

for(i=0;i<n;i++)

{

p[i].x=p[i+1].x ;

p[i].y=p[i+1].y ;

}

p[n].x=tx;

p[n].y=ty;

}

*pn=n;

*px=tx;

*py=ty;

}

void main()

{

int n,tx,ty,f=1,flag,game; /*當前蛇的長度,x,y記錄更改的蛇頭部*/

int *pn,*px,*py;

char key ;

pn=&n ;

px=&tx;

py=&ty;

n=1; /*蛇身體0~n*/

fd.x=rand()%20+17 ;/*初始狀太*/

fd.y=rand()%17+3 ;

p[0].x=20 ;

p[0].y=3 ;

tx=p[1].x=21 ;

ty=p[1].y=3 ;

flag=0; /*記錄無效的反向按鍵*/

while(1)

{

while(!kbhit())/*無鍵盤消息*/

{

switch(f)

{

case 1 :

ty++;

break ;

case 2 :

ty--;

break ;

case 3 :

tx--;

break ;

case 4 :

tx++;

break ;

}

calculate(px,py,pn);

print(n);

sleep(1);

}/*有消息出現*/

flag=0;

key=getch();/*key=bioskey(0);接收按鍵*/

switch(key)

{

case KEY_DOWN :

if(f!=2){

f=1 ;

ty++;

flag=1;

}

break ;

case KEY_UP :

if(f!=1){

f=2 ;

ty--;

flag=1;

}

break ;

case KEY_LEFT :

if(f!=4){

f=3 ;

tx--;

flag=1;

}

break ;

case KEY_RIGHT :

if(f!=3){

f=4 ;

tx++;

flag=1;

}

break ;

}

if(key==' ')break ;

if(flag) /*按鍵有效*/

{

calculate(px,py,pn);

print(n);

delay(gamespeed);

}

/*game*/

if(gameover(n))

{

prover(n);

key=getch();

if(key=='n')

break;

else /*重玩*/

{

n=1;

ty=p[1].y;

tx=p[1].x;

}

}

}

}

源文章地址:

/sulipol/blog/item/514443b6b39612f830add16c.html

  • 上一篇:什麽叫計算機
  • 下一篇:鐝句唬鑸囧彜鍏告彃鐣浣曡瀺鍚堬紵
  • copyright 2024編程學習大全網