山东省建设工程 评估中心网站宁波网站建设招商加盟

news/2025/10/5 1:20:30/文章来源:
山东省建设工程 评估中心网站,宁波网站建设招商加盟,做招聘网站毕业设计,注册一个新公司需要多少钱当我们不想学习新知识的时候#xff0c;并且特别无聊#xff0c;就会突然先看看别人怎么写游戏的#xff0c;今天给大家分享的是贪吃蛇#xff0c;所需要的知识有结构体#xff0c;枚举#xff0c;以及easy-x图形库的一些基本函数就完全够用了#xff0c;本来我想插入游… 当我们不想学习新知识的时候并且特别无聊就会突然先看看别人怎么写游戏的今天给大家分享的是贪吃蛇所需要的知识有结构体枚举以及easy-x图形库的一些基本函数就完全够用了本来我想插入游戏的音乐但是没找到贪吃蛇的背景音乐所以就没加大家可以参考我之前的博文里面有如何加音乐的教程 包含的头文件 #include stdio.h #include graphics.h//图形库头文件 #include conio.h//_kbhit()函数头文件 #include stdlib.h//srand函数头文件 #include time.h//time()函数头文件初始化界面 int main() {initgraph(640,480);//初始化界面while (1);return 0;}初始化长640宽480的界面while(1);使得界面一直出现 设置背景颜色 int main() {initgraph(640,480);setbkcolor(RGB(31, 29, 66));//设置背景颜色cleardevice();//清空绘图设备while (1);return 0;}setbkcolor中的RGB(31, 29, 66)打开微信,同时按下Alt键A可获取你截图中颜色的RGB 定义蛇的信息结构体枚举定义蛇的方向 #define SNAKE_NUM 500// 最大有500节 struct Snake {int size;//蛇的节数int dir;//蛇的方向int speed;//蛇的速度POINT coor[SNAKE_NUM];//蛇的坐标}snake; enum DIR //表示蛇的方向 {UP,//向上DOWN,//向下LEFT,//向左RIGHT,//向右 };数据初始化 void gameinit() { snake.size 3;//初始化蛇刚开始为三节snake.speed 8;//初始速度是每按一次方向键改变八个像素的位置snake.dir RIGHT;//初始蛇的方向是向右for (int i 0; i snake.size; i){snake.coor[i].x 40 - 10 * i;snake.coor[i].y 10;}}在for循环内定义好每一节的圆心坐标记snake.coor[0].x为蛇头的圆心坐标的横坐标记snake.coor[0].y为蛇头的圆心坐标的纵坐标初始化三节for循环定义这三节的坐标头的圆心坐标为4010中间为3010最后为2010初始化蛇应该是横着的。 整合函数 函数写的太乱我们可以将相同的功能放在一个函数里面比如说将initgraph(640, 480);放在gameinit()里面将画的都放在gamedraw()函数里面。 //数据初始化 void gameinit() {initgraph(640, 480);snake.size 3;snake.speed 8;snake.dir RIGHT;for (int i 0; i snake.size; i){snake.coor[i].x 40 - 10 * i;snake.coor[i].y 10;}} void gamedraw() {BeginBatchDraw();//双缓冲消除闪屏setbkcolor(RGB(31, 29, 66));//设置背景颜色cleardevice();//清空绘图设备//绘制蛇setfillcolor(RED);//设置蛇的颜色for (int i 0; i snake.size; i){solidcircle(snake.coor[i].x, snake.coor[i].y, 5);//循环绘制蛇的三节身体}EndBatchDraw();//双缓冲消除闪屏} int main() {gameinit();gamedraw();while (1);return 0;}在绘制蛇那里setfillcolor(RED);//设置蛇的颜色在设置蛇的颜色下面的循环中是画初始化好的三节蛇的身体solidcircle(snake.coor[i].x, snake.coor[i].y, 5);这个是画实心圆的函数前两个参数为圆的横纵坐标第三个参数是圆的半径 键盘控制移动方向 void keycontrol() {//72 80 75 77if (_kbhit()){switch (_getch()){case w:case W:case 72:if (snake.dir ! DOWN){snake.dir UP;}break;case s:case S:case 80:if (snake.dir ! UP){snake.dir DOWN;}break;case a:case A:case 75:if (snake.dir ! RIGHT){snake.dir LEFT;}break;case d:case D:case 77:if (snake.dir ! LEFT){snake.dir RIGHT;}break;}}}_kbhit()是一个C和C函数用于非阻塞地响应键盘输入事件即键盘敲击。它检查当前是否有键盘输入如果有则返回一个非0值否则返回0。 w,s,a,d对应的虚拟键值为72807577.当_kbhit()返回不为0则有键按下_getch 是 C 语言中常用的一个函数它可以获取用户在控制台输入的一个字符并且不需要回车。当按下方向键后_getch()读取按下的字符将蛇的方向改变成对应的方向键。为什么这里有条件判断语句if,是因为蛇在向一个方向走的时候不能直接往相反的方向走.比如说按下w,往上走除了向下走外向左走和向右走的时候按向上走就可以向上走。 蛇的移动 void snakemove() {for (int i snake.size-1; i0; i--)//身体跟着头移动{snake.coor[i] snake.coor[i - 1];}switch (snake.dir)//头移动{case RIGHT:snake.coor[0].xsnake.speed;if (snake.coor[0].x 640){snake.coor[0].x 0;}break;case UP:snake.coor[0].y- snake.speed;if (snake.coor[0].y 0){snake.coor[0].y 480;}break;case DOWN:snake.coor[0].ysnake.speed;if (snake.coor[0].y 480){snake.coor[0].y 0;}break;case LEFT:snake.coor[0].x-snake.speed;if (snake.coor[0].x 0){snake.coor[0].x 640;}break;}}每次调用snakemove函数让后面每一节等于前面那一节的坐标就能实现尾巴身体跟着头动switch中是此时头移动的方向向哪个方向移动对应方向上的x坐标或者y坐标就或者-snake.speed;比如说向左就是对应x-snake.speed,向右就是xsnake.speed向上就是y-snake.speed向下就是ysnake.speed这里为什么有判断语句if,这里是因为当蛇头到达边界位置的话就可以从相反的边界出来界面的大小是640*480比如说蛇向左走遇到左边界就把蛇头的x坐标置为640. 主函数变化 int main() {gameinit();gamedraw();while (1){gamedraw();keycontrol();snakemove();Sleep(20);}return 0;}将键盘控制函数和蛇的移动的函数放在while循环里面因为要无时无刻地获取从键盘上读来地值和蛇的移动当不加Sleep函数时蛇跑的特别快让程序休眠20ms 视频演示 20230921_173904 食物信息结构体定义 struct food {int x;//食物的横坐标int y;//食物的纵坐标bool flag;//食物是否被吃int r;//食物半径DWORD color;//食物颜色}food;食物信息初始化修改数据初始化函数 //数据初始化 void gameinit() { //设置随机数种子srand((unsigned int)time(NULL));//时间不断变化initgraph(640, 480);//初始化界面snake.size 3;snake.speed 8;snake.dirRIGHT;for (int i 0;isnake.size;i){snake.coor[i].x 40-10*i;snake.coor[i].y 10;}//随机初始化食物的横纵坐标food.x rand() % 640;food.y rand() % 480;food.color RGB(rand() % 256, rand() % 256, rand() % 256);food.r rand() % 10 5;food.flag true;}因为食物的位置颜色以及食物的半径要随机生成必须用到rand函数生成随机数但rand生成的随机数是不变的所以要通过srand函数生成随机数种子食物必须在界面内所以food.xrand()%640的话food.x的范围为0-639同理food.y,以及RGB的三个参数都是0-255的所以对256取余数半径是在0-9之间在加上5食物半径就在5-14之间food.flag 定义的是食物是否被吃掉没被吃掉就为true,吃掉后food.flag变为false. 蛇吃食物 void eatfood() {if (food.flagsnake.coor[0].xfood.x-food.rsnake.coor[0].xfood.xfood.r snake.coor[0].y food.y - food.r snake.coor[0].y food.y food.r){food.flag false;snake.size;}if (!food.flag)//食物消失重新生成一个{food.x rand() % 640;food.y rand() % 480;food.color RGB(rand() % 256, rand() % 256, rand() % 256);food.r rand() % 10 5;food.flag true;}}如果要吃掉食物用蛇头圆心的坐标等于食物圆心的坐标的话是不容易吃到食物的所以只要蛇头的圆心坐标落入以食物圆心做出的外切正方形的范围内的话就算吃到对应食物正方形的边界坐标为food.x-food.r(左边界) food.xfood.r(右边界)food.yfood.r(上边界)food.y-food.r(下边界)只要蛇头圆心落入该范围内就算吃到吃到的话food.flagfalse;表示食物被吃掉并且蛇的长度snake.size;当食物被吃掉后food.flag0,此时!food.flag1;立即生成下一个食物坐标如果这里判断蛇头是否落在食物范围内时如果不加food.flag的话蛇吃第一个食物会由三节直接变成五节 绘制食物修改绘制函数 void gamedraw() {BeginBatchDraw();setbkcolor(RGB(31, 29, 66));//设置背景颜色cleardevice();//清空绘图设备//绘制蛇setfillcolor(RED);//设置蛇的颜色for (int i 0; i snake.size; i){solidcircle(snake.coor[i].x, snake.coor[i].y, 5);}//绘制食物if (food.flag)//如果food.flag1的话就绘制食物{solidcircle(food.x, food.y, food.r);}EndBatchDraw();}主函数修改 int main() {gameinit();gamedraw();while (1){gamedraw();keycontrol();snakemove();eatfood();//增加的Sleep(20);}return 0;}游戏暂停函数 void gamestop()//空格游戏暂停 {if (_kbhit()){if (_getch() ){while (_getch() ! );}}}按下空格游戏暂停_kbhit函数作用上面解释过了然后如果从键盘读取的空格后缓冲区没东西就在一直循环在按一次就继续游戏注意修改的主函数 修改主函数 int main() {gameinit();gamedraw();while (1){gamestop();gamedraw();keycontrol();snakemove();eatfood();Sleep(20);}return 0;}程序源码 #include stdio.h #include graphics.h #include conio.h #include stdlib.h #define SNAKE_NUM 500 enum DIR //表示蛇的方向 {UP,DOWN,LEFT,RIGHT, }; struct Snake//蛇结构体 {int size;//蛇的节数int dir;//蛇的方向int speed;//蛇的速度POINT coor[SNAKE_NUM];//节数}snake; struct food//食物结构体 {int x;int y;bool flag;//食物是否被吃int r;//食物半径DWORD color;//食物颜色}food; //数据初始化 void gameinit() {initgraph(640, 480);snake.size 3;snake.speed 8;snake.dir RIGHT;for (int i 0; i snake.size; i){snake.coor[i].x 40 - 10 * i;snake.coor[i].y 10;}} void gamestop()//空格游戏暂停 {if (_kbhit()){if (_getch() ){while (_getch() ! );}}} void gamedraw()//画函数 {BeginBatchDraw();setbkcolor(RGB(31, 29, 66));//设置背景颜色cleardevice();//清空绘图设备//绘制蛇setfillcolor(RED);//设置蛇的颜色for (int i 0; i snake.size; i){solidcircle(snake.coor[i].x, snake.coor[i].y, 5);}//绘制食物if (food.flag){solidcircle(food.x, food.y, food.r);}EndBatchDraw();} void keycontrol()//键盘控制方向 {//72 80 75 77if (_kbhit()){switch (_getch()){case w:case W:case 72:if (snake.dir ! DOWN){snake.dir UP;}break;case s:case S:case 80:if (snake.dir ! UP){snake.dir DOWN;}break;case a:case A:case 75:if (snake.dir ! RIGHT){snake.dir LEFT;}break;case d:case D:case 77:if (snake.dir ! LEFT){snake.dir RIGHT;}break;}}} void snakemove()//蛇的移动 {for (int i snake.size - 1; i 0; i--)//身体跟着头移动{snake.coor[i] snake.coor[i - 1];}switch (snake.dir)//头移动{case RIGHT:snake.coor[0].x snake.speed;if (snake.coor[0].x 640){snake.coor[0].x 0;}break;case UP:snake.coor[0].y - snake.speed;if (snake.coor[0].y 0){snake.coor[0].y 480;}break;case DOWN:snake.coor[0].y snake.speed;if (snake.coor[0].y 480){snake.coor[0].y 0;}break;case LEFT:snake.coor[0].x - snake.speed;if (snake.coor[0].x 0){snake.coor[0].x 640;}break;}} void eatfood()//吃食物 {if (food.flag snake.coor[0].x food.x - food.r snake.coor[0].x food.x food.r snake.coor[0].y food.y - food.r snake.coor[0].y food.y food.r){food.flag false;snake.size;}if (!food.flag)//食物消失重新生成一个{food.x rand() % 640;food.y rand() % 480;food.color RGB(rand() % 256, rand() % 256, rand() % 256);food.r rand() % 10 5;food.flag true;}} int main() {gameinit();gamedraw();while (1){gamestop();gamedraw();keycontrol();snakemove();eatfood();Sleep(20);}return 0;}程序演示 20230921_184525

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/927759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

aspx网站做app小说网站建设笺池斋

因为偶然要用到Oracle数据库,而平常工作中用的都是mySQL的,所以电脑上安装的都是MySQL的相关服务,今天用到Oracle本地没有,所以自己安装了一个,但是因为不熟悉,安装遇到了很多的坑,因此记录一下…

成都网站建设方案推广zend搭建wordpress

在本文中,我们将回答您在开始使用 React 时可能会问的 9 个常见问题。 1、开始使用 React 需要哪些技能和知识? 在深入研究 React 之前,您应该对以下内容有深入的了解: HTML、CSS 和 JavaScript (ES6)&a…

asp网站开发培训网页设计哪个培训机构好

梯度下降是我们在训练神经网络时用于训练参数的方法,本文总结了目前常用的几种梯度下降算法,包括原理、公式推导、解决的问题,主要要SGD、Momentum、NAG、AdaGrad、AdaDelta、RMSProp、Adam,先贴上手写的笔记,有时间再…

网站怎么做反爬虫wordpress 有赞

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》 ​ ​ ✨ 前言 Web Worker可以将耗时任务放到后台执行,避免阻塞UI。本文将详细介绍Web Worker的用法,让你…

网页制作和网站制作有什么区别建设网站的app

本文发布矩阵(Matrix)的一些初级算法。 一、矩阵的行列式(Determinant) 矩阵行列式是指矩阵的全部元素构成的行列式,设A(a)是数域P上的一个n阶矩阵,则所有A(a)中的元素组成的行列式称为矩阵A的行列式&…

服装服饰设计网站wordpress视频插件a vi

前言 《机器学习-回归问题》知道了回归问题的处理方式,分类问题才是机器学习的重点.从数据角度讲,回归问题可以转换为分类问题的微分 逻辑回归 逻辑回归(Logistics Regression),逻辑回归虽然带有回归字样,但是逻辑回归属于分类算法。但只可…

有引导的网站企业网站免费模板

1 前言 IJKPLAYER在视频render之时,并非简单使用SDL渲染API,而是用了OpenGL ES,再分别在Android和iOS平台做视频的显示;一言以蔽之,OpenGL ES并不能做到直接在窗口上render并显示,而是需要一个中间媒介。这…

北京微信网站建设报价单跨境电商在哪些网站上面做

介绍: zabbix是对服务器资源状态例如、内存空间、CPU、程序运行状态进行检测、设置预警值、短信设置等功能等一款开源工具。配置不当存在未授权,SQL注入漏洞 弱口令 nameadmin&passwordzabbix nameguest&password POST /index.php HTTP/1.1 Host: 192.1…

US$33.25 Key Shell for XHORSE XZKA82EN Exclusively for Hyundai Kia Models 5pcs/lot

Key Shell for XHORSE XZKA82EN Exclusively for Hyundai & Kia ModelsThe Shell for XHORSE XZKA82EN Exclusively for Hyundai & Kia ModelsPackage includes:5pcs x The Shell for XHORSE XZKA82EN Exclusi…

网站开发与维护费用网站多数关键词

宇电的设备使用基于RS-485的自定义协议,协议本身比较简单,只有2条指令: 读:地址代号52H(82) 要读的参数代号00校验码 写:地址代号43H(67)要写的参数代号写入数低字节写…

没有,不要模拟登录的,太慢没有效率

没有,不要模拟登录的,太慢没有效率你说的 “不要模拟登录的,太慢没有效率”,我理解是针对 手机验证码登录 / 签到 这类软件的实现方式里的一种区别:🔹 1. 什么是“模拟登录”?模拟登录 = 程序伪装成用户,去模…

南昌网站开发培训中心建筑行业网站建设

Java使用3DES加密解密的流程①传入共同约定的密钥(keyBytes)以及算法(Algorithm),来构建SecretKey密钥对象SecretKey deskey new SecretKeySpec(keyBytes, Algorithm);②根据算法实例化Cipher对象。它负责加密/解密Cipher c1 Cipher.getInstance(Algor…

高端大气网站推荐房屋设计装修网站

股票普通买卖 股票买入 通过选择委托方向实现股票的买入与卖出,可根据输入的价格自动查询可买数量。 用鼠标点击【买入】,如图所示: 输入股票代码并选中后,选择委托类型,若为限价类型,输入委托价格&#xf…

网站如何获取用户信任如何制作自己的个人网站

转染试剂是瞬时转染生产病毒载体的主要原材料之一。作为上游病毒生产的重要原物料之一,转染试剂对病毒载体的产能具有重要影响。而转染试剂的转染效率、稳定性都直接影响着大规模病毒载体生产的产能与周期。因此,了解PEI转染试剂正确的保存方法对于保障实…

资讯门户类网站模板六安发布

大家好,我是雄雄,前几天总结了下面试别的班时所出现的问题,今天,3班进行了第一次模拟面试。虽然在面试之前千叮咛万嘱咐,但是在正式模拟面试时还是有些问题。一方面由于这样的模拟面试以前没有过,所以紧张过…

版面设计素材网站北京网站设计推荐柚米

OSI七层模型和TCP/IP四层模型 业内普遍的分层方式有两种:OSI七层模型 和TCP/IP四层模型。记忆则为 “应表会传网数物” 关于协议: ① OSI七层模型详解 结构名 功能 主要设备 应用层 是最靠近用户的OSI层。用户接口、应用程序。应用层向应用进程展示…

week01 编码规范

week01 编码规范编码规范文件与目录规范• 头文件引用: 使用 <> 引用系统头文件或预定义路径的头文件,例如 #include <iostream> 。 使用 "" 引用当前目录或相对路径的头文件,例如 #i…

如何做微信ppt模板下载网站珠海企业网站推广服务

当你的计算机知识还撑不起你的学习、工作时&#xff0c;那你就应该静下心来刷计算机等级考试题库-二级C语言试题。1)下列叙述中正确的是( )。A.解决同一个问题的不同算法的时间复杂度一般是不同的B.解决同一个问题的不同算法的时间复杂度必定是相同的C.对同一批数据作同一种处理…

做化妆品注册和注册的网站有哪些大品牌设计公司

栈和队列 栈&#xff08;stack&#xff09;&#xff0c;有些地方称为堆栈&#xff0c;是一种容器&#xff0c;可存入数据元素、访问元素、删除元素&#xff0c;它的特点在于只能允许在容器的一端&#xff08;称为栈顶端指标&#xff0c;英语&#xff1a;top&#xff09;进行加…

做电影网站投资多少钱百度快照收录入口

[TOC]&#xff08;太多了&#xff0c;目录只列出最重要的几个&#xff0c;剩下的同学们自己翻&#xff09; PHP作为一种广泛应用的服务器端脚本语言&#xff0c;在历史上曾曝出过多种安全漏洞。以下是一些PHP漏洞的类别及其简要解释&#xff0c;以及如何解决这些问题&#xff1…