c语言贪吃蛇源码是一款非常经典的休闲益智游戏。c语言贪吃蛇源码(mǎ)游戏画面采(cǎi)用了(le)像素风格(gé),并添加了5中游(yóu)戏模(mó)式,为(wéi)玩家(jiā)带(dài)来(lái)更有趣的游戏体(tǐ)验,有(yǒu)兴趣的玩家(jiā)可以下载c语言贪吃蛇源(yuán)码(mǎ)玩玩(wán),回忆下(xià)童年(nián)的乐趣。
用C语言编写(xiě)的“贪吃蛇(shé)游戏源程(chéng)序”非常的经典,游戏采用(yòng)了全(quán)新(xīn)的现代游(yóu)戏风格,拥有经典、挑战、时间、生存、涅磐五种游戏模式,简单(dān)有趣(qù)的图形,能(néng)够带给用户非(fēi)凡的游戏体验。
源码(mǎ)包含(hán)在(zài)压(yā)缩包内。
贪吃(chī)蛇
#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;/*得(dé)分*/
int gamespeed=50000;/*游戏(xì)速度自己调整*/
struct Food
{
int x;/*食物(wù)的(de)横坐标*/
int y;/*食物的纵坐标*/
int yes;/*判断是否要出现食物的变(biàn)量(liàng)*/
}food;/*食物的结构体*/
struct Snake
{
int x[N];
int y[N];
int node;/*蛇的节数*/
int direction;/*蛇移动方(fāng)向(xiàng)*/
int life;/* 蛇的生命,0活着,1死亡*/
}snake;
void Init(void);/*图形(xíng)驱动*/
void Close(void);/*图(tú)形结束*/
void DrawK(void);/*开始画面*/
void GameOver(void);/*结(jié)束游戏*/
void GamePlay(void);/*玩游戏具体过程(chéng)*/
void PrScore(void);/*输出(chū)成绩*/
/*主函(hán)数*/
void main(void)
{
Init();/*图形(xíng)驱动*/
DrawK();/*开始(shǐ)画面*/
GamePlay();/*玩游戏具(jù)体(tǐ)过程*/
Close();/*图形结束(shù)*/
}
/*图形(xíng)驱动*/
void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}
/*开始画面,左上角(jiǎo)坐标为(50,40),右下角坐标为(610,460)的围墙*/
void DrawK(void)
{
/*setbkcolor(LIGHTGREEN);*/
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线(xiàn)型(xíng)*/
for(i=50;i<=600;i+=10)/*画围(wéi)墙(qiáng)*/
{
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);/*右(yòu)边*/
}
}
/*玩(wán)游(yóu)戏具(jù)体过程*/
void GamePlay(void)
{
randomize();/*随机(jī)数发(fā)生器(qì)*/
food.yes=1;/*1表示(shì)需要出现(xiàn)新食物,0表示已经(jīng)存在食(shí)物*/
snake.life=0;/*活着*/
snake.direction=1;/*方(fāng)向往右*/
snake.x[0]=100;snake.y[0]=100;/*蛇头*/
snake.x[1]=110;snake.y[1]=100;
snake.node=2;/*节数*/
PrScore();/*输出(chū)得分*/
while(1)/*可以重复玩游戏,压(yā)ESC键结束*/
{
while(!kbhit())/*在(zài)没有(yǒu)按键的情况下,蛇自己(jǐ)移(yí)动身体*/
{
if(food.yes==1)/*需要出(chū)现新食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60;
while(food.x%10!=0)/*食物随机出现后必须让(ràng)食物能够在整格内,这样才可以让蛇吃到*/
food.x++;
while(food.y%10!=0)
food.y++;
food.yes=0;/*画面(miàn)上有食物了*/
}
if(food.yes==0)/*画面上有食(shí)物了就要(yào)显示*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也(yě)就是贪吃(chī)蛇(shé)的关键算(suàn)法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1];
}
/*1,2,3,4表示右,左,上,下(xià)四个方向,通(tōng)过(guò)这(zhè)个判断来移动蛇(shé)头*/
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++)/*从蛇(shé)的(de)第四(sì)节开始判断是否(fǒu)撞(zhuàng)到(dào)自己(jǐ)了(le),因为蛇头为两节,第(dì)三节不可能(néng)拐过(guò)来(lái)*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();/*显示(shì)失败*/
snake.life=1;
break;
}
}
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||
snake.y[0]>455)/*蛇是否撞(zhuàng)到墙壁(bì)*/
{
GameOver();/*本次游戏(xì)结束*/
snake.life=1; /*蛇死*/
}
if(snake.life==1)/*以上两种(zhǒng)判(pàn)断以后,如果蛇死就跳出内(nèi)循环(huán),重新开始*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到(dào)食物以后(hòu)*/
{
setcolor(0);/*把画面上的食(shí)物东(dōng)西去掉*/
rectangle(food.x,food.y,food.x+10,food.y-10);
snake.x[snake.node]=-20;snake.y[snake.node]=-20;
/*新(xīn)的一节先放在看不(bú)见的位置,下次循环就取前(qián)一节的位置*/
snake.node++;/*蛇的身体长(zhǎng)一节*/
food.yes=1;/*画面(miàn)上需(xū)要出现新的食物*/
score+=10;
PrScore();/*输出新得(dé)分*/
}
setcolor(4);/*画出蛇(shé)*/
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);/*用(yòng)黑色去除蛇的的最后(hòu)一节*/
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)/*如果蛇死就(jiù)跳(tiào)出循环*/
break;
key=bioseskey(0);/*接收按键*/
if(key==ESC)/*按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;
}/*endwhile(1)*/
}
/*游戏结(jié)束(shù)*/
void GameOver(void)
{
cleardevice();
PrScore();
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,"score:%d",score);
outtextxy(55,20,str);
}
/*图形(xíng)结束*/
void Close(void)
{
getch()();
closegraph();
}

《c语言贪(tān)吃蛇源码》这(zhè)款游戏(xì)属于(yú)休闲益智栏目,由红软基地网友(yǒu)分享于(yú)2015-05-18,本(běn)文网址为:http://www.hch368.com/game/14992.html
上一页:机动战士(shì)高(gāo)达(dá):大混战电脑PC版 下一页:黑暗寓言7:民(mín)谣(yáo)之长发姑娘
《3D贪吃蛇》:《3D贪吃蛇》是由Hermit Games制作发行的一款休闲益智(zhì)游(yóu)戏。3D贪吃蛇是一款画面非常精致的游(yóu)戏作品,在全系(xì)的3D空间里,由多彩的(de)模块组成的大(dà)蛇在奇幻(huàn)的(de)空间中到处寻找食物。游戏(xì)中强烈的对比颜色让很多玩(wán)家感到(dào)不适,浓(nóng)郁的3D效果也可能给玩家带来头晕目眩之感,所以在玩之前(qián),一定要(yào)好(hǎo)好培养自己的3D空间感,以免经常撞墙。有兴趣的玩(wán)家可以下载3D贪吃蛇玩(wán)玩。
《水晶贪(tān)吃蛇》:《水(shuǐ)晶(jīng)贪吃蛇》是一款休闲益智游戏。水晶贪吃蛇(shé)是仿经(jīng)典游(yóu)戏贪吃蛇的一款游戏,和游戏(xì)名(míng)字一(yī)样,水晶贪吃(chī)蛇的界面就如同水晶般华丽,有兴趣的玩(wán)家(jiā)可以下(xià)载(zǎi)水晶(jīng)贪(tān)吃蛇玩玩(wán)。