c語(yǔ)言貪吃蛇源碼是一款非常經(jīng)典的休閑益智游戲。c語(yǔ)言貪吃蛇源碼游戲畫(huà)面采用了像素風(fēng)格,并添加了5中游戲模式,為玩家?guī)?lái)更有趣的游戲體驗(yàn),有興趣的玩家可以下載c語(yǔ)言貪吃蛇源碼玩玩,回憶下童年的樂(lè)趣。
用C語(yǔ)言編寫(xiě)的“貪吃蛇游戲源程序”非常的經(jīng)典,游戲采用了全新的現(xiàn)代游戲風(fēng)格,擁有經(jīng)典、挑戰(zhàn)、時(shí)間、生存、涅磐五種游戲模式,簡(jiǎn)單有趣的圖形,能夠帶給用戶非凡的游戲體驗(yàn)。
源碼包含在壓縮包內(nèi)。
貪吃蛇
#define N 200
#include <graphics.h>
#include <stdlib.h>
#include <dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;/*得分*/
int gamespeed=50000;/*游戲速度自己調(diào)整*/
struct Food
{
int x;/*食物的橫坐標(biāo)*/
int y;/*食物的縱坐標(biāo)*/
int yes;/*判斷是否要出現(xiàn)食物的變量*/
}food;/*食物的結(jié)構(gòu)體*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的節(jié)數(shù)*/
int direction;/*蛇移動(dòng)方向*/
int life;/* 蛇的生命,0活著,1死亡*/
}snake;
void Init(void);/*圖形驅(qū)動(dòng)*/
void Close(void);/*圖形結(jié)束*/
void DrawK(void);/*開(kāi)始畫(huà)面*/
void GameOver(void);/*結(jié)束游戲*/
void GamePlay(void);/*玩游戲具體過(guò)程*/
void PrScore(void);/*輸出成績(jī)*/
/*主函數(shù)*/
void main(void)
{
Init();/*圖形驅(qū)動(dòng)*/
DrawK();/*開(kāi)始畫(huà)面*/
GamePlay();/*玩游戲具體過(guò)程*/
Close();/*圖形結(jié)束*/
}
/*圖形驅(qū)動(dòng)*/
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}
/*開(kāi)始畫(huà)面,左上角坐標(biāo)為(50,40),右下角坐標(biāo)為(610,460)的圍墻*/
void DrawK(void)
{
/*setbkcolor(LIGHTGREEN);*/
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*設(shè)置線型*/
for(i=50;i<=600;i+=10)/*畫(huà)圍墻*/
{
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);/*右邊*/
}
}
/*玩游戲具體過(guò)程*/
void GamePlay(void)
{
randomize();/*隨機(jī)數(shù)發(fā)生器*/
food.yes=1;/*1表示需要出現(xiàn)新食物,0表示已經(jīng)存在食物*/
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;/*節(jié)數(shù)*/
PrScore();/*輸出得分*/
while(1)/*可以重復(fù)玩游戲,壓ESC鍵結(jié)束*/
{
while(!kbhit())/*在沒(méi)有按鍵的情況下,蛇自己移動(dòng)身體*/
{
if(food.yes==1)/*需要出現(xiàn)新食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)/*食物隨機(jī)出現(xiàn)后必須讓食物能夠在整格內(nèi),這樣才可以讓蛇吃到*/
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*畫(huà)面上有食物了*/
}
if(food.yes==0)/*畫(huà)面上有食物了就要顯示*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)/*蛇的每個(gè)環(huán)節(jié)往前移動(dòng),也就是貪吃蛇的關(guān)鍵算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
/*1,2,3,4表示右,左,上,下四個(gè)方向,通過(guò)這個(gè)判斷來(lái)移動(dòng)蛇頭*/
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<snake.node;i++)/*從蛇的第四節(jié)開(kāi)始判斷是否撞到自己了,因?yàn)樯哳^為兩節(jié),第三節(jié)不可能拐過(guò)來(lá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();/*本次游戲結(jié)束*/
snake.life=1; /*蛇死*/
}
if(snake.life==1)/*以上兩種判斷以后,如果蛇死就跳出內(nèi)循環(huán),重新開(kāi)始*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/
{
setcolor(0);/*把畫(huà)面上的食物東西去掉*/
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
/*新的一節(jié)先放在看不見(jiàn)的位置,下次循環(huán)就取前一節(jié)的位置*/
snake.node++;/*蛇的身體長(zhǎng)一節(jié)*/
food.yes=1;/*畫(huà)面上需要出現(xiàn)新的食物*/
score+=10;
PrScore();/*輸出新得分*/
}
setcolor(4);/*畫(huà)出蛇*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,
snake.y[i]-10);
delay(gamespeed);
setcolor(0);/*用黑色去除蛇的的最后一節(jié)*/
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
} /*endwhile(!kbhit)*/
if(snake.life==1)/*如果蛇死就跳出循環(huán)*/
break;
key=bioskey(0);/*接收按鍵*/
if(key==ESC)/*按ESC鍵退出*/
break;
else
if(key==UP&&snake.direction!=4)
/*判斷是否往相反的方向移動(dòng)*/
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;
}/*endwhile(1)*/
}
/*游戲結(jié)束*/
void GameOver(void)
{
cleardevice();
PrScore();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch()();
}
/*輸出成績(jī)*/
void PrScore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"score:%d",score);
outtextxy(55,20,str);
}
/*圖形結(jié)束*/
void Close(void)
{
getch()();
closegraph();
}
《c語(yǔ)言貪吃蛇源碼》這款游戲?qū)儆谛蓍e益智欄目,由紅軟基地網(wǎng)友分享于2015-05-18,本文網(wǎng)址為:http://www.piola.cn/game/14992.html
上一頁(yè):機(jī)動(dòng)戰(zhàn)士高達(dá):大混戰(zhàn)電腦PC版 下一頁(yè):黑暗寓言7:民謠之長(zhǎng)發(fā)姑娘
《3D貪吃蛇》:《3D貪吃蛇》是由Hermit Games制作發(fā)行的一款休閑益智游戲。3D貪吃蛇是一款畫(huà)面非常精致的游戲作品,在全系的3D空間里,由多彩的模塊組成的大蛇在奇幻的空間中到處尋找食物。游戲中強(qiáng)烈的對(duì)比顏色讓很多玩家感到不適,濃郁的3D效果也可能給玩家?guī)?lái)頭暈?zāi)垦V,所以在玩之前,一定要好好培養(yǎng)自己的3D空間感,以免經(jīng)常撞墻。有興趣的玩家可以下載3D貪吃蛇玩玩。
《水晶貪吃蛇》:《水晶貪吃蛇》是一款休閑益智游戲。水晶貪吃蛇是仿經(jīng)典游戲貪吃蛇的一款游戲,和游戲名字一樣,水晶貪吃蛇的界面就如同水晶般華麗,有興趣的玩家可以下載水晶貪吃蛇玩玩。