




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年云南省峨山縣嶍豐住房和市政開(kāi)發(fā)有限公司招聘筆試參考題庫(kù)含答案解析
- 2025年福建福州鼓樓區(qū)水部街道匯晟集團(tuán)招聘筆試參考題庫(kù)附帶答案詳解
- 數(shù)字服務(wù)的未來(lái)趨勢(shì)-數(shù)字服務(wù)行業(yè)機(jī)遇與挑戰(zhàn)
- 2025年中國(guó)西瓜種子項(xiàng)目投資可行性研究報(bào)告
- 2025年中國(guó)蛇文石開(kāi)采項(xiàng)目投資可行性研究報(bào)告
- 2025年中國(guó)自動(dòng)旋轉(zhuǎn)噴水器市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國(guó)聚氨乙烯絕緣電纜數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年中國(guó)網(wǎng)眼帽項(xiàng)目投資可行性研究報(bào)告
- 2025年中國(guó)線卡釘市場(chǎng)現(xiàn)狀分析及前景預(yù)測(cè)報(bào)告
- 2025年中國(guó)緊急式蘑菇鈕市場(chǎng)調(diào)查研究報(bào)告
- 建筑材料租賃標(biāo)準(zhǔn)合同范本7篇
- 2025年湖北省漢江國(guó)有資本投資集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 萵筍育苗合同協(xié)議
- 2025年高考政治三輪沖刺復(fù)習(xí):統(tǒng)編版選擇性必修3《邏輯與思維》開(kāi)放類主觀題 提分刷題練習(xí)題(含答案)
- 電鍍車間廠房合同協(xié)議
- 森林火災(zāi)后生態(tài)恢復(fù)的策略探討
- 施工現(xiàn)場(chǎng)臨時(shí)設(shè)施專項(xiàng)方案
- 2025-2030中國(guó)戰(zhàn)斗機(jī)行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略研究報(bào)告
- 大學(xué)英語(yǔ)四級(jí)考試2024年12月真題(第一套)Part I Writing
- 吡侖帕奈產(chǎn)品簡(jiǎn)介
- 《海底電纜工程預(yù)算定額(試行)》
評(píng)論
0/150
提交評(píng)論