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

网站开发专业实习报告湖南长沙招聘

网站开发专业实习报告,湖南长沙招聘,户外网站建设,网站cname解析C自学精简实践教程 目录(必读) 目录 主要考察 需求 输入文件 运行效果 实现思路 枚举类型 enum class 启动代码 输入文件data.txt 的内容 参考答案 学生实现的效果 主要考察 模块划分 文本文件读取 UI与业务分离 控制台交互 数据抽象 需求 用户输入字母表示方…C自学精简实践教程 目录(必读) 目录 主要考察 需求 输入文件 运行效果 实现思路 枚举类型 enum class 启动代码 输入文件data.txt 的内容 参考答案 学生实现的效果 主要考察 模块划分 文本文件读取 UI与业务分离 控制台交互 数据抽象 需求 用户输入字母表示方向实现贪吃蛇游戏。 规则碰到边缘和碰到蛇自己都算游戏结束。 输入文件 第一行包括两个整数表示游戏棋盘大小。分别表示行数和列数。 后面的内容是一个行数乘以列数的二维数组。 数组的元素为0表示这里没有食物也没有蛇的身体。 数组的元素为 表示蛇的头。 数组元素为 # 表示蛇的身体。 程序启动一开始运行的时候蛇没有身体只有头。 运行效果 实现思路 正式实现代码Snake.cpp只有180行不到。 枚举类型 enum class enum class 通常用来提供字面值常量。也就是一些固定值。比如表示方向的东、南、西、北。表示空间的上、下、左、右、前、后。 启动代码 #include list #include utility #include fstream #include sstream #include iostream #include random//随机数 #include chrono//日期时间 using namespace std;class Snake {// 游戏的任意位置 只有三种情况什么也没有蛇的身体食物enum class MatrixValueEnum{NOTHING 0, SNAKE_BODY #, FOOD 2}; public:// 从文件中加载界面数据存放到内部容器中再根据容器内容绘制界面bool LoadPlayDataFromFile(const std::string file);// 开始游戏void Play(void); private:// 用户输入一个字符e/s/f/d决定将蛇的头部往哪个方向移动bool GoAhead(char userInputDirection);// 核心函数// 移动蛇的头的坐标(x,y) (x,y) (i,j)bool GoAhead(int i, int j);//撞到墙壁或者蛇自己的身体就结束游戏bool IsGameOver(int, int) const;// 获取蛇的头的坐标std::pairint, int GetCurrentPosition(void) const;// 计算蛇的头移动一次后的新坐标std::pairint, int GetNextPosition(int, int) const;// 打印贪吃蛇游戏void PrintMatrix(void) const;// 判断 (i,j) 处是否是一个食物bool ExistFood(int i, int j) const;// 在界面上生成一个新的食物给蛇吃void CreateFood(void); private:std::vectorstd::vectorchar m_playMatrix;// 整个游戏的数据二维数组std::liststd::pairint, int m_snakeBody;// 蛇的身体数据 };bool Snake::LoadPlayDataFromFile(const std::string file) {std::ifstream fin(file);if (!fin){std::cout can not open file file endl;return false;}std::string line;std::getline(fin, line);std::istringstream iss(line);// 字符串流 https://zhuanlan.zhihu.com/p/441027904int row 0, column 0;//读取行数和列数//(1) your codefor (size_t i 0; i row; i){std::vectorchar lineData;std::getline(fin, line);std::istringstream issLineData(line);for (size_t j 0; j column; j){char data;//读取一个元素// (2) your code//将组成蛇的头#存放到蛇m_snakeBody容器中//在文件里一开始蛇的身体只有一个头需要把这个数据存起来//(3) your code 判断两个char相等即可// 参考https://zhuanlan.zhihu.com/p/357348144}//将第一行数据存放到二维数组中作为第一维的一个元素子数组//(4) your code}if (m_snakeBody.size() ! 1){cout snake body is empty! init game failed. endl;return false;}return true; }bool Snake::IsGameOver(int x, int y) const {//判断游戏是否已经结束了// x y 是蛇的头打算要去的目的地这个目的地会导致gomeover// 比如超出了游戏界面下标越界// 比如撞到了蛇的身体//(5) your codereturn true; } std::pairint, int Snake::GetCurrentPosition(void) const {//返回蛇 的头的坐标是m_snakeBody的第一个元素的值//6 your code 下面的代码需要自己修改不可以直接使用std::pairint, int front;return front; } std::pairint, int Snake::GetNextPosition(int i, int j) const {//根据蛇的头的位置以及一个移动的向量 (i,j) 得到蛇头部打算要去的新目的地的坐标auto old GetCurrentPosition();//(7) your code 下面的代码需要自己修改不可以直接使用int x 0;int y 0;return std::make_pair(x, y); } bool Snake::ExistFood(int i, int j) const {//返回 坐标(i,j)处是否是有蛇的食物可以吃//(8) your code 下面的代码需要自己修改不可以直接使用return false; } void Snake::CreateFood(void) {// 生成一个新的食物给蛇来吃// 随机生成一个新的位置但是这个位置可能已经是蛇的身体了// 所以需要用一个循环不断的重复在一个新生成的随机位置放置食物// 直到放置成功为止do{unsigned seed std::chrono::system_clock::now().time_since_epoch().count();std::mt19937 g(seed); // mt19937 is a standard mersenne_twister_engine//生成新的随机的坐标//随机数的用法https://blog.csdn.net/calmreason/article/details/72655060//(9) your code 下面的代码需要自己修改不可以直接使用int x 0;int y 0;// 在新坐标处放置一个食物记得检查可以放才能放// 一旦放好记得退出循环让程序继续执行//(10) your code} while (true); } bool Snake::GoAhead(char userInputDirection) {switch (userInputDirection){case w:case W:return GoAhead(-1, 0);//upcase a:case A:return GoAhead(0, -1);//leftcase d:case D:return GoAhead(0, 1);//rightcase s:case S:return GoAhead(1, 0);//downdefault:return true;} } bool Snake::GoAhead(int i, int j) {auto nextPosition GetNextPosition(i, j);//垂直方向x不变竖直方向y减少1// 首先判断游戏是否已经结束if (IsGameOver(nextPosition.first, nextPosition.second)){return false;}// 判断nextPosition 处是否有食物// 如果有食物就吃掉这个食物// 并生成一个新的食物if (ExistFood(nextPosition.first, nextPosition.second)){// (11) your code//直接吃掉尾巴不用移动m_playMatrix[nextPosition.first][nextPosition.second] static_castchar(MatrixValueEnum::SNAKE_BODY);CreateFood();//随机生成一个食物}// 如果 nextPosition 处没有食物就移动蛇的身体else{// (12) your code//尾巴移动 auto tail m_snakeBody.back();m_playMatrix[tail.first][tail.second] static_castchar(MatrixValueEnum::NOTHING);m_snakeBody.pop_back();} }void Snake::Play(void) {CreateFood();//随机生成一个食物while (true){/*清屏这不是C的一部分是系统调用。这个语句执行的快慢与代码无关与控制台用户自己设置的缓冲区大小有关。*/system(cls);PrintMatrix();std::cout direction: W(up) A(left) S(down) D(right)\n;std::cout $: food\n;std::cout : snake head\n;std::cout #: snake tail\n;char direction;std::cin direction;//往前走一步如果判断无法往前走到用户指定的位置就退出程序// 13 your codeif (!GoAhead(direction)){std::cout Game Over! std::endl;break;}} } void Snake::PrintMatrix(void) const {auto headPosition m_snakeBody.front();for (size_t i 0; i m_playMatrix.size(); i){for (size_t j 0; j m_playMatrix[i].size(); j){if (i headPosition.first j headPosition.second){std::cout ;}else if (m_playMatrix[i][j] static_castchar(MatrixValueEnum::FOOD)){std::cout $ ;}else if (m_playMatrix[i][j] static_castchar(MatrixValueEnum::NOTHING)){std::cout _ ;}else{std::cout m_playMatrix[i][j] ;}}std::cout std::endl;} }int main(int argc, char** argv) {Snake snake;if (snake.LoadPlayDataFromFile(data.txt)){snake.Play();}return 0; }输入文件data.txt 的内容 7 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 参考答案 贪吃蛇(控制台版)答案 其他参考 Qt版本的一个贪吃蛇实现 Qt Snake C 学生实现的效果 视频资源加载失败 视频资源加载失败
http://www.zqtcl.cn/news/404590/

相关文章:

  • 网站搭建制作建e室内设计网画图
  • 重庆市建设工程施工安全管理信息网北京seo公司网站
  • 国外做调查问卷的网站建设邮费自己的网站 要不要购买服务器的
  • 网站建设和优化排名四川建设网官网证书查询入口
  • 如何搜名字搜到自己做的网站电子商务平台icp备案证明
  • 网站建设与管理工作内容北京网站建设价
  • 做网站选哪个语言软文营销的方法
  • 青岛正规公司网站建设公司中国建设银行注册网站
  • 免费个人网站平台关键词检索
  • 定制型网站建设推广宁河网站建设
  • 主流网站开发语言有哪些电子邮件营销
  • 扫描二维码进入公司网站怎样做在万网上域名了怎么做网站
  • 销售型网站设计怎么做网站广告位
  • 网站推广的方法ppt购物网站logo
  • 网站关键词分割wordpress为展示的作品投票
  • 建立网站 域名 服务器吗wordpress超链接出错
  • 外贸开发网站建设注册会计师协会
  • 莆田建设网站dw网页设计作品及源码
  • 360免费建站视频淘宝客的网站怎么做
  • 四川自助seo建站短视频推广计划
  • 网站建设案例的公司黄冈网站建设公司
  • 做淘客网站需要营业执照吗制作网站公
  • 手机网站开发的目的鲁班设计远程工作
  • 宿迁网站建设要多少钱高密市住房和城乡建设局网站
  • 咸阳网站建设公司哪家好wordpress访客ip记录
  • 厦门建设银行网站那个网站做效果图电脑配置
  • 人才网站建设医院网站建设的好处
  • 房屋装修网站模板html5做网站
  • 网站建设需要的硬件网站建设知名公司排名
  • 绥化网站建设私自搭建vps犯法吗