日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言写贪吃蛇什么水平_关于C语言写贪吃蛇

發布時間:2024/9/27 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言写贪吃蛇什么水平_关于C语言写贪吃蛇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

展開全部

TC 貪吃e69da5e887aa62616964757a686964616f31333337623430蛇代碼2008-06-08 13:50#define N 200

#include

#include

#include

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

int i,key;

int score=0;

int gamespeed=32000;

struct Food /*食物的結構體*/

{

int x; /*食物的橫坐標*/

int y; /*食物的縱坐標*/

int yes; /*食物是否出現的變量*/

}food;

struct Snack /*蛇的結構體*/

{

int x[N];

int y[N];

int node; /*蛇的節數*/

int direction; /*蛇的方向*/

int life; /*蛇的生命,0活著,1死亡*/

}snake;

void Init(void); /*圖形驅動*/

void Close(void); /*關閉游戲函數*/

void DrawK(void); /*畫圖函數*/

void GameOver(void);/*輸出失敗函數*/

void GamePlay(); /*游戲控制函數 主要程序*/

void PrScore(void); /*分數輸出函數*/

DELAY(char ch)/*調節游戲速度*/

{

if(ch=='3')

{

delay(gamespeed); /*delay是延遲函數*/

delay(gamespeed);

}

else if(ch=='2')

{

delay(gamespeed);

}

}

Menu()/*游戲開始菜單*/

{

char ch;

printf("Please choose the gamespeed:\n");

printf("1-Fast 2-Normal 3-Slow\n");

printf("\nPlease Press The numbers..\n");

do

{ch=getch();}

while(ch!='1'&&ch!='2'&&ch!='3');

clrscr();

return(ch);

}

/*主函數*/

void main(void)

{

int ch;

ch=Menu();

Init();

DrawK();

GamePlay(ch);

Close();

}

void Init(void)

{

int gd=DETECT,gm;

initgraph(&gd,&gm,"c:\\tc");

cleardevice();

}

void DrawK(void)

{

setcolor(11);

setlinestyle(SOLID_LINE,0,THICK_WIDTH);

for(i=50;i<=600;i+=10)

{

rectangle(i,40,i+10,49); /*畫出上邊框*/

rectangle(i,451,i+10,460); /*畫出下邊框*/

}

for(i=40;i<=450;i+=10)

{

rectangle(50,i,59,i+10); /*畫出左邊框*/

rectangle(601,i,610,i+10); /*畫出右邊框*/

}

}

void GamePlay(char ch)

{

randomize(); /*隨機數發生器*/

food.yes=1; /*1代表要出現食物,0表示以存在食物*/

snake.life=0;

snake.direction=1;

snake.x[0]=100;snake.y[0]=100;

snake.x[1]=110;snake.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; /*使用rand函數隨機產生食物坐標*/

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-1;i>0;i--) /*貪吃蛇的移動算法*/

{

snake.x[i]=snake.x[i-1];

snake.y[i]=snake.y[i-1]; /*貪吃蛇的身體移動算法*/

}

switch(snake.direction) /*貪吃蛇的頭部移動算法,以此來控制移動*/

{

case 1:snake.x[0]+=10;break;

case 2:snake.x[0]-=10;break;

case 3:snake.y[0]-=10;break;

case 4:snake.y[0]+=10;break;

}

for(i=3;i

{

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=0;i

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);

delay(gamespeed);

DELAY(ch);

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(void)

{

cleardevice();

setcolor(RED);

settextstyle(0,0,4);

outtextxy(200,200,"GAME OVER");

getch();

}

void PrScore(void)

{

char str[10];

setfillstyle(SOLID_FILL,YELLOW);

bar(50,15,220,35);

setcolor(6);

settextstyle(0,0,2);

sprintf(str,"scord:%d",score);

outtextxy(55,20,str);

}

void Close(void)

{

getch();

closegraph();

}

已贊過

已踩過<

你對這個回答的評價是?

評論

收起

總結

以上是生活随笔為你收集整理的c语言写贪吃蛇什么水平_关于C语言写贪吃蛇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。