




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第C語(yǔ)言基于EasyX實(shí)現(xiàn)貪吃蛇setlinecolor(BLACK);//矩形邊框線的顏色
setfillcolor(RGB(rand()%255,rand()%255,rand()%255));//內(nèi)部填充顏色
fillrectangle(snake-xy[i].x,snake-xy[i].y,snake-xy[i].x+10,snake-xy[i].y+10);
}
voidmoveSnake(structSnake*snake)
//除了第一節(jié)之外,后面每一節(jié)都是前面一節(jié)的坐標(biāo)
for(inti=snake-ii--)
{
snake-xy[i].x=snake-xy[i-1].x;
snake-xy[i].y=snake-xy[i-1].y;
}
//第一節(jié)的處理
switch(snake-postion)
{
caseright:
snake-xy[0].x+=10;
break;
caseleft:
snake-xy[0].x-=10;
break;
casedown:
snake-xy[0].y+=10;
break;
caseup:
snake-xy[0].y-=10;
default:
break;
}
voidkeyDown(structSnake*snake)
charuserkey=0;
userkey=_getch();
switch(userkey)
{
caseright:
if(snake-postion!=left)
snake-postion=right;
break;
caseleft:
if(snake-postion!=right)
snake-postion=left;
break;
casedown:
if(snake-postion!=up)
snake-postion=down;
break;
caseup:
if(snake-postion!=down)
snake-postion=up;
break;
}
voidinitFood(structFood*food,structSnake*snake)
food-fdxy.x=rand()%64*10;
food-fdxy.y=rand()%48*10;
food-flag=1;
//如果食物出現(xiàn)在蛇身上,重新產(chǎn)生坐標(biāo)
for(inti=0;isnake-i++)
{
if(food-fdxy.x==snake-xy[i].xfood-fdxy.y==snake-xy[i].y)
{
food-fdxy.x=rand()%64*10;
food-fdxy.y=rand()%48*10;
}
}
voiddrawFood(structFood*food)
setlinecolor(BLACK);//矩形邊框線的顏色
setfillcolor(RGB(rand()%255,rand()%255,rand()%255));
fillrectangle(food-fdxy.x,food-fdxy.y,food-fdxy.x+10,food-fdxy.y+10);
voideatFood(structFood*food,structSnake*snake)
//蛇邊長(zhǎng)
//食物重新生成
//分?jǐn)?shù)增加
if(snake-xy[0].x==food-fdxy.xsnake-xy[0].y==food-fdxy.y)
{
snake-num++;
food-eatgrade+=10;
food-flag=0;
}
//蛇死亡,游戲結(jié)束
intsnakeDie(structSnake*snake)
if(snake-xy[0].x640||snake-xy[0].x0||snake-xy[0].y480||snake-xy[0].y0||(snake-xy[0].x+10)640||(snake-xy[0].x+10)0||(snake-xy[0].y+10)480||(snake-xy[0].y+10)0)
{
outtextxy(200,200,"撞墻");
//MessageBox(hwnd,"游戲結(jié)束,點(diǎn)擊確定重新開(kāi)始","撞墻",MB_OKCANCEL);
return1;//返回1,游戲結(jié)束
}
for(inti=1;isnake-i++)
{
if(snake-xy[0].x==snake-xy[i].xsnake-xy[0].y==snake-xy[i].y)
{
outtextxy(200,200,"自殺");
//MessageBox(hwnd,"游戲結(jié)束,點(diǎn)擊確定重新開(kāi)始","自殺",MB_OKCANCEL);
return1;
}
}
return0;
intwinGame(structSnake*snake)
if(snake-num==length)
{
outtextxy(200,200,"勝利,恭喜通關(guān)");
//MessageBox(hwnd,"游戲結(jié)束,點(diǎn)擊確定重新開(kāi)始","恭喜通關(guān)",MB_OKCANCEL);
return1;//返回1,游戲結(jié)束
}
else
{
return0;
}
voidshowGrade(structFood*food)
chargrade[100]="";
sprintf(grade,"%d",food-eatgrade);
setbkmode(TRANSPARENT);
settextcolor(LIGHTBLUE);
outtextxy(560,20,"分?jǐn)?shù)");
outtextxy(610,20,grade);
voidpauseMoment()
if(_getch()==32)
{
while(_getch()!=32);
}
}
test.cpp
#include"game.h"
intmain()
mciSendString(L"open1.mp3aliasbkmusic",NULL,0,NULL);//打開(kāi)音樂(lè)文件
mciSendString(L"playbkmusicrepeat",NULL,0,NULL);
//循環(huán)播放音樂(lè)
srand((unsignedint)time(NULL));//隨機(jī)數(shù)種子
structSnakesnake;//創(chuàng)建蛇
structFoodfood;//創(chuàng)建食物
hwnd=initgraph(640,480);//初始化窗口
setbkcolor(WHITE);//設(shè)置窗口為白色
intkey=0;//接收最終的彈窗指令,判斷是否繼續(xù)游戲
do
{
initSnakeFood(snake,food);//初始化蛇和食物的分?jǐn)?shù)
key=0;
while(1)
{
BeginBatchDraw();緩沖區(qū)打印,防止閃屏
cleardevice();//刷新
if(food.flag==0)
{
initFood(food,snake);
}
drawFood(food);//畫(huà)食物
eatFood(food,snake);//是否吃食物
showGrade(food);//打印食物
drawSnake(snake);//畫(huà)蛇
EndBatchDraw();//緩沖區(qū)打印
if(snakeDie(snake))//判斷是否四方
{
break;
}
if(winGame(snake))//判斷是否勝利
{
break;
}
while(_kbhit())//如果有按鍵則進(jìn)入,否則不進(jìn)入循環(huán)
{
pauseMoment();//暫停
keyDown(snake);
}
moveSnake(snake);//移動(dòng)蛇
Sleep(100);
}
key=MessageBox(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)產(chǎn)品化生產(chǎn)基地建設(shè)合同
- 公司的場(chǎng)地租賃協(xié)議
- 業(yè)務(wù)委托外包處理合同
- 輕質(zhì)材料出租合同協(xié)議
- 造橋技術(shù)轉(zhuǎn)讓合同協(xié)議
- 更改性名協(xié)議書(shū)
- 車(chē)輛維修合同補(bǔ)充協(xié)議
- 燙傷和解協(xié)議書(shū)
- 無(wú)償捐獻(xiàn)協(xié)議書(shū)
- 服務(wù)支持協(xié)議書(shū)
- 《雷達(dá)干擾技術(shù)概述》課件
- 中韓勞動(dòng)法比較研究
- 大學(xué)禮儀操活動(dòng)方案
- 舞蹈活動(dòng)費(fèi)用方案模板
- 比賽對(duì)陣表模板
- 電子競(jìng)技員技能理論考試復(fù)習(xí)題庫(kù)(含答案)
- 博物館保安服務(wù)投標(biāo)方案
- (完整版)煤礦技術(shù)員考試試題
- 思想道德與法治2023版教學(xué)設(shè)計(jì)第六章 學(xué)習(xí)法治思想 提升法治素養(yǎng)
- 冠心病抗血小板治療課件
- 電路原理-疊加定理課件
評(píng)論
0/150
提交評(píng)論