C语言小游戏源代码《贪吃蛇》

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言小游戏源代码《贪吃蛇》

#define N 200/*定义全局常量*/

#define m 25

#include

#include

#include

#include

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define Esc 0x011b

int i,j,key,k;

struct Food/*构造食物结构体*/ {

int x;

int y;

int yes;

}food;

struct Goods/*构造宝贝结构体*/ {

int x;

int y;

int yes;

}goods;

struct Block/*构造障碍物结构体*/ {

int x[m];

int y[m];

int yes;

}block;

struct Snake{/*构造蛇结构体*/

int x[N];

int y[N];

int node;

int direction;

int life;

}snake;

struct Game/*构建游戏级别参数体*/ {

int score;

int level;

int speed;

}game;

/*定义函数*/

void init(void);/*定义图形驱动*/

void close(void);/*定义关闭函数*/

void drawk(void);/*定义界面函数*/

void gameover(void);/*定义游戏结束函数*/

void gameplay(void);/*定义游戏主函数*/

void prscore(void);/*定义得分函数*/

void main(void){/*主函数体,调用以下四个函数*/

init();

setbkcolor(7);

drawk();

gameplay();

close();

}

void init(void){/*构建图形驱动函数*/

int gd=DETECT,gm;

initgraph(&gd,&gm,"");

cleardevice();

}

void drawk(void){/*构建游戏界面函数*/

/*setbkcolor(LIGHTGREEN);*/

char str3[50];

setfillstyle(SOLID_FILL,BLUE);/*条型边框,显示版本信息*/ bar3d(48,9,610,38,1,45);

setcolor(YELLOW);/*版本信息*/

sprintf(str3,"Version:5.01,Powerwing Studio");

outtextxy(330,20,str3);

setfillstyle(LTSLASH_FILL,YELLOW);/*设定墙边的填充形式*/ bar3d(48,48,58,462,0,0);/*设定墙边*/

bar3d(48,39,611,48,0,0);

bar3d(48,452,611,462,0,0);

bar3d(602,39,611,462,0,0);

}

void gameplay(void){/*构建游戏主函数*/

/*初始化游戏角色*/

randomize();/*随机数发生器*/

goods.yes=1;

block.yes=1;

food.yes=1;/*场景中需建立新的食物*/

snake.life=1;/*初始化蛇生命值*/

snake.direction=1;/*蛇起始的移动方向定义为向右*/

snake.x[0]=100;snake.y[0]=100;/*蛇头的位置坐标初始化*/ snake.x[1]=110;snake.y[1]=100;

snake.node=2;/*蛇初始化节数,共两节只有蛇头*/

/*初始化障碍物的数组*/

block.x[0]=170;block.y[0]=270;/*level 1*/

block.x[1]=410;block.y[1]=310;

block.x[2]=300;block.y[2]=200;

block.x[3]=320;block.y[3]=420;

block.x[4]=250;block.y[4]=350;

block.x[5]=220;block.y[5]=320;/*level 2*/

block.x[6]=310;block.y[6]=410;

block.x[7]=400;block.y[7]=500;

block.x[8]=230;block.y[8]=230;

block.x[9]=280;block.y[9]=280;

block.x[10]=170;block.y[10]=280;/*level 3*/

block.x[11]=420;block.y[11]=310;

block.x[12]=310;block.y[12]=200;

block.x[13]=320;block.y[13]=400;

block.x[14]=250;block.y[14]=260;/*level 4*/

block.x[15]=220;block.y[15]=330;

block.x[16]=130;block.y[16]=410;

block.x[17]=310;block.y[17]=510;

block.x[18]=230;block.y[18]=340;

block.x[19]=280;block.y[19]=380;

block.x[20]=270;block.y[20]=170;/*level 5*/

block.x[21]=410;block.y[21]=450;

block.x[22]=190;block.y[22]=200;

block.x[23]=150;block.y[23]=320;

block.x[24]=270;block.y[24]=350;

block.x[25]=340;block.y[25]=320;

game.score=0;

game.speed=50000;

game.level=1;

prscore();/*得分初始化*/

while(1){/*判断为真可以按Esc退出循环结束游戏*/

while(!kbhit()){/*无按键按下时,蛇自己移动身体*/

if(game.level==1){/*画出障碍物*/

for(j=0;j<5;j++){

setcolor(5);/**/

rectangle(block.x[j],block.y[j],block.x[j]+10,block.y[j]-10);

相关文档
最新文档