P.3简易贪吃蛇
使用方式使用WSAD来实现上下左右移动Q退出P暂停。注意事项要C 11或以上的版本作者是在读大学生如果你对我的代码有任何问题或优化方法请务必告知❤️❤️代码#include iostream#include random#include vector#include Windows.h#include conio.h#include fstreamusing namespace std;const int WIDTH 22;const int LENGTH 32;// 蛇头的朝向enum Direction {UP,DOWN,LEFT,RIGHT};class GameMap {public:char gameMap[WIDTH][LENGTH]; // 游戏地图int food_x, food_y; // 食物的坐标int Score; // 得分int Round; // 轮次int AllTimeHigh_score; // 历史最高得分public:GameMap(){for (int j 0; j LENGTH; j) gameMap[0][j] gameMap[WIDTH - 1][j] -; // 上下边界for (int i 1; i WIDTH-1; i) gameMap[i][0] gameMap[i][LENGTH - 1] |; // 左右边界for (int i 1; i WIDTH - 1; i) for (int j 1; j LENGTH - 1; j) gameMap[i][j] ; // 中间清空Score Round 0; // 初始化Round用0是因为程序员的第一是0AllTimeHigh_score loadHighScore(); // 加载历史最高得分generate_food();}void generate_food(){random_device rd;mt19937 gen(rd());uniform_int_distribution dist_x(1, WIDTH - 2); food_x dist_x(gen);uniform_int_distribution dist_y(1, LENGTH - 2); food_y dist_y(gen);gameMap[food_x][food_y] $;}void gotoXY(int x, int y){HANDLE hConsole GetStdHandle(STD_OUTPUT_HANDLE); // 创建控制台操作许可证存储到变量hConsole中COORD pos { (SHORT)x, (SHORT)y }; // 创建光标要去的位置(x, y)的变量SetConsoleCursorPosition(hConsole, pos); // 设置控制台光标的位置}void show(){// system(cls); // 清屏刷新不再使用因为会使得屏幕闪烁体验差gotoXY(0, 0); // 操控光标到控制台左上角覆盖写入发生在cout后cout All-time high score: AllTimeHigh_score , Round: Round , Score: Score endl;for (int i 0; i WIDTH; i){for (int j 0; j LENGTH; j) cout gameMap[i][j];cout endl;}}int loadHighScore(){ifstream ifs(AllTimeHighScore.txt, ios::in);int hs 0;if (ifs hs) return hs;return 0;}void saveHighScore(int hs){ofstream ofs(AllTimeHighScore.txt, ios::out);ofs hs;}};class Snake : public GameMap {private:vectorpairint, int mySnake; // 蛇的坐标int head_x, head_y; // 蛇头Direction Dir; // 蛇头朝向public:Snake(){head_x 10, head_y 15;mySnake.push_back(make_pair(head_x, head_y));mySnake.push_back(make_pair(head_x, head_y-1)); // 初始时设置蛇的长度为2gameMap[head_x][head_y] 0;gameMap[head_x][head_y] o;Dir RIGHT;}bool control_direction(){if (_kbhit()){char key _getch();switch (key){case w: if(Dir ! DOWN) Dir UP; break;case s: if(Dir ! UP) Dir DOWN; break;case a: if(Dir ! RIGHT) Dir LEFT; break;case d: if(Dir ! LEFT) Dir RIGHT; break;case p: system(pause); break;case q: return false;}}return true;}bool move(){// 更新头部switch (Dir){case UP: head_x--; break;case DOWN: head_x; break;case LEFT: head_y--; break;case RIGHT: head_y; break;}mySnake.insert(mySnake.begin(), make_pair(head_x, head_y));// 撞墙检测if (head_x 0 || head_x WIDTH-1 || head_y 0 || head_y LENGTH-1){cout You hit the wall! endl;return false;}// 撞到自己检测for (int i 1; i (int)mySnake.size(); i)if (mySnake[i].first head_x mySnake[i].second head_y){cout You are eating yourself! endl;return false;}// 吃到食物了if (head_x food_x head_y food_y){if (Round 3) Score 5;else if (Round 7) Score 10;else if (Round 10) Score 15;else if (Round 30) Score 20;else if (Round 50) Score 25;else if (Round 100) Score 30;else Score 50;generate_food();Round;}// 没吃到要删除蛇尾else{gameMap[mySnake.back().first][mySnake.back().second] ;mySnake.pop_back();}gameMap[head_x][head_y] 0;gameMap[mySnake[1].first][mySnake[1].second] o;return true;}void run(){while (true){bool q control_direction();if (!move() || !q){cout Game over! endl;if (Score AllTimeHigh_score) saveHighScore(Score);return;}show();if (Round 3) Sleep(1000);else if (Round 7) Sleep(700);else if (Round 10) Sleep(500);else if (Round 30) Sleep(400);else if (Round 50) Sleep(300);else if (Round 100) Sleep(200);else Sleep(100);}}};int main(){Snake snake;snake.run();return 0;}

相关新闻

WuWa-Mod终极指南:彻底解放鸣潮游戏潜能的15种神奇模组

WuWa-Mod终极指南:彻底解放鸣潮游戏潜能的15种神奇模组

WuWa-Mod终极指南:彻底解放鸣潮游戏潜能的15种神奇模组 【免费下载链接】wuwa-mod Wuthering Waves pak mods 项目地址: https://gitcode.com/GitHub_Trending/wu/wuwa-mod 还在为鸣潮游戏中的各种限制感到束手束脚吗?WuWa-Mod作为目前最受欢迎的…

2026/7/8 5:11:50阅读更多 →
把==写成=为什么编译器不报错?if(x=5)的坑有多深

把==写成=为什么编译器不报错?if(x=5)的坑有多深

把 写成 为什么编译器不报错?if (x 5) 的坑有多深 有没有过这种经历:代码逻辑怎么看都对,但就是不按你想的走? int x 0;if (x 5) {printf("x 是 5\n"); } else {printf("x 不是 5\n"); }printf("…

2026/7/8 5:11:50阅读更多 →
3分钟掌握Windows字体自定义:No!! MeiryoUI终极指南

3分钟掌握Windows字体自定义:No!! MeiryoUI终极指南

3分钟掌握Windows字体自定义:No!! MeiryoUI终极指南 【免费下载链接】noMeiryoUI No!! MeiryoUI is Windows system font setting tool on Windows 8.1/10/11. 项目地址: https://gitcode.com/gh_mirrors/no/noMeiryoUI 你是否曾对Windows一成不变的界面字体…

2026/7/8 5:06:50阅读更多 →
TS2007FC与TM4C129EKCPDT构建高性能嵌入式音频系统

TS2007FC与TM4C129EKCPDT构建高性能嵌入式音频系统

1. 音频系统设计的硬件基石:TS2007FC与TM4C129EKCPDT深度解析 在嵌入式音频系统开发领域,硬件选型往往决定了项目的性能天花板。TS2007FC作为一款专业级音频功率放大器,与TI的TM4C129EKCPDT微控制器组合,构成了高性能音频处理的黄…

2026/7/8 9:22:28阅读更多 →
【银河麒麟R系】RPM 命令常见用法(附实例)——查看、安装、卸载、提取安装包一文掌握

【银河麒麟R系】RPM 命令常见用法(附实例)——查看、安装、卸载、提取安装包一文掌握

前言在之前的文章中,我介绍了在银河麒麟桌面系统中dpkg 包管理工具的一些常见用法。而银河麒麟服务器版(R系)采用的是 rpm 包管理工具,两者虽然作用相似,但命令有所不同。本文结合日常运维和排障经验,总结 …

2026/7/8 9:22:28阅读更多 →
Android原生电视直播软件架构解析:模块化设计与性能优化实践

Android原生电视直播软件架构解析:模块化设计与性能优化实践

Android原生电视直播软件架构解析:模块化设计与性能优化实践 【免费下载链接】mytv-android 使用Android原生开发的视频播放软件 项目地址: https://gitcode.com/gh_mirrors/my/mytv-android 我的电视(MyTV-Android)是一款基于原生And…

2026/7/8 9:22:28阅读更多 →
9大网盘直链解析神器LinkSwift:告别限速困扰的终极解决方案

9大网盘直链解析神器LinkSwift:告别限速困扰的终极解决方案

9大网盘直链解析神器LinkSwift:告别限速困扰的终极解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 /…

2026/7/8 9:22:28阅读更多 →
如何构建你的私人游戏云:Sunshine串流平台终极指南

如何构建你的私人游戏云:Sunshine串流平台终极指南

如何构建你的私人游戏云:Sunshine串流平台终极指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款强大的自托管游戏串流服务器,专为Moonlig…

2026/7/8 9:22:28阅读更多 →
一文详解信号完整性(2)

一文详解信号完整性(2)

SI常见概念分析:振铃(ringing):振铃现象描述的是信号在达到稳定状态之前,出现一系列的振荡或波动,使得信号看起来像是在"振铃"。这种现象类似于物理上的弹簧振子或钟摆的振动。振铃由反射等多种因素引起的,它…

2026/7/8 9:17:28阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/8 5:12:14阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/8 7:00:12阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/8 2:26:06阅读更多 →
作为一个给团队打绩效的人,我想说几句

作为一个给团队打绩效的人,我想说几句

我每半年都会给团队成员打绩效,也会参与和 CTO 的绩效校准,所以从管理者的视角,说说这件事 首先,我先把结论告诉你:接受结果,但一定要把原因问清楚。 因为当绩效公布到你这里的时候,结果基本已…

2026/7/8 0:01:17阅读更多 →
A股股指期货:全维度解析(多表格结构化完整版)

A股股指期货:全维度解析(多表格结构化完整版)

一、基础定义与核心本质股指期货全称股票价格指数期货,是中国金融期货交易所(中金所)上市的标准化金融期货合约,交易标的为 A 股大盘指数,约定未来特定时间按约定价格现金交割指数涨跌差价,不交割一篮子股票…

2026/7/8 0:01:17阅读更多 →
iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事

iOS越狱新手指南:从困惑到掌控,3天解锁iPhone无限潜能的真实故事 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder &…

2026/7/8 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/8 6:59:54阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/7 5:11:21阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/7 5:11:21阅读更多 →