使用C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲_第1頁(yè)
使用C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲_第2頁(yè)
使用C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲_第3頁(yè)
使用C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲_第4頁(yè)
使用C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第使用C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)貪吃蛇小游戲的具體代碼,供大家參考,具體內(nèi)容如下

控制臺(tái)的歡樂(lè)就是這么簡(jiǎn)單;

提示:以下是本篇文章正文內(nèi)容,下面案例可供參考

一、貪吃蛇實(shí)現(xiàn)的結(jié)構(gòu)和方式

1.用枚舉定義蛇的移動(dòng)方向

enumDir

UP,

DOWN,

LEFT,

RIGHT,//枚舉不能用分號(hào);

//創(chuàng)建結(jié)構(gòu)體,對(duì)蛇的參數(shù)進(jìn)行設(shè)置;

structSnake

intsize;//蛇的節(jié)數(shù);

intdir;//蛇的方向;

intspeed;//蛇的移動(dòng)速度;

//用數(shù)組來(lái)表示蛇的坐標(biāo);

POINTcoor[SNAKE_SIZE];//蛇的最大節(jié)數(shù);

}snake;

//食物的結(jié)構(gòu)體;

structFood

intx;

inty;

intr;

//食物半徑;

boolflag;//用來(lái)判斷食物是否被吃;

DWORDcolor;//食物顏色;

}food;

代碼如下(示例):

```c

importnumpyasnp

importpandasaspd

importmatplotlib.pyplotasplt

importseabornassns

importwarnings

warnings.filterwarnings('ignore')

import

ssl

ssl._create_default_https_context=ssl._create_unverified_context

2.對(duì)窗口進(jìn)行設(shè)置;

代碼如下(示例):

voidGameDraw()

//雙緩沖繪圖;

BeginBatchDraw();

//設(shè)置背景顏色;

setbkcolor(RGB(28,115,119));

cleardevice();

//繪制蛇;

setfillcolor(GREEN);//顏色的改變;

for(inti=0;isnake.size;i++)

{

solidcircle(snake.coor[i].x,snake.coor[i].y,5);//solidcircle函數(shù)可以用來(lái)描繪無(wú)邊框填充函數(shù);

}

//繪制食物;

if(food.flag)

{

solidcircle(food.x,food.y,food.r);//solidcircle代表畫(huà)圓;

}

EndBatchDraw();

}

3.對(duì)蛇進(jìn)行初始化;

voidGameInit()

//播放背景音樂(lè);

mciSendString("open./mp3.musicaliasBGM",0,0,0);

mciSendString("playBGMrepeat",0,0,0);

initgraph(640,480/*SHOWCONSOLE*/);

//設(shè)計(jì)隨機(jī)數(shù)種子;

srand(GetTickCount());//GetTickCount()獲取開(kāi)機(jī)到現(xiàn)在的毫秒數(shù);

snake.size=3;

snake.speed=10;

snake.dir=RIGHT;

for(inti=0;i=snake.size-1;i++)

{

snake.coor[i].x=10*(2-i)+20;//向右偏移;

snake.coor[i].y=10;//確保蛇在同一水品線;

}

//食物的初始化;隨機(jī)產(chǎn)生一個(gè)整數(shù);設(shè)置隨機(jī)種子,頭文件是stdlib.h;

food.x=rand()%640;

food.y=rand()%480;

food.color=RGB(rand()%256,rand()%256,rand()%256);//顏色值為0到256;

food.r=rand()%10+5;

food.flag=true;

}

二、源代碼

#includestdio.h

#includeconio.h

#includegraphics.h//不是庫(kù)函數(shù);

#includestdlib.h//隨機(jī)數(shù)的產(chǎn)生;

#includemmsystem.h//導(dǎo)入背景音樂(lè);

#pragmacomment(lib,"winmm.lib")//導(dǎo)入背景音樂(lè);

//結(jié)構(gòu)體對(duì)snake初始化.

#defineSNAKE_SIZE500

/*typedefstructtagpoint

LONGx;

LONGy;

}POINT;*/

//用枚舉表示蛇的方向;

enumDir

UP,

DOWN,

LEFT,

RIGHT,//枚舉不能用分號(hào);

//創(chuàng)建結(jié)構(gòu)體,對(duì)蛇的參數(shù)進(jìn)行設(shè)置;

structSnake

intsize;//蛇的節(jié)數(shù);

intdir;//蛇的方向;

intspeed;//蛇的移動(dòng)速度;

//用數(shù)組來(lái)表示蛇的坐標(biāo);

POINTcoor[SNAKE_SIZE];//蛇的最大節(jié)數(shù);

}snake;

//食物的結(jié)構(gòu)體;

structFood

intx;

inty;

intr;

//食物半徑;

boolflag;//用來(lái)判斷食物是否被吃;

DWORDcolor;//食物顏色;

}food;

//數(shù)據(jù)的初始化;

/*voidGameInit()

//初始化graph圖形窗口,SHOWCONSOLE控制臺(tái);

initgraph(640,480,SHOWCONSOLE);

snake.size=0;

snake.speed=10;

snake.dir;

snake.coor[0].x=10;

snake.coor[0].y=10;

//數(shù)據(jù)的初始化;

voidGameInit()

//播放背景音樂(lè);

mciSendString("open./mp3.musicaliasBGM",0,0,0);

mciSendString("playBGMrepeat",0,0,0);

initgraph(640,480/*SHOWCONSOLE*/);

//設(shè)計(jì)隨機(jī)數(shù)種子;

srand(GetTickCount());//GetTickCount()獲取開(kāi)機(jī)到現(xiàn)在的毫秒數(shù);

snake.size=3;

snake.speed=10;

snake.dir=RIGHT;

for(inti=0;i=snake.size-1;i++)

{

snake.coor[i].x=10*(2-i)+20;//向右偏移;

snake.coor[i].y=10;//確保蛇在同一水品線;

}

//食物的初始化;隨機(jī)產(chǎn)生一個(gè)整數(shù);設(shè)置隨機(jī)種子,頭文件是stdlib.h;

food.x=rand()%640;

food.y=rand()%480;

food.color=RGB(rand()%256,rand()%256,rand()%256);//顏色值為0到256;

food.r=rand()%10+5;

food.flag=true;

//繪制;

voidGameDraw()

//雙緩沖繪圖;

BeginBatchDraw();

//設(shè)置背景顏色;

setbkcolor(RGB(28,115,119));

cleardevice();

//繪制蛇;

setfillcolor(GREEN);//顏色的改變;

for(inti=0;isnake.size;i++)

{

solidcircle(snake.coor[i].x,snake.coor[i].y,5);//solidcircle函數(shù)可以用來(lái)描繪無(wú)邊框填充函數(shù);

}

//繪制食物;

if(food.flag)

{

solidcircle(food.x,food.y,food.r);//solidcircle代表畫(huà)圓;

}

EndBatchDraw();

//蛇的移動(dòng);

//坐標(biāo)的改變;

voidsnakemove()

//讓頭部后面的跟著頭走;

for(inti=snake.size-1;ii--)

{

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

}

switch(snake.dir)

{

caseRIGHT:

snake.coor[0].x+=snake.speed;

if(snake.coor[0].x-10=640)

{

snake.coor[0].x=0;

}

break;

caseLEFT:

snake.coor[0].x-=snake.speed;

if(snake.coor[0].x+10=0)

{

snake.coor[0].x=640;

}

break;

caseUP:

snake.coor[0].y-=snake.speed;

if(snake.coor[0].y+10=0)

{

snake.coor[0].y=480;

}

break;

caseDOWN:

snake.coor[0].y+=snake.speed;

if(snake.coor[0].y-10=480)

{

snake.coor[0].y=0;

}

break;

default:

break;

}

//通過(guò)按鍵改變蛇的方向;

voidKeyControl()

//判斷有沒(méi)有按鍵;

if(_kbhit())//檢測(cè)有沒(méi)有按鍵,如果有就返回真,否則返回假;

{

//72807577上下左右鍵值;

switch(_getch())

{

case'w':

case'W':

case72:

if(snake.dir!=DOWN)

{

snake.dir=UP;

}

break;

case's':

case'S':

case80:

if(snake.dir!=UP)

{

snake.dir=DOWN;

}

break;

case'a':

case'A':

case75:

if(snake.dir!=RIGHT)

{

snake.dir=LEFT;

}

break;

case'd':

case'D':

case77:

if(snake.dir!=LEFT)

{

snake.dir=RIGHT;

}

break;

case'':

while(1)

{

if(_getch()=='');

return;

}

break;

}

}

//吃食物;

voidEatFood()

if(food.flagsnake.coor[0].x=food.x-food.rsnake.coor[0].x=food.x+food.rsnake.coor[0].y=food.y+food.rsnake.coor[0].y=food.y-food.r)

{

snake.size++;

food.flag==false;

}

if

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論