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

陕西有色建设有限公司网站企业信用信息公示系统福建

陕西有色建设有限公司网站,企业信用信息公示系统福建,微信开发者工具在哪里下载,岳阳网站制作公司文章目录一、定义结构体对象二、游戏初始化1. 蛇初始化2. 食物初始化3. 围墙初始化4. 界面初始化三、逻辑编程1. 启动游戏2. 打印成绩3. main函数四、细节处理五、程序源码该篇环境为Visual Studio2022 游戏简述 #xff1a;在控制终端绘画出一个矩阵表示游戏界面(围墙)… 文章目录一、定义结构体对象二、游戏初始化1. 蛇初始化2. 食物初始化3. 围墙初始化4. 界面初始化三、逻辑编程1. 启动游戏2. 打印成绩3. main函数四、细节处理五、程序源码该篇环境为Visual Studio2022 游戏简述 在控制终端绘画出一个矩阵表示游戏界面(围墙)“ ”表示蛇头“ * ”表示蛇身“ # ”表示食物。通过向控制终端输入a、“s”、“w”、d分别表示贪吃蛇向左、向下、向上、向右移动食物为随机出现(同一时刻只有一个食物出现)每吃掉一块食物蛇的移动速度加快且游戏分数10若蛇撞到墙或吃到自身会导致游戏结束并打印游戏分数在终端上。 一、定义结构体对象 该游戏可划分为俩个对象“贪吃蛇”和“食物”对象 而“贪吃蛇”对象 又可划分为“一节蛇头”和“多节蛇身” 1. 定义蛇身结构体 struct BODY {int X; //x 和 y 表示蛇身的一个位置点(坐标)int Y; };2. 定义蛇对象 其中 body[0]为蛇头其余都表示蛇身 struct SNAKE {struct BODY body[WIDE * HIGH]; //WIDE和HIGH表示游戏界面的宽和高int size; }snake;3. 定义食物对象 struct FOOD {int X; //表示食物的位置点int Y; }food;二、游戏初始化 1. 蛇初始化 void initSnake(void) {snake.size 2;snake.body[0].X WIDE / 2; //蛇头初始化snake.body[0].Y HIGH / 2;snake.body[1].X WIDE / 2 - 1; //蛇的一节身体初始化snake.body[1].Y HIGH / 2;return; }2. 食物初始化 void initFood(void) {food.X rand() % WIDE; food.Y rand() % HIGH; return; }3. 围墙初始化 //画墙 void initWall(void) {for (size_t i 0; i HIGH; i){for (size_t j 0; j WIDE; j){if (j WIDE)cout |;else if (i HIGH)cout _;elsecout ;}cout endl;} }4. 界面初始化 void initUI(void) {COORD coord {0}; //光标移动的位置//画蛇for (size_t i 0; i snake.size; i){coord.X snake.body[i].X;coord.Y snake.body[i].Y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);if(i0)putchar();else putchar(*);}//去除蛇尾coord.X lastX;coord.Y lastY;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);putchar( );//画食物coord.X food.X;coord.Y food.Y;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);putchar(#); }三、逻辑编程 1. 启动游戏 void playGame(void) {char key d;//判断蛇撞墙while (snake.body[0].X 0 snake.body[0].X WIDE snake.body[0].Y 0 snake.body[0].Y HIGH) {initUI(); //更新蛇//接收用户按键输入if (_kbhit()) { //为真时说明用户按下按键 _kbhit()不阻塞判断用户输入key _getch(); // _getch()不回显读取一个字符}switch (key) {case w: kx 0; ky -1; break;case s: kx 0; ky 1; break;case a: kx -1; ky 0; break;case d: kx 1; ky 0; break;default: break;}//蛇头撞身体 蛇头任一一节身体for (size_t i 1; i snake.size; i){if (snake.body[0].X snake.body[i].X snake.body[0].Y snake.body[i].Y)return; //游戏结束}//蛇头撞食物if (snake.body[0].X food.X snake.body[0].Y food.Y) {initFood(); //食物消失 snake.size; //身体增长score 10; //加分sleepSecond - 25;//加速}//存储蛇尾坐标lastX snake.body[snake.size - 1].X;lastY snake.body[snake.size - 1].Y;//蛇移动前一节身体给后一节身体赋值for (size_t k snake.size - 1; k 0; k--){snake.body[k].X snake.body[k - 1].X;snake.body[k].Y snake.body[k - 1].Y;}snake.body[0].X kx; //蛇头坐标根据用户按键 修改snake.body[0].Y ky;Sleep(sleepSecond);}return; }2. 打印成绩 void showScore(void) {//将光标默认位置移动至 不干扰游戏的位置COORD coord;coord.X 0;coord.Y HIGH 2;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);cout Game Over!!! endl;cout 成绩为 score endlendlendl; }3. main函数 int main(void) {//去除光标CONSOLE_CURSOR_INFO cci;cci.dwSize sizeof(cci);cci.bVisible FALSE; //设置为false则光标不可见SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), cci);srand(time(NULL)); //播种随机数种子initWall(); //画墙initSnake(); //初始化蛇initFood(); //初始化食物initUI(); //画蛇和食物playGame(); //启动游戏showScore(); //打印分数system(pause);return 0; }四、细节处理 在该游戏的制作过程中有以下几个方面的细节处理 1. 绘画问题 每绘画蛇和食物图像时都需要将光标移动到指定地方才能成功绘画。 COORD 为光标移动处理结果体 COORD coord; coord.X snake.body[i].X; coord.Y snake.body[i].Y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);2. 去除光标闪烁问题 CONSOLE_CURSOR_INFO 为光标显示处理结构体 CONSOLE_CURSOR_INFO cci; cci.dwSize sizeof(cci); cci.bVisible FALSE; //设置为false则光标不可见 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), cci);3. 蛇尾隐藏 蛇每吃掉一块食物蛇身便会增长一节急需对蛇尾做隐藏处理 //存储蛇尾坐标 lastX snake.body[snake.size - 1].X; lastY snake.body[snake.size - 1].Y;coord.X lastX; coord.Y lastY; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); //移动光标 putchar( ); //用“ ”覆盖蛇尾4. 接收用户按键输入 _kbhit()不阻塞判断用户输入 _getch()不回显读取一个字符 if (_kbhit()) { //为真时说明用户按下按键 key _getch(); }5. 延迟 若不对移动时进行Sleep处理则蛇移动速度飞快游戏一下就结束了。 Sleep(sleepSecond);五、程序源码 若需程序源码可留言邮箱至评论区或直接私信 即可。
http://www.hkea.cn/news/14341532/

相关文章:

  • 自己做网站投放广告网站建立的重要性
  • 上海南站网站建设公司做餐饮网站
  • 深圳商业网站建设系统兰州中川国际机场
  • 遵化手机网站设计广州app开发定制公司
  • 做货代用什么网站找客户公众号官方
  • 什么是网站代理自己搭建网站服务器
  • 秦皇岛做网站公司如何选择网站托管公司
  • 垂直类网站怎么做网站文章更新数量
  • 律所网站建设建议免费托管wordpress
  • 怎样建设一个网站教学深圳做网站的公
  • 农村电商网站设计与发展现状微信小程序开发工具官网入口
  • 用于做网站的软件手机网站改版公司加盟
  • 电子商务营销网站建设网站页面打开速度
  • 网站搭建交流群图片制作器下载
  • 360网站图标怎么做的怎样用自己的空间做网站
  • 网站建设详细的步骤有哪些狠狠做狠狠干免费网站
  • 招商加盟网站大全代理备案网站
  • 大型电商网站开发实践wordpress 招聘公司模版
  • 手机网站制作哪家便宜wordpress交互插件
  • 浙江杭州网站建设服务公司哪家好python如何创建网页
  • 宿州商务网站建设传统小型企业做网站的好处
  • 三网合一网站建设报价wordpress热门文章代码
  • ps做的网站如何转入dw为什么建设网银网站打不开
  • 重庆怎么做网站?wordpress主题 cms
  • 传媒大气的网站广州专门做seo的公司
  • 广东商城网站建设报价福步外贸论坛怎么发帖
  • 主题网站设计模板聊天系统源码
  • 装修设计网站哪个平台最好常熟做网站优化
  • 泉州专业建站品牌wordpress 文章左右分栏
  • 图书网站建设源码怎么做网站的rss