#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语言源代码相关推荐

  1. java贪吃蛇撞壁转弯代码_java贪吃蛇demo

    import javax.swing.*; import java.awt.*; import java.awt.event.KeyEvent; import java.awt.event.KeyLi ...

  2. app启动页数秒加载 代码_干货 | App 自动化测试痛点(弹框及首页启动加载完成判断处理)

    1. 常见痛点 App 自动化测试中有些常见痛点问题,如果框架不能很好的处理,就可能出现元素定位超时找不到的情况,自动化也就被打断终止了.很容易打消做自动化的热情,导致从入门到放弃.比如下面的两个问题 ...

  3. python字体加粗代码_如何在python docx中加粗行单元格的文本?

    在python docx中,可以通过使用 Rich Text 造型.您应该为模板中需要样式化的特定字符/字符串在字符/字符串的位置提供一个上下文变量.此变量映射到 RichText 具有样式定义(在代 ...

  4. 手机导航列表页面瀑布流图片无限加载代码_搭建内容管理系统CMS(3):从原理、需求到设计,一文看懂动态化页面...

    Sue前面分享的两篇文章,介绍了内容管理系统(CMS)关于内容生产和内容过滤的部分.那么被生产出来并通过过滤的内容,如何呈现给我们的内容消费者呢? 我们都知道,在客户端上的开发实现,版本一旦发布了出去 ...

  5. python四瓣花代码_小蛇学python(14)K-means预测花朵种类

    承接上一篇有关如何处理数据的文章,这一篇,我们来一次实战,让大家感受一下这个过程. Iris数据集是一个比较特别的数据集,早在1936年Ronald Fisher就将此数据集用于了数据挖掘实验.Fis ...

  6. python年份天干地支代码_农历天干地支算法源代码大全(javascript、vbscript、C#、flash、C++、C等等【转】...

    文章提供计算农历天干地支及当年属相的算法源程序,使用的语言为Javascript.VBScript.C#等. 一.C# 代码(1): 原来还准备自己写算法,并研究农历规则.发现那太难和麻烦了,光是农历 ...

  7. bmp转换tiff c++代码_如何用Java语言将图像转换为PDF?Spire.PDF for Java轻松搞定

    对于开发人员,在日常工作中经常也会处理许多文档格式,将图像转换为PDF也是常有的事.那么,在Java语言开发中,如何将图像转换为PDF呢? Spire.PDF for Java支持将多种图像格式(例如 ...

  8. 进制转换c语言代码_奇怪的C语言代码,有些函数在变量前加上(void)是什么类型转换?...

    C语言的语法极其简洁,即使是初次接触编程语言的初学者也能很快学完它的语法.不过,C语言也是一门"灵活得过了头"的编程语言,对于很多初学者来说,编写C语言程序就好像拿着一堆最基本的砖 ...

  9. wxpython如何分开界面和运行代码_如何调试wxPython Demon源代码及几个细节

    在调试demon代码时,常会碰到一些模块无法导入的情况,这是因为好多模块不是Python的标准库, 而是demon安装目录下的库文件,所以学习demon源码的时候,要把这些库copy到同一个目录下, ...

  10. 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 ...

最新文章

  1. 华为百度再次携手AI人工智能未来科技,为什么不是腾讯阿里巴巴?
  2. 【数字信号处理】傅里叶变换性质 ( 傅里叶变换时移性质示例 )
  3. 6、HTML有序列表+无序列表+定义列表
  4. SAP中创建分部机构凭证号码并且按年度编号
  5. linux用冒泡排序程序,利用双向走动法改进冒泡排序算法C语言源代码[黑盟核心成员]...
  6. [PAT乙级]1001 害死人不偿命的(3n+1)猜想
  7. mysql-安装教程
  8. AsyncTask实现登录功能,上传图片,get,post
  9. 诗与远方:无题(一)
  10. 女粉想要找男朋友,竟是为了...
  11. Java历史版本官方下载地址(Java 6、Java 7)
  12. Java电商项目-5.内容管理cms系统
  13. Javascript模块化编程 (附WebTrends的dcsMultiTrack方法浅述)
  14. EWSA破解WPA无线密码具体图文教程
  15. Visual Basic
  16. docker搭建FastDFS及遇到的问题解决
  17. “_CRT_SECURE_NO_DEPRECATE”: 未定义宏或在预编译头使用后定义发生改变
  18. 用python写王字_看这里!Python之web之王!
  19. 本周最新文献速递20211121
  20. 总算编译通过了《自制编程语言》一书里的代码!

热门文章

  1. jetson用什么编译器_TK1入门教程软件篇-安装Nsight
  2. java中获取配置文件数据_Java 读取、获取配置文件.properties中的数据
  3. latex生成的pdf论文在打印时页码混乱的解决方法
  4. java Springboot 生成 二维码 +logo
  5. FPGrowth算法理论
  6. VM14安装Mas os 13
  7. 中国油冷却单元行业市场供需与战略研究报告
  8. 70部MAYA灯光材质渲染教程合集
  9. inurl faq.php,seo新手工作就是做外链
  10. linux shell学习指南,shell脚本学习指南(shell脚本教程详细讲解) 电子扫描版