当前位置: 首页 > news >正文

大型国有企业网站建设河南省豫建设计院网站

大型国有企业网站建设,河南省豫建设计院网站,seo三人行论坛,wordpress数据库断开#x1f4dd;个人主页#xff1a;认真写博客的夏目浅石. #x1f4e3;系列专栏#xff1a;夏目的C语言宝藏 文章目录 前言一、头文件包含二、创建蛇与食物的结构体三、游戏的初始化四、游戏的绘画事件五、蛇的移动事件六、输入方向七、生成食物八、吃食物九、游戏失败的判定… 个人主页认真写博客的夏目浅石. 系列专栏夏目的C语言宝藏 文章目录 前言一、头文件包含二、创建蛇与食物的结构体三、游戏的初始化四、游戏的绘画事件五、蛇的移动事件六、输入方向七、生成食物八、吃食物九、游戏失败的判定十、main函数总结 前言 我们曾经都玩过贪吃蛇游戏所以我今天学习了C语言就想学习然后写一下。 一、头文件包含 #includestdio.h #includegraphics.h //图形处理需要包含的库文件 #includemmsystem.h //windows多媒体接口 #includeconio.h //读取键盘输入 #includetime.h //随机数种子 #includestdlib.h //内存分配包含完头文件后进行一些预处理操作 #pragma comment(lib,winmm.lib)//多媒体接口 #define NUM 200; #define SIZE 10 enum Ch{ up72,down80,left75,right77} ; 二、创建蛇与食物的结构体 贪吃蛇是基于帧驱动而不是事件驱动的程序。 开发者只需要处理每一帧蛇的变化而不是处理出现的事件(用户输入蛇吃到食物)。 easyX提供了绘制填充矩形的API fillrectangle。 我们把窗口分割成无数个小方格蛇的身体和食物绘制在方格的点中。 贪吃蛇中的蛇是一个集合储存是每个方块的x和y坐标。 蛇移动的本质是 头 向当前方向移动一个单元格然后其他的身体格坐标变成上一个格的坐标。 食物是一个点只需要储存x和y坐标就可以表示。 只有蛇头碰到食物才算吃到食物蛇的身体变长实质上是蛇是吃到食物后移动时加入一个位置并设置成移动前最后一个位置的坐标 根据上述描述我们可以构建对应的结构体 struct pos //蛇身坐标 {int x;int y; }; struct snake {int n; //初始化蛇身长度Ch ch; //蛇前进的方向pos szb[3265]; //蛇的坐标数组 }; struct food {int x;int y;bool iseat; //判断食物是否被吃 };//创建一个蛇与食物snake s; food f;三、游戏的初始化 代码如下示例 void gameinit() {srand((unsigned int)time(NULL));//随机数种子用于随机生成食物s.n 2; //蛇的初始长度可以自己设定s.ch right;//蛇的初始方向s.szb[0].x100;s.szb[0].y100;s.szb[1].x 90;s.szb[1].y 100;//蛇的初始位置坐标f.iseat true; }四、游戏的绘画事件 代码如下示例 cleardevice(); //每次绘画都要进行一次清屏setfillcolor(RED); //蛇头颜色fillrectangle(s.szb[0].x, s.szb[0].y,s.szb[0].x SIZE, s.szb[0].y SIZE);//SIZE在预处理是已经定义表示每个蛇身的大小for (int i 0; i s.n; i) {rectangle(s.szb[i].x, s.szb[i].y,s.szb[i].x SIZE, s.szb[i].y SIZE);} //生成矩形蛇setfillcolor(GREEN);//食物颜色fillroundrect(f.x, f.y, f.x SIZE, f.y SIZE,5,5);//生成圆形食物五、蛇的移动事件 代码如下示例 {for (int i s.n - 1; i 0; i--){s.szb[i].x s.szb[i - 1].x;s.szb[i].y s.szb[i - 1].y; //通过数组的变换来实现蛇的移动}switch (s.ch)//ch枚举类型在预处理时已经定义{case up:s.szb[0].y - SIZE;//由于在窗口坐标系中y方向是向下的所以向上移动需要减去一个sizebreak;case down:s.szb[0].y SIZE;break;case left:s.szb[0].x - SIZE;break;case right:s.szb[0].x SIZE;break;} } 六、输入方向 代码如下示例 void changech() {char key;key _getch();switch (key){case up:if (s.ch ! down)s.ch up;break;case down:if (s.ch ! up)s.ch down;break;case left:if (s.ch ! right)s.ch left;case right:if (s.ch ! left)s.ch right;} } 七、生成食物 代码如下示例 void creatfood() {bool flag false;if (f.iseat true) {while (1){flag false;//设定flag判断食物是否与蛇身重合f.x rand() % 68*10;f.y rand() % 48*10;//食物的随机生成for (int i 0; i s.n; i){if (f.x s.szb[i].x f.y s.szb[i].y){flag true;break;}}if (!flag){f.iseat false;break;}//上面部分为判断食物是否与蛇身重合}} }八、吃食物 代码如下示例 void eatfood() {if (s.szb[0].x f.x s.szb[0].y f.y)//如果蛇头与食物重合那么食物就被吃掉了{f.iseat true;s.n;} }九、游戏失败的判定 代码如下示例 因为我初始化的窗口为640*480if判断的范围打击可以根据自己窗口大小设定。 int gameover() {if (s.szb[0].x 0 || s.szb[0].x640 || s.szb[0].y 0 || s.szb[0].y480){return 1;}for (int i 1; i s.n; i){if (s.szb[0].x s.szb[i].x s.szb[0].y s.szb[i].y){return 1;}}return 0; }十、main函数 代码如下示例 int main() {initgraph(680,480);mciSendString(Lopen 7895.mp3, 0, 0, 0);mciSendString(Lplay 7895.mp3, 0, 0, 0);//添加音乐必须加上这个预处理指令#pragma comment(lib,winmm.libint n 0;gameinit();while (1) {while (!_kbhit()){snakemove();drawgame();creatfood();eatfood();n gameover();if (n)break;Sleep(100);}if (n)break;changech();}closegraph();getchar();return 0; }总结 贪吃蛇游戏的难点就在于蛇身的变化与移动只要这两个问题解决后其他的都很好想。封面就是运行后的结果。
http://www.w-s-a.com/news/411255/

相关文章:

  • 应用网站如何做营销型网站的重要特点
  • 怎么样百度搜到自己的网站加强社区网站建设
  • 建设网站所需技术wordpress延时加载js
  • 网站建设沈阳搜云seo
  • 怎么申请免费的网站空间微信公众平台注册收费吗
  • 东营网站搭建最基本的网站设计
  • 网站建设技术的发展最近的国际新闻大事
  • 德州有名的网站建设公司网站如何做引流
  • 建设一个收入支出持平的网站网络推广计划书格式
  • 什么是网站黑链全球新冠疫苗接种率
  • 网站开发 chrome gimp网站不备案做seo没用
  • 织梦校园招生网站源码沪佳哪个好
  • 建设企业网站可信度软件产品如何做网站推广
  • 网站建设企业号助手贵阳景观设计公司
  • 网站开发第三方建设银行个人网站显示不了
  • 无锡兼职做网站郑州网站建设搜索优化
  • iis禁止通过ip访问网站品牌策划案例ppt
  • 电子商务网站建设实习seo黑帽优化
  • 如何做好网站建设销售闸北集团网站建设
  • 重庆装饰公司北京官网seo推广
  • 深圳网站设计灵点网络品牌网站充值接口
  • 建设书局 网站国内国际时事图片
  • 成都 网站建设培训学校屏蔽wordpress自带编辑器
  • 公司网站制作工作室中天建设集团有限公司第五建设公司
  • 网站的网页设计毕业设计苏州宣传册设计广告公司
  • 商城网站优化方案注册公司制作网站
  • 政务服务网站建设整改报告wordpress的导航代码
  • 图片素材网站建设做教育网站用什么颜色
  • 快站淘客中转页wordpress商业插件
  • 可信网站网站认证免费软件下载网站免费软件下载网站