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

检测网站开发语言工具刷赞网站建设

检测网站开发语言工具,刷赞网站建设,昆明小程序制作,网站建设套餐有哪些贪食蛇#xff08;也叫贪吃蛇#xff09;是一款经典的小游戏。 —————————————————————— 本博客实现使用C语言在Windows环境的控制台中模拟实现贪吃蛇小游戏。 实行的基本功能#xff1a; • 贪吃蛇地图的绘制 • 蛇吃食物的功能#xff08;上、… 贪食蛇也叫贪吃蛇是一款经典的小游戏。 —————————————————————— 本博客实现使用C语言在Windows环境的控制台中模拟实现贪吃蛇小游戏。 实行的基本功能 •  贪吃蛇地图的绘制 •  蛇吃食物的功能上、下、左、右方向键来控制蛇的方向 •  蛇撞墙死亡 •  蛇撞自身死亡 •  计算得分 •  蛇身加速、减速 •  暂停游戏 主要框架主要函数 GameStrat();//游戏开始前的初始化 GameRun();//玩游戏的过程 GameEnd();//善后工作节点的释放游戏流程设计 参考代码 snake.h #pragma once#include locale.h #include stdlib.h #include stdio.h #include windows.h #include stdbool.h#define WALL L□ #define BODY L● #define FOOD L★//蛇默认的起始坐标 #define POS_X 24 #define POS_Y 5#define KEY_PRESS(VK) ( (GetAsyncKeyState(VK) 0x1) ? 1 : 0 )//游戏的状态 enum GAME_STATUS {OK1,//正常运行ESC, //按了ESC键退出正常退出KILL_BY_WALL,//撞墙KILL_BY_SELF //撞到自身 };//蛇行走的方向 enum DIRECTION {UP1,DOWN,LEFT,RIGHT };//蛇身结点的定义 typedef struct SnakeNode {int x;int y;struct SnakeNode* next; }SnakeNode, * pSnakeNode;//贪吃蛇 typedef struct Snake {pSnakeNode pSnake;//维护整条蛇的指针是指向蛇头pSnakeNode pFood;//指向食物的指针int Score;//当前累积的分数int FoodWeight;//一个食物的分数int SleepTime;//蛇休眠的时间休眠的时间越短蛇的速度越快休眠的时间越长蛇的速度越慢enum GAME_STATUS status;//游戏当前的状态enum DIRECTION dir;//蛇当前走的方向//... }Snake, * pSnake;//定位控制台光标位置 void SetPos(int x, int y);//游戏开始前的准备 void GameStart(pSnake ps);//打印欢迎界面 void WelcomeToGame();//绘制地图 void CreateMap();//初始化贪吃蛇 void InitSnake(pSnake ps);//创建食物 void CreateFood(pSnake ps);//游戏运行的整个逻辑 void GameRun(pSnake ps);//打印帮助信息 void PrintHelpInfo();//蛇移动的函数- 每次走一步 void SnakeMove(pSnake ps);//判断蛇头的下一步要走的位置处是否是食物 int NextIsFood(pSnake ps, pSnakeNode pNext);//下一步要走的位置处就是食物就吃掉食物 void EatFood(pSnake ps, pSnakeNode pNext);//下一步要走的位置处不是食物不吃食物 void NotEatFood(pSnake ps, pSnakeNode pNext);//检测是否撞墙 void KillByWall(pSnake ps);//检测是否撞自己 void KillBySelf(pSnake ps);//游戏结束的资源释放 void GameEnd(pSnake ps); snake.c #define _CRT_SECURE_NO_WARNINGS 1#include snake.hvoid SetPos(int x,int y) {//获得设备句柄HANDLE hanlde GetStdHandle(STD_OUTPUT_HANDLE);//根据句柄设置光标的位置COORD pos { x, y };SetConsoleCursorPosition(hanlde, pos); }void WelcomeToGame() {//欢迎信息SetPos(35, 10);printf(欢迎来到贪吃蛇小游戏\n);SetPos(38, 20);system(pause);system(cls);//功能介绍信息SetPos(15, 10);printf(用 ↑ . ↓ . ← . → 来控制蛇的移动F3是加速F4是减速);SetPos(15, 11);printf(加速能得到更高的分数);SetPos(38, 20);system(pause);system(cls); }void CreateMap() {int i 0;//上SetPos(0, 0);for (i 0; i 56; i 2){wprintf(L%lc, WALL);}//下SetPos(0, 26);for (i 0; i 56; i 2){wprintf(L%lc, WALL);}//左for (i 1; i 25; i){SetPos(0, i);wprintf(L%lc, WALL);}//右for (i 1; i 25; i){SetPos(56, i);wprintf(L%lc, WALL);} }void InitSnake(pSnake ps) {//创建5个蛇身的结点pSnakeNode cur NULL;int i 0;for (i 0; i 5; i){cur (pSnakeNode)malloc(sizeof(SnakeNode));if (cur NULL){perror(InitSnake():malloc());return;}cur-x POS_X 2 * i;cur-y POS_Y;cur-next NULL;//头插法if (ps-pSnake NULL){ps-pSnake cur;}else{cur-next ps-pSnake;ps-pSnake cur;}}//打印蛇身cur ps-pSnake;while (cur){SetPos(cur-x, cur-y);wprintf(L%lc, BODY);cur cur-next;}//贪吃蛇的其他信息初始化ps-dir RIGHT;ps-FoodWeight 10;ps-pFood NULL;ps-Score 0;ps-SleepTime 200;ps-status OK; }void CreateFood(pSnake ps) {int x 0;int y 0;again:do{x rand() % 53 2;y rand() % 24 1;} while (x % 2 ! 0);//坐标和蛇的身体的每个节点的做坐标比较pSnakeNode cur ps-pSnake;while (cur){if (x cur-x y cur-y){goto again;}cur cur-next;}//创建食物pSnakeNode pFood (pSnakeNode)malloc(sizeof(SnakeNode));if (pFood NULL){perror(CreateFood()::malloc());return;}pFood-x x;pFood-y y;ps-pFood pFood;SetPos(x, y);wprintf(L%lc, FOOD);}void GameStart(pSnake ps) {//设置控制台的信息窗口大小窗口名system(mode con cols100 lines30);system(title 贪吃蛇);//隐藏光标HANDLE handle GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO CursorInfo;GetConsoleCursorInfo(handle, CursorInfo);//获取控制台光标信息CursorInfo.bVisible false;SetConsoleCursorInfo(handle, CursorInfo);//打印欢迎信息WelcomeToGame();//绘制地图CreateMap();//初始化蛇InitSnake(ps);//创建食物CreateFood(ps); }void PrintHelpInfo() {SetPos(62, 15);printf(1.不能穿墙不能咬到自己);SetPos(62, 16);printf(2.用 ↑.↓.←.→ 来控制蛇的移动); SetPos(62, 17);printf(3.F3是加速F4是减速);SetPos(62, 19);printf(版权比特就业课); }void pause() {while (1){Sleep(100);if (KEY_PRESS(VK_SPACE)){break;}} }int NextIsFood(pSnake ps, pSnakeNode pNext) {if (ps-pFood-x pNext-x ps-pFood-y pNext-y)return 1;//下一个坐标处是食物elsereturn 0; }void EatFood(pSnake ps, pSnakeNode pNext) {pNext-next ps-pSnake;ps-pSnake pNext;//打印蛇pSnakeNode cur ps-pSnake;while (cur){SetPos(cur-x, cur-y);wprintf(L%lc, BODY);cur cur-next;}ps-Score ps-FoodWeight;//释放旧的食物free(ps-pFood);//新建食物CreateFood(ps); }void NotEatFood(pSnake ps, pSnakeNode pNext) {//头插法pNext-next ps-pSnake;ps-pSnake pNext;//释放尾结点pSnakeNode cur ps-pSnake;while (cur-next-next){SetPos(cur-x, cur-y);wprintf(L%lc, BODY);cur cur-next;}//将尾节点的位置打印成空白字符SetPos(cur-next-x, cur-next-y);printf( );free(cur-next);cur-next NULL;//易错 }//检测是否撞墙 void KillByWall(pSnake ps) {if (ps-pSnake-x 0 ||ps-pSnake-x 56 ||ps-pSnake-y 0 ||ps-pSnake-y 26){ps-status KILL_BY_WALL;} }//检测是否撞自己 void KillBySelf(pSnake ps) {pSnakeNode cur ps-pSnake-next;//从第二个节点开始while (cur){if (cur-x ps-pSnake-x cur-y ps-pSnake-y){ps-status KILL_BY_SELF;return;}cur cur-next;} }void SnakeMove(pSnake ps) {pSnakeNode pNext (pSnakeNode)malloc(sizeof(SnakeNode));if (pNext NULL){perror(SnakeMove()::malloc());return;}pNext-next NULL;switch (ps-dir){case UP:pNext-x ps-pSnake-x;pNext-y ps-pSnake-y - 1;break;case DOWN:pNext-x ps-pSnake-x;pNext-y ps-pSnake-y 1;break;case LEFT:pNext-x ps-pSnake-x-2;pNext-y ps-pSnake-y;break;case RIGHT:pNext-x ps-pSnake-x2;pNext-y ps-pSnake-y;break;}//下一个坐标处是否是食物if (NextIsFood(ps, pNext)){//是食物就吃掉EatFood(ps, pNext);}else{//不是食物就正常一步NotEatFood(ps, pNext);}//检测撞墙KillByWall(ps);//检测撞到自己KillBySelf(ps); }void GameRun(pSnake ps) {//打印帮助信息PrintHelpInfo();do{//当前的分数情况SetPos(62, 10);printf(总分:%5d\n, ps-Score);SetPos(62, 11);printf(食物的分值:%02d\n, ps-FoodWeight);//检测按键//上、下、左、右、ESC、空格、F3、F4if (KEY_PRESS(VK_UP) ps-dir ! DOWN){ps-dir UP;}else if (KEY_PRESS(VK_DOWN) ps-dir ! UP){ps-dir DOWN;}else if (KEY_PRESS(VK_LEFT) ps-dir ! RIGHT){ps-dir LEFT;}else if (KEY_PRESS(VK_RIGHT) ps-dir ! LEFT){ps-dir RIGHT;}else if (KEY_PRESS(VK_ESCAPE)){ps-status ESC;break;}else if (KEY_PRESS(VK_SPACE)){//游戏要暂定pause();//暂定和回复暂定}else if(KEY_PRESS(VK_F3)){if (ps-SleepTime 80){ps-SleepTime - 30;ps-FoodWeight 2;}}else if (KEY_PRESS(VK_F4)){if (ps-FoodWeight 2){ps-SleepTime 30;ps-FoodWeight - 2;}}//走一步SnakeMove(ps);//睡眠一下Sleep(ps-SleepTime);} while (ps-status OK); }void GameEnd(pSnake ps) {SetPos(15, 12);switch (ps-status){case ESC:printf(主动退出游戏正常退出\n);break;case KILL_BY_WALL:printf(很遗憾撞墙了游戏结束\n);break;case KILL_BY_SELF:printf(很遗憾咬到自己了游戏结束\n);break;}//释放贪吃蛇的链表资源pSnakeNode cur ps-pSnake;pSnakeNode del NULL;while (cur){del cur;cur cur-next;free(del);}free(ps-pFood);ps NULL; } test.c #define _CRT_SECURE_NO_WARNINGS 1#include snake.hvoid test() {//创建贪食蛇int ch 0;do{Snake snake { 0 };GameStart(snake);//游戏开始前的初始化GameRun(snake);//玩游戏的过程GameEnd(snake);//善后的工作SetPos(20, 15);printf(再来一局吗(Y/N):);ch getchar();getchar();// 清理\n} while (ch Y || ch y); }int main() {//修改适配本地中文环境setlocale(LC_ALL, );test();//贪吃蛇游戏的测试SetPos(0, 27);return 0; } 这个博客如果对你有帮助给博主一个免费的点赞就是最大的帮助❤ 欢迎各位点赞收藏和关注哦❤ 如果有疑问或有不同见解欢迎在评论区留言哦❤ 后续我会一直分享双一流211西北大学软件C数据结构CLinuxMySQL的学习干货以及重要代码的分享
http://www.dnsts.com.cn/news/36565.html

相关文章:

  • 响应式购物网站西南网架公司
  • 网站开发技术写什么内容h5自适应网站源码
  • 贵州省建设项目备案查询网站免费创建网站平台
  • 怎么让网站自适应新东方烹饪学校
  • 大型网站建设设备免费的工程信息网站
  • 互联网官方网站四川网站建设培训
  • 手机免费制作网站模板邯郸有设计网站的吗
  • 自己建设网站网站赚钱网站地址栏图标文字
  • 建设自动弹出qq对话框的网站众筹网站怎么做
  • 企业网站建设需要哪些软件网站系统繁忙怎么办
  • 重庆知名网站制作公司thinkphp开发企业网站
  • 建站宝盒下载淘宝短网址生成
  • 站点-将网站添加到区域变灰色无法添加如何解决如何编辑网站内容
  • 建网站的支付安全wordpress 内置浏览量
  • 南宁一站网网络技术有限公司网站设计比例
  • 网站建设推广合同书互联网营销师考试时间
  • 高端网站开发步骤取商标名字神器
  • 全新微信号2元一个自动下单优化方案2021版英语答案
  • 网站导入免费入口
  • 大型网站建设托管服务谷歌广告上海有限公司
  • wordpress建外贸网站中小型网站建设怎么样
  • 网站建设具体要求网站建设小白到精通需要
  • 建设网站方面的知识滑动网站
  • 东莞网站建设(信科分公司)深圳网站设计公司费用多少
  • 优秀网站设计流程wix做的网站
  • 黑色网站源码深圳宝安区有哪些街道
  • ppt模板下载的网站有哪些简单网页制作成品代码
  • 网站备案号的链接去成都旅游攻略
  • 丽水网站建设企业潍坊网站建设wfxtseo
  • 移动应用开发主要学什么就业如何兰州网站seo费用