贪吃蛇代码求贪吃蛇的c语言代码,觉得挺好玩的

贪吃蛇代码  时间:2021-07-16  阅读:()

求贪吃蛇的c语言代码,觉得挺好玩的

#include <stdio.h> #include <graphics.h> #include <stdlib.h> #include <dos.h> /*引用的库函数*/ #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b/*宏定义键名*/ #define N 200 int 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,"puter 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||level<1) {cleardevice(); /*清除图形界面*/ setcolor(YELLOW); /*设置字体颜色*/ settextstyle(0,0,2); /*设置字体类型*/ outtextxy(150,200,"level input error"); /*显示文本*/ getch(); level=1; } } void DRAW(void) {cleardevice(); /*清屏*/ setcolor(2); setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ rectangle(45,45,465,325); } /*玩游戏具体过程*/ void GamePlay(void) {setcolor(5); setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ randomize();/*随机数发生器*/ food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/ snake.life=0;/*活着*/ snake.direction=1;/*方向往右*/ snake.x[0]=320;snake.y[0]=240;/*蛇头*/ snake.x[1]=330;snake.y[1]=240; /*蛇的第二节位置*/ snake.node=3;/*节数*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,压ESC键结束*/ { while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/ { if(food.yes==1)/*需要出现新食物*/ { food.x=rand()%360+70; food.y=rand()%250+60; while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/ food.x++; while(food.y%10!=0) food.y++; food.yes=0;/*画面上有食物了*/ } if(food.yes==0)/*画面上有食物了就要显示*/ { setcolor(GREEN); rectangle(food.x,food.y,food.x+10,food.y-10); } for(i=snake.node-1;i>0;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();/*显示失败*/ snake.life=1; /*蛇死*/ break; } } /*如果蛇头碰到墙壁,蛇头从对面墙出来*/ if(snake.x[0]<50) {snake.x[0]=450;/*如果蛇头越过左边界,则从右边界进入*/ 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是表示填充的范围的函数*/ } } else if(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是表示填充的范围的函数*/ } } else if(snake.y[0]<60) {snake.y[0]=320;/*如果蛇头越过上边界,则从下边界进入*/ 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是表示填充的范围的函数*/ } } else if(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(snake.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(snake.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(); }

Kinponet是谁?Kinponet前身公司叫金宝idc 成立于2013年 开始代理销售美国vps。

在2014年发现原来使用VPS的客户需求慢慢的在改版,VPS已经不能满足客户的需求。我们开始代理机房的独立服务器,主推和HS机房的独立服务器。经过一年多的发展,我们发现代理的服务器配置参差不齐,机房的售后服务也无法完全跟上,导致了很多问题发生,对使用体验带来了很多的不便,很多客户离开了我们。经过我们慎重的考虑和客户的建议。我们在2015开始了重大的改变, 2015年,我们开始计划托管自己...

搬瓦工VPS:新增荷兰机房“联通”线路的VPS,10Gbps带宽,可在美国cn2gia、日本软银、荷兰“联通”之间随意切换

搬瓦工今天正式对外开卖荷兰阿姆斯特丹机房走联通AS9929高端线路的VPS,官方标注为“NL - China Unicom Amsterdam(ENUL_9)”,三网都走联通高端网络,即使是在欧洲,国内访问也就是飞快。搬瓦工的依旧是10Gbps带宽,可以在美国cn2 gia、日本软银与荷兰AS9929之间免费切换。官方网站:https://bwh81.net优惠码:BWH3HYATVBJW,节约6...

零途云月付31.9元起,香港cn2 gia线路

零途云是一家香港公司,主要产品香港cn2 gia线路、美国Cera线路云主机,美国CERA高防服务器,日本CN2直连服务器;同时提供香港多ip站群云服务器。即日起,购买香港/美国/日本云服务器享受9折优惠,新用户有优惠码:LINGTUYUN,使用即可打折。目前,零途云还推出性价比非常高香港多ip站群云服务器,有需要的,可以关注一下。零途云优惠码:优惠码:LINGTUYUN (新用户优惠,享受9折优...

贪吃蛇代码为你推荐
元数据管理什么是元数据?(指数据中心建设而言)举个例子说明一下。图片地址怎么获得图片地址weakhashmapJava///map的父类是?qq注册账号用QQ注册有几种方法?丁奇海贼王里“D”的意思是什么?色库photoshop7.0怎么改PANTONE色号51信用卡论坛刚才发现51信用卡管家可以查个人征信了,就查了下信用卡信用记录。这是截图,大家帮我看看我的这个逾期数据分析报告范文800字统计分析报告基础设施即服务基础设施、 产品服务、 财务和 () 这几个问题是商业模式设计需要去主要解决的。疫苗之王万兽之王是什么意思
域名出售 政务和公益机构域名注册管理中心 东莞服务器租用 景安vps 老域名全部失效请记好新域名 便宜建站 512m 双11抢红包攻略 远程登陆工具 一元域名 国外网站代理服务器 台湾谷歌地址 佛山高防服务器 如何建立邮箱 上海电信测速网站 架设邮件服务器 河南移动梦网 wordpress中文主题 万网空间 新疆服务器 更多