c语言贪吃蛇最简单代码50行可复制(c语言贪吃蛇)

关于c语言贪吃蛇最简单代码50行可复制,c语言贪吃蛇这个很多人还不知道,今天小六来为大家解答以上的问题,现在让我们一起来看看吧!
1、#include #include #include #include /*引用的库函数*/#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b/*宏定义键名*/#define N 200int i,key;int level;/*游戏等级*/int score=0;/*得分*/int gamespeed;/*游戏速度*/struct Food{int x;/*食物的横坐标*/int y;/*食物的纵坐标*/int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/struct Snake{int x[N];int y[N];int node;/*蛇的节数*/int direction;/*蛇移动方向*/int life;/* 蛇的生命,0活着,1死亡*/}snake;/*蛇的结构体*/void Choicelevle(void);/*选择游戏等级*/void Init(void);/*图形驱动*/void Close(void);/*图形结束*/void DRAW(void);/*游戏区域*/void GameOver(void);/*结束游戏*/void GamePlay(void);/*玩游戏具体过程*/void PrScore(void);/*输出成绩*//*主函数*/void main(void){Init();/*图形驱动*/Choicelevle();/*选择游戏等级*/DRAW();/*游戏区域*/GamePlay();/*玩游戏具体过程*/Close();/*图形结束*/}/*图形驱动*/void Init(void){int gd=DETECT,gm;initgraph(&gd,&gm,\"\\turboc2\"); /*初始化图形系统*/cleardevice(); /*清除图形界面*/}/*选择游戏等级*/void Choicelevle(void){char name[20];setcolor(YELLOW);settextstyle(0,0,6);outtextxy(150,150,\"Snake\");setcolor(GREEN);settextstyle(0,0,1);outtextxy(200,250,\"please put in your English name:\");outtextxy(200,270,\"Choice levle from 1-9.\");outtextxy(300,320,\"name:yangzilong\");/*制作人姓名*/outtextxy(300,350,\"number:0902060226\");/*制作人学号*/outtextxy(300,380,\"class:computer science 0602\");/*制作人班级*/getch();printf(\"please putin your name:\");gets(name);printf(\"please choice levle:\");scanf(\"%d\",&level);gamespeed=100000-400*level-300*level*level;if(level>9||level0;i--)/*蛇的每个环节往前移动*/{snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];}/*1,2,3,4表示右,左,上,下四个方向,通过这个控制来移动蛇头*/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++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/{if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){GameOver();/*显示失败*/*.life=1; /*蛇死*/break;}}/*如果蛇头碰到墙壁。
2、蛇头从对面墙出来*/if(snake.x[0]0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}elseif(snake.x[0]>450){snake.x[0]=50;/*如果蛇头越过右边界,则蛇头从左边界进入*/snake.y[0]=snake.y[0];/*纵坐标不变*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}elseif(snake.y[0]0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色。
3、0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}elseif(snake.y[0]>320){snake.y[0]=60;/*如果蛇头越过下边界,则从上边界进入*/snake.x[0]=snake.x[0];/*横坐标不变*/for(i=snake.node-1;i>0;i--){snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1]; /*蛇的其他节数向前推进*/}{setfillstyle(SOLID_FILL,0); /*设置填充模式和颜色,0表示黑色*/bar(50,55,455,315);/*bar是表示填充的范围的函数*/}}if(*.life==1)/*如果蛇死就跳出内循环,重新开始*/break;if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/{setcolor(0);/*把画面上的食物东西去掉*/rectangle(food.x,food.y,food.x+10,food.y-10); /*用当前线型和颜色画一矩形*/snake.x[snake.node]=-20;snake.y[snake.node]=-20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/snake.node++;/*蛇的身体长一节*/food.yes=1;/*画面上需要出现新的食物*/score+=10; /*每吃掉一食物,得分累加10分*/if(score%100==0){level++;gamespeed=100000-400*level-300*level*level;/*每吃掉10食物提升一级,速度加快*/PrScore();/*输出新得分*/setcolor(YELLOW); /*设置字体颜色*/settextstyle(0,0,4); /*设置字体类型*/outtextxy(150,200,\"LEVEL UP\"); /*显示文本*/if(level==10){level=1,gamespeed=100000-400*level-300*level*level;}delay(6000000); delay(6000000); delay(6000000); delay(6000000); delay(6000000);delay(6000000); delay(6000000);bar(50,55,455,315);/*bar是表示填充的范围的函数*/}PrScore();/*输出新得分*/ } setcolor(4);/*画出蛇*/ 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);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(*.life==1)/*如果蛇死就跳出循环*/ break; key=bioskey(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)*/ } /*游戏结束*/ void GameOver(void) { cleardevice(); /*清屏*/PrScore(); setcolor(RED); /*设置字体颜色*/settextstyle(0,0,4); /*设置字体类型*/outtextxy(200,200,\"GAME OVER\"); /*显示文本*/getch(); } /*输出成绩及游戏等级*/ void PrScore(void) { char str1[20];/*设置字符型数组*/ setfillstyle(SOLID_FILL,0); bar(50,15,390,35); /*填充矩形框*/setcolor(6); /*设置文本颜色*/settextstyle(0,0,2); /*设置数组显示位置*/sprintf(str1,\"score %d level %d\",score,level);/*显示数组内容*/outtextxy(55,20,str1); setcolor(YELLOW); /*设置字体颜色*/settextstyle(0,0,2); /*设置字体类型*/outtextxy(250,400,\"EXIT=ESC \");/*显示文本*/} void Close(void) { closegraph(); }。
本文到此分享完毕,希望对大家有所帮助。



