当前位置: 首页 > 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/14467530/

相关文章:

  • 车陂手机网站建设电话弹幕网站开发难么
  • 北京城乡与建设厅官方网站查询wordpress设计菜单
  • 用html网站登录界面怎么做360建筑网撤销自己的简历怎么撤销
  • 外贸网站建设公司青岛宁波网站怎么建设
  • 装修网站官网甘肃网站建设
  • 怎么找网站做公示成都购房登记入口官网
  • 网站 动画 怎么做的浙江温州最新消息
  • 哈尔滨市住房和城乡建设局网站专注网站建设怎么样
  • 贵阳网站建设设计邱县做网站
  • asp网站变慢网页制作及网站设计
  • 福州网站建设方案深圳装饰装修公司
  • html 网站开发软件东南亚cod建站工具
  • 五合一自助建站网站wordpress code标签
  • wordpress电影网站模板wordpress用户前端登陆地址
  • 毕业设计做网站还是系统温州市建设小学网站首页
  • c mvc 大型网站开发电子商务公司有哪些
  • 建设网站本地调试中国钓鱼网站大全
  • php网站做代理我要发布信息
  • 省机关事务局网站建设管理情况濮阳中强网站建设
  • 音乐网站开发答辩ppt地推网推平台
  • 织梦网站后台管理自己做企业网站的步骤
  • 成都高端模板建站网站架构企业收费标准
  • 自己做效果图的网站水果网页制作模板
  • 网站服务器租金手机端steam怎么调中文
  • 上海专业高端网站建设服务器广西百度seo
  • 重庆做网站 外包公司有哪些网站定制兴田德润实力强
  • 小程序跳转到网站内贸网站有多少
  • 苏州哪家做网站便宜网站如何为关键词做外链
  • 专业的高端网站制作公司淮北公司做网站
  • app手机网站开发什么网站可以免费做会计初级