Wordpress主页不要全部显示天津seo实战培训

news/2025/10/6 8:24:48/文章来源:
Wordpress主页不要全部显示,天津seo实战培训,温州网站设计案例,游戏代理0加盟费简单贪吃蛇模拟#xff08;C语言版本#xff09; 一、所需win32 API知识二、游戏逻辑实现 一、所需win32 API知识 1.在这儿#xff0c;直接弱化概念#xff0c;把在贪吃蛇中用到的API知识说一下#xff01;  1.1用cmd命令来设置控制台窗口的长宽   1.2.用title 指令… 简单贪吃蛇模拟C语言版本· 一、所需win32 API知识二、游戏逻辑实现 一、所需win32 API知识 1.在这儿直接弱化概念把在贪吃蛇中用到的API知识说一下  1.1用cmd命令来设置控制台窗口的长宽   1.2.用title 指令设置控制台窗口的名字 #include stdio.h #include windows.h int main() {//设置控制台尺寸system(mode con cols100 cols30);//设置控制台名字system(title 贪吃蛇);system(pause);return 0; }1.3.表示一个字符在控制台屏幕上的坐标COORD 可以设置一个坐标COORD pos {10,20};  1.4.GetStdHandle函数介绍   *此函数检索指定设备的句柄标准输入标准输出标准错误 原型是HANDLE WINAPI GetStdHandle( In DWORD nStdHandle ); 1.5.GetConsoleCursorInfo  *检索有关指定控制台屏幕缓冲区的游标大小和游标可见性的信息。 BOOL WINAPI GetConsoleCursorInfo( In HANDLE hConsoleOutput, Out PCONSOLE_CURSOR_INFO lpConsoleCursorInfo ); *参数作用 dwSize由光标填充的字符单元格的百分⽐。 此值介于1到100之间。 光标外观会变化范围从完全填充单元格到单元底部的⽔平线条   bVisible:游标的可⻅性。 如果光标可⻅则此成员为TRUE  1.6.SetConsoleCursorInfo BOOL WINAPI SetConsoleCursorInfo( In HANDLE hConsoleOutput, In const CONSOLE_CURSOR_INFO *lpConsoleCursorInfo );  1.7.SetConsoleCursorPosition BOOL WINAPI SetConsoleCursorPosition( In HANDLE hConsoleOutput, In COORD dwCursorPosition ); 设置指定控制台屏幕缓冲区中的光标位置我们将想要设置的坐标信息放在COORD类型的pos中调⽤SetConsoleCursorPosition函数将光标位置设置到指定的位置 //设置一个函数用于定位位置 void SetPos(short x, short y) { COORD pos { x,y };HANDLE handle GetStdHandle(STD_OUTPUT_HANDLE);//设置位置SetConsoleCursorPosition(handle, pos); }1.8.GetAsyncKeyState SHORT GetAsyncKeyState( [in] int vKey ); 将键盘上每个键的虚拟键值传递给函数函数通过返回值来分辨按键的状态。GetAsyncKeyState 的返回值是short类型在上⼀次调⽤ GetAsyncKeyState 函数后如果返回的16位的short数据中最⾼位是1说明按键的状态是按下如果最⾼是0说明按键的状态是抬起如果最低位被置为1则说明该按键被按过否则为0。 如果我们要判断⼀个键是否被按过可以检测GetAsyncKeyState返回值的最低值是否为1.   要判断一个键盘上的键是否按过要看GetAsyncKeyState返回值的最低位是否是1如果最低位是1则表示按键按过做出相应的操作如果最低位是0则表示按键没按过不执行任何操作 #define KEY_PRESS(VK) ((GetAsyncKeyState(VK) 0x1)? 1:0) int main() {//按键控制模块while (1){if (KEY_PRESS(VK_NUMPAD0)){printf(0\n);}else if (KEY_PRESS(VK_NUMPAD1)){printf(1);}}return 0; }1.9.打印宽字符 宽字符x轴占两格子Y轴占一个格子 #include locale.h int main() {setlocale(LC_ALL, );wchar_t ch1 L●;wchar_t ch2 L★;printf(%c%c\n, a, b);wprintf(L%c\n, ch1);wprintf(L%c\n, ch2);return 0; }二、游戏逻辑实现 首先对于现在的我来说写这样一个贪吃蛇还是很难的写这个东西让我感觉最深刻的是枚举类型的运用这是一个好东西还有结构体的运用能够学到大概一个简答的东西怎么组织怎么来写这是很重要的一点看整个代码不是很难但是如果你自己要组织出来要写出来还是很难得特别是枚举的应用  1.数据存储结构的设   首先蛇的每一个节点都要存储选用链表结构来存储蛇的每一个节点的数据蛇吃的食物也是一个节点所以可以直接定义 typedef struct SnakeNode {//存储坐标信息int x;int y;struct SnakeNode* next; }SnakeNode,*pSnakeNode;蛇的方向和游戏状态可以用枚举类型一一列举我认为这说的这个游戏设计最好的地方这个方面跟能让你感受枚举的作用 enum DIRECTION {UP 1,DOWN,LEFT,LEFT };enum GAME_STATE {OK 1,//正常运行ESC,//按ESC退出游戏KILL_BY_WALL,//撞墙死亡退出游戏KILL_BY_SELF //撞自己死亡退出游戏 };这儿再说一下枚举这样写也看不出来有什么作用但是到后面设计的时候有奇效   下面来定义一个结构体存放整个贪吃蛇游戏中所用到的所有信息 struct Snake {//定义蛇头pSnakeNode pSnake;//定义食物pSnakeNode pFood;//方向 DIRECTION Direction;//状态GAME_STATE GameState;//获得的总分int Score;//食物的分数int FoodWeight;//睡眠时间//决定贪吃蛇速度的快慢int SleepTime; };2整个思路设计 3.游戏逻辑实现 //先写测试代码Test.c void 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() {//修改适配本地中文环境srand((unsigned int)time(NULL));setlocale(LC_ALL, );//测试贪吃蛇test();SetPos(0, 28);return 0; }//写Snake.c文件各个逻辑的写法时间不够详细不说了 #include Snake.h//设置光标位置的函数void SetPos(short x, short y) {COORD pos {x,y};HANDLE houtput NULL;houtput GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorPosition(houtput, pos); } void WelcomeToGame() {//欢迎信息SetPos(40, 12);printf(欢迎来到贪吃蛇游戏!\n);SetPos(41, 18);system(pause);system(cls);//功能介绍信息SetPos(29, 12);printf(用↑.↓.←.→分别控制蛇的移动F3为加速F4为减速\n);SetPos(29, 13);printf(加速将能得到更高分数!);SetPos(29,20);system(pause);system(cls); }void CreatMap() {//上SetPos(0, 0);for (int i 0; i 56; i 2){wprintf(L%lc, WALL);}//SetPos(57, 0);//printf(----X);//wprintf(L%lc, L┉);//wprintf(L%lc, L▶);//下SetPos(0, 26);for (int i 0; i 56; i 2){wprintf(L%lc, WALL);}//左SetPos(0, 1);for (int i 1; i 25; i){wprintf(L%lc\n, WALL);}//SetPos(0, 27);//wprintf(L%lc\n, L┋);//wprintf(L%lc, L▼); //printf(Y);//右SetPos(56, 1);for (int i 1; i 25; i){wprintf(L%lc\n, WALL);SetPos(56, 1 i);} }void InitSnake(pSnake ps) {//创建5个蛇身节点pSnakeNode cur NULL;for (int i 0; i 5; i){cur (pSnakeNode)malloc(sizeof(SnakeNode));if (cur NULL){perror(InitSnake malloc fail!);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, BOOY);cur cur-next;}//贪吃蛇其它信息初始化ps-dir RIGHT;ps-FoodWeight 10;ps-pFood NULL;ps-Score 0;ps-SleepTime 400; //msps-status OK; }void CreatFood(pSnake ps) {int x 0;int y 0;//处理随机生成的坐标不能在墙外面,x必须是2的倍数 again:do {x rand() % 53 2;y rand() % 25 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(CreatFood malloc fail!);return;}pFood-x x;pFood-y y;pFood-next NULL;ps-pFood pFood;SetPos(x, y);wprintf(L%lc, FOOD); } void PrintHelpInfo() {SetPos(62, 15);printf(1.不能穿墙不能咬到自己);SetPos(62, 16);printf(2.用↑.↓.←.→分别控制蛇的移动);SetPos(62, 17);printf( F3为加速F4为减速);SetPos(62, 18); }void pause() {//while (1){Sleep(200);//如果按键按下跳出循环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;}return 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, BOOY);cur cur-next;}ps-Score ps-FoodWeight;//释放旧的食物free(ps-pFood);//创造新的食物CreatFood(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, BOOY);cur cur-next;}//打印倒数第二个节点SetPos(cur-x, cur-y);wprintf(L%lc, BOOY);//最后一个节点pSnakeNode tail cur-next;cur-next NULL;//将尾结点的地方打印成空格SetPos(tail-x, tail-y);printf( );free(tail);tail NULL;//打印蛇身 } //检测撞墙 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;} } //检测撞到自己 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;//结束break;}cur cur-next;} } void SnakeMove(pSnake ps) {pSnakeNode pnext (pSnakeNode)malloc(sizeof(SnakeNode));if (pnext NULL){perror(SnakeMove malloc fail);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 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();//绘制地图CreatMap();//初始化蛇InitSnake(ps);//创建食物CreatFood(ps); }void GameRun(pSnake ps) {//打印帮助信息PrintHelpInfo();do{//do...while循环先进去打印分数//分数SetPos(62, 10);printf(总分%5d\n, ps-Score);SetPos(62, 11);printf(食物的分值%02d\n, ps-FoodWeight);//检测按键//上 下 左 右 ESC 空格 F3 F4//下面怎么控制按下按键做出对应的响应的操作//它是通过枚举来控制按键对应的操作if (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;//按下ESC做出的响应是跳出这个游戏的循环break; }else if (KEY_PRESS(VK_SPACE)){//暂停pause(); //暂停和恢复暂停//第一次按下空格键检测到则调用了pause函数//程序死循环睡眠//再次按下则在pause函数里面响应跳出死循环执行其它操作}else if (KEY_PRESS(VK_F3)){//还是通过枚举来控制if (ps-SleepTime 80){ps-SleepTime - 30;ps-FoodWeight 2;}}else if (KEY_PRESS(VK_F4)){//F4按下对应的响应if (ps-FoodWeight 2){ps-SleepTime 30;ps-FoodWeight - 2;}}//睡眠一下//停留一下执行一下停留时间的长短由Sleep控制Sleep(ps-SleepTime);// 走一步SnakeMove(ps);} while (ps-status OK); }void GameEnd(pSnake ps) {SetPos(25, 12);switch (ps-status){case ESC:printf(主动退出游戏);break;case KILL_BY_WALL:printf(撞墙而死);break;case KILL_BY_SELF:printf(撞自身而死);break;}//释放所有申请的节点pSnakeNode cur ps-pSnake;while (cur){pSnakeNode next cur-next;free(cur);cur next;}ps-pSnake NULL;free(ps-pFood);ps-pFood NULL; }//写Snake.h文件 #pragma once #include stdio.h #include locale.h #include windows.h #include stdlib.h #include stdbool.h #include time.h#define KEY_PRESS(VK) ((GetAsyncKeyState(VK) 0x1)? 1:0)#define WALL L□ #define BOOY L● #define FOOD L★ //蛇起始位置 #define POS_X 24 #define POS_Y 5//控制游戏状态 enum GAME_STATUS {OK 1,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 GameStart(pSnake ps); void SetPos(short x, short y); void WelcomeToGame(); void CreatMap(); void InitSnake(pSnake ps); void CreatFood(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); //检测撞墙 KillByWall(pSnake ps); //检测撞到自己 KillBySelf(pSnake ps); void GameEnd(pSnake ps); void SetPos(short x, short y);完结

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

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

相关文章

版权诉讼下的MiniMax:AI独角兽的上市迷途

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087 添加图片注释,不超过 140 字(可选)AI产业的终极竞争,终将是技…

Unity UI 性能优化终极指南 — Image篇 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

HTB Eureka靶机渗透实战 - Spring Boot堆转储与Bash算术注入漏洞利用

本文详细记录了HTB Eureka靶机的完整渗透过程,从Spring Boot Actuator堆转储端点暴露导致的凭证泄露,到Spring Cloud Gateway配置劫持,最后通过Bash算术注入实现权限提升。侦察 Nmap扫描发现三个开放端口:SSH (22)…

电子书网站怎么做中国建设工程信息网官网查询

2019独角兽企业重金招聘Python工程师标准>>> 没什么想说的,除了感谢和继续努力外,感谢所有的 oscers 们、感谢 OSC 曾经和现在的小伙伴、感谢我们的合作伙伴。 今年还有4个月,主要工作安排包括: TeamOSC 上线 PaaSO…

吉安市建设规划局网站中山网站网站建设

文章目录 【计算机组成原理2016年真题44题-9分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2016年真题45题-14分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2016年真题44题-9分】 假定CPU主频为5…

实用指南:Matlab实现LSTM-SVM回归预测,作者:机器学习之心

实用指南:Matlab实现LSTM-SVM回归预测,作者:机器学习之心2025-10-06 08:13 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importa…

上海代理记账公司排名黑帽seo是什么意思

Nimbus server, 首先从启动命令开始, 同样是使用storm命令"storm nimbus”来启动看下源码, 此处和上面client不同, jvmtype"-server", 最终调用"backtype.storm.daemon.nimbus"的mainnimbus是用clojure实现的, 但是clojure是基于JVM的, 所以在最终发布…

手机照片太多了存哪里? - 实践

手机照片太多了存哪里? - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&quo…

时隔十六年的南京之旅

上一次来,还是一个没有灌木高的小娃娃。我但凡想起南京,是听不懂的金陵话,早上吃的鱼香肉丝包,中午回家要洗的澡,和晚上坐在地板上看大圣哥玩PSP。那是一段非常久远的回忆了,我在尽力的套用相处定理,一旦回到过…

实用指南:Python编程基础(四) | if语句

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

高贵的北上广深,没有父母托举,90后很难成家

微信视频号:sph0RgSyDYV47z6快手号:4874645212抖音号:dy0so323fq2w小红书号:95619019828B站1:UID:3546863642871878B站2:UID: 3546955410049087北上广深,父母不给托举的话,多少人敢结婚?能结婚? 你有没有发现…

视觉设计网站寓意好的公司名字大全免费

什么是Docker?它的主要功能是什么? Docker是一种开源的容器化平台,用于构建、部署和运行应用程序。它的主要功能包括:快速构建、分发和运行应用程序的容器化环境,实现应用程序的可移植性和可扩展性。 Docker和虚拟机…

使用AI图像服务规模化视觉内容生产

本文介绍了某中心云平台中集成的AI图像服务,该服务提供9种专业图像编辑工具,包括对象擦除、背景移除、搜索重着色等功能,帮助创意团队高效生产视觉内容,无需在不同系统间切换即可完成复杂编辑任务。使用AI图像服务…

本地Markdown开源知识库选型指南 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:基于贝叶斯优化神经网络的光伏功率预测综述

实用指南:基于贝叶斯优化神经网络的光伏功率预测综述pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

详细介绍:ROS2与Unitree机器人集成指南

详细介绍:ROS2与Unitree机器人集成指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

长安镇网站建设公司广告公司起名用字大全

yapi是使用vue框架开发的,借助nodejs 前端直接访问的mongodb数据库,离线安装yapi步骤如下 下载离线安装包 下载地址 https://download.csdn.net/download/qq445829096/88778418 离线安装包先复制到 dev/yapi目录(根据自己习惯自定义目录) node-v12.13.0-linux-x64.tar.xz …

外贸网站怎么营销网络营销策略方案

大家好, 在本文中,我们将演示如何正确集成GWT和EJB3 ,以实现示例项目,使用maven进行构建并将其部署在JBoss 5.1应用服务器上。 实际上,您可以轻松地更改maven构建文件中的依赖关系,并将项目部署到您喜欢的…

黑龙江农垦建设局网站网络营销网站源码

centos6.4 32位的vps上装了lnmp以后,phpmyadmin无法连接mysql服务器,ssh命令行里mysql -uroot -p 命令后老是出现拒绝连接的情况。php程序里也是拒绝连接。尝试过修改phpmyadmin的config.inc.php文件,尝试过修改my.cnf文件,尝试过…

plexe 通过提示词构建机器学习模型

plexe 通过提示词构建机器学习模型plexe是一个可以通过提示词构建机器模型的框架 内部如何处理的计划,分析用户意图以及数据,开发模型构建测试 代码生成,通过比较知名的库(tensorflow,pytorch,scikit-learn) 创…