贪吃蛇c加加代码_贪吃蛇 C语言源代码
#include #include#include#include /*引用的库函数*/
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b/*宏定义键名*/
#define N 200
inti,key;int level;/*游戏等级*/
int score=0;/*得分*/
int gamespeed;/*游戏速度*/
structFood
{int x;/*食物的横坐标*/
int y;/*食物的纵坐标*/
int yes;/*判断是否要出现食物的变量*/}food;/*食物的结构体*/
structSnake
{intx[N];inty[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||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
{
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
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();
}
贪吃蛇c加加代码_贪吃蛇 C语言源代码相关推荐
- java贪吃蛇撞壁转弯代码_java贪吃蛇demo
import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyLi ...
- app启动页数秒加载 代码_干货 | App 自动化测试痛点(弹框及首页启动加载完成判断处理)
1. 常见痛点 App 自动化测试中有些常见痛点问题,如果框架不能很好的处理,就可能出现元素定位超时找不到的情况,自动化也就被打断终止了.很容易打消做自动化的热情,导致从入门到放弃.比如下面的两个问题 ...
- python字体加粗代码_如何在python docx中加粗行单元格的文本?
在python docx中,可以通过使用 Rich Text 造型.您应该为模板中需要样式化的特定字符/字符串在字符/字符串的位置提供一个上下文变量.此变量映射到 RichText 具有样式定义(在代 ...
- 手机导航列表页面瀑布流图片无限加载代码_搭建内容管理系统CMS(3):从原理、需求到设计,一文看懂动态化页面...
Sue前面分享的两篇文章,介绍了内容管理系统(CMS)关于内容生产和内容过滤的部分.那么被生产出来并通过过滤的内容,如何呈现给我们的内容消费者呢? 我们都知道,在客户端上的开发实现,版本一旦发布了出去 ...
- python四瓣花代码_小蛇学python(14)K-means预测花朵种类
承接上一篇有关如何处理数据的文章,这一篇,我们来一次实战,让大家感受一下这个过程. Iris数据集是一个比较特别的数据集,早在1936年Ronald Fisher就将此数据集用于了数据挖掘实验.Fis ...
- python年份天干地支代码_农历天干地支算法源代码大全(javascript、vbscript、C#、flash、C++、C等等【转】...
文章提供计算农历天干地支及当年属相的算法源程序,使用的语言为Javascript.VBScript.C#等. 一.C# 代码(1): 原来还准备自己写算法,并研究农历规则.发现那太难和麻烦了,光是农历 ...
- bmp转换tiff c++代码_如何用Java语言将图像转换为PDF?Spire.PDF for Java轻松搞定
对于开发人员,在日常工作中经常也会处理许多文档格式,将图像转换为PDF也是常有的事.那么,在Java语言开发中,如何将图像转换为PDF呢? Spire.PDF for Java支持将多种图像格式(例如 ...
- 进制转换c语言代码_奇怪的C语言代码,有些函数在变量前加上(void)是什么类型转换?...
C语言的语法极其简洁,即使是初次接触编程语言的初学者也能很快学完它的语法.不过,C语言也是一门"灵活得过了头"的编程语言,对于很多初学者来说,编写C语言程序就好像拿着一堆最基本的砖 ...
- wxpython如何分开界面和运行代码_如何调试wxPython Demon源代码及几个细节
在调试demon代码时,常会碰到一些模块无法导入的情况,这是因为好多模块不是Python的标准库, 而是demon安装目录下的库文件,所以学习demon源码的时候,要把这些库copy到同一个目录下, ...
- server接收dtu透传代码_深入ASP.NET Core源代码之 - Web Server Kestrel
测试代码运行环境: OS:Ubuntu 18.04 64bit .NET Core SDK Version: 3.1.101 源代码版本:release/3.1 Kestrel的本质 - Web Se ...
最新文章
- 华为百度再次携手AI人工智能未来科技,为什么不是腾讯阿里巴巴?
- 【数字信号处理】傅里叶变换性质 ( 傅里叶变换时移性质示例 )
- 6、HTML有序列表+无序列表+定义列表
- SAP中创建分部机构凭证号码并且按年度编号
- linux用冒泡排序程序,利用双向走动法改进冒泡排序算法C语言源代码[黑盟核心成员]...
- [PAT乙级]1001 害死人不偿命的(3n+1)猜想
- mysql-安装教程
- AsyncTask实现登录功能,上传图片,get,post
- 诗与远方:无题(一)
- 女粉想要找男朋友,竟是为了...
- Java历史版本官方下载地址(Java 6、Java 7)
- Java电商项目-5.内容管理cms系统
- Javascript模块化编程 (附WebTrends的dcsMultiTrack方法浅述)
- EWSA破解WPA无线密码具体图文教程
- Visual Basic
- docker搭建FastDFS及遇到的问题解决
- “_CRT_SECURE_NO_DEPRECATE”: 未定义宏或在预编译头使用后定义发生改变
- 用python写王字_看这里!Python之web之王!
- 本周最新文献速递20211121
- 总算编译通过了《自制编程语言》一书里的代码!
热门文章
- jetson用什么编译器_TK1入门教程软件篇-安装Nsight
- java中获取配置文件数据_Java 读取、获取配置文件.properties中的数据
- latex生成的pdf论文在打印时页码混乱的解决方法
- java Springboot 生成 二维码 +logo
- FPGrowth算法理论
- VM14安装Mas os 13
- 中国油冷却单元行业市场供需与战略研究报告
- 70部MAYA灯光材质渲染教程合集
- inurl faq.php,seo新手工作就是做外链
- linux shell学习指南,shell脚本学习指南(shell脚本教程详细讲解) 电子扫描版