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

广州做网站制作公司深圳做网站最

广州做网站制作公司,深圳做网站最,免费开发app平台下载,贵阳城乡和住房建设厅网站一、项目介绍 当前通过控制台终端实现一个贪吃蛇小游戏#xff0c;实现游戏的绘制、更新、控制等功能。 二、实现效果 三、完整代码 下面贴出的代码在Windows系统上编译运行#xff0c;需要使用conio.h头文件中的getch()函数来获取键盘输入#xff0c;用于控制蛇的移动。…一、项目介绍 当前通过控制台终端实现一个贪吃蛇小游戏实现游戏的绘制、更新、控制等功能。 二、实现效果 三、完整代码 下面贴出的代码在Windows系统上编译运行需要使用conio.h头文件中的getch()函数来获取键盘输入用于控制蛇的移动。可以通过按下’w’、‘s’、‘a’、d’四个键来分别控制蛇的向上、向下、向左、向右移动。同时还有一个暂停函数Pause()用于控制蛇的移动速度可以根据需要调整暂停时间。 设计思路 程序定义了一些常量包括游戏界面的宽度和高度、不同状态下的符号表示等并在全局变量中定义了蛇头、蛇身、食物等的位置、得分、长度、行进方向等参数。同时还定义了一个二维字符数组board用于表示整个游戏界面。 在InitGame()函数中进行游戏初始化设置游戏界面的边框、蛇头、蛇身、随机生成食物等操作。 DrawGame()函数用于绘制游戏画面将board数组中的字符逐行输出并在末尾输出得分。UpdateGame()函数用于更新游戏状态包括蛇的移动、游戏结束判断等。CheckGameOver()函数用于检查游戏是否结束包括墙壁碰撞、蛇身碰撞、得分达到上限等情况。GenerateFood()函数用于随机生成食物位置调用rand()函数获取随机数并进行判断。Move()函数用于蛇的移动根据当前行进方向进行移动。Control()函数用于用户操作读取键盘输入并更新蛇的行进方向。Pause()函数用于控制游戏速度通过调用Sleep()函数控制暂停时间。GameOver()函数用于输出最终得分和游戏结束信息并直接退出程序。 #include stdio.h #include stdlib.h #include conio.h //需要使用getch()函数 #include time.h //需要使用time()函数 #include Windows.h#define WIDTH 40 //游戏界面宽度 #define HEIGHT 20 //游戏界面高度//定义符号常量表示各种不同的状态 #define BLANK //空白 #define WALL * //墙壁 #define SNAKEHEAD //蛇头 #define SNAKEBODY o //蛇身 #define FOOD $ //食物//定义坐标结构体 struct Position {int x; //横坐标int y; //纵坐标 };//定义枚举类型表示游戏状态 enum GameState {Over -1, //游戏结束Running 0, //游戏进行中Win 1 //游戏胜利 };int score 0; //得分 struct Position head; //蛇头位置 struct Position body[WIDTH * HEIGHT]; //蛇身位置 struct Position food; //食物位置 char board[WIDTH][HEIGHT]; //游戏界面 int length 3; //蛇身长度初始为3 int direction 0; //蛇的行进方向0表示向右1表示向下2表示向左3表示向上//函数声明 void InitGame(); //初始化游戏界面和蛇的初始位置 void DrawGame(); //绘制游戏画面 void UpdateGame(); //更新游戏状态 enum GameState CheckGameOver(); //检查游戏是否结束 void GenerateFood(); //生成随机食物 void Move(); //蛇的移动 void Control(); //用户操作控制蛇的移动 void Pause(); //游戏暂停 void GameOver(); //游戏结束int main() {srand(time(NULL)); //用当前时间作为随机数种子使每次运行的随机食物位置不同InitGame(); //初始化游戏DrawGame(); //绘制游戏画面while (1){UpdateGame(); //更新游戏DrawGame(); //绘制游戏画面Control(); //用户操作控制蛇的移动Pause(); //游戏暂停 }return 0; }//初始化游戏界面和蛇的初始位置 void InitGame() {for (int i 0; i WIDTH; i){for (int j 0; j HEIGHT; j){if (i 0 || j 0 || i WIDTH - 1 || j HEIGHT - 1) //设置墙壁board[i][j] WALL;elseboard[i][j] BLANK; //其他为空白}}//初始化蛇的位置由一个蛇头和两节身体组成初始位置在游戏界面的中心head.x WIDTH / 2;head.y HEIGHT / 2;board[head.x][head.y] SNAKEHEAD;body[0].x head.x - 1;body[0].y head.y;board[body[0].x][body[0].y] SNAKEBODY;body[1].x head.x - 2;body[1].y head.y;board[body[1].x][body[1].y] SNAKEBODY;GenerateFood(); //生成随机食物 }//绘制游戏画面 void DrawGame() {system(cls); //清屏避免前一帧的内容残留for (int i 0; i HEIGHT; i){for (int j 0; j WIDTH; j){printf(%c, board[j][i]); //输出一个字符}printf(\n); //每行输出完后换行}printf(Score: %d\n, score); //输出得分 }//更新游戏状态 void UpdateGame() {Move(); //蛇的移动enum GameState state CheckGameOver(); //检查游戏是否结束if (state ! Running) //如果游戏结束则进行相应操作{GameOver();} }//检查游戏是否结束 enum GameState CheckGameOver() {//蛇头碰到墙壁游戏结束if (board[head.x][head.y] WALL)return Over;//蛇头碰到蛇身游戏结束for (int i 0; i length; i){if (head.x body[i].x head.y body[i].y)return Over;}//吃到食物后更新分数和蛇的长度并生成新的食物if (head.x food.x head.y food.y){score 10;length;GenerateFood();}//蛇的长度达到游戏界面总格子数减去墙壁的个数也就是蛇填满游戏界面游戏胜利if (length (WIDTH - 2) * (HEIGHT - 2) - 4)return Win;return Running; //游戏继续进行 }//生成随机食物 void GenerateFood() {int x, y;do{x rand() % (WIDTH - 2) 1; //随机x坐标排除在边框上的墙壁位置y rand() % (HEIGHT - 2) 1; //随机y坐标排除在边框上的墙壁位置} while (board[x][y] ! BLANK); //如果随机到的位置不为空白则重新随机food.x x;food.y y;board[x][y] FOOD; //在随机位置生成食物 }//蛇的移动 void Move() {//更新蛇身的位置从后往前移动for (int i length - 1; i 0; i--){body[i].x body[i - 1].x;body[i].y body[i - 1].y;board[body[i].x][body[i].y] SNAKEBODY;}//更新蛇头的位置switch (direction) //根据蛇头行进方向进行移动{case 0: //向右head.x;break;case 1: //向下head.y;break;case 2: //向左head.x--;break;case 3: //向上head.y--;break;}board[head.x][head.y] SNAKEHEAD; //更新蛇头位置board[body[length - 1].x][body[length - 1].y] BLANK; //清除蛇尾 }//用户操作控制蛇的移动 void Control() {if (kbhit()) //如果有按键按下{char ch getch(); //获取按键字符switch (ch){case w:if (direction ! 1) //避免蛇头掉头direction 3;break;case s:if (direction ! 3)direction 1;break;case a:if (direction ! 0)direction 2;break;case d:if (direction ! 2)direction 0;break;case q:GameOver(); //按下q键退出游戏break;}} }//游戏暂停 void Pause() {Sleep(150); //每次循环暂停一段时间控制蛇的移动速度 }//游戏结束 void GameOver() {system(cls); //清屏输出最终得分和游戏结束信息printf(Game over!\n);printf(Your score: %d\n, score);exit(0); //直接退出程序 }
http://www.tj-hxxt.cn/news/220924.html

相关文章:

  • 建站行业乱象完整版51推广平台
  • 用qq空间做网站网站建网站建设企业
  • 阜新门户网站建设怎么优化电脑系统
  • 手机网站模板 餐饮vs网站开发表格大小设置
  • 电商公司建设网站app开发企业网站建设
  • 男女做暧暧观看免费网站网站建设网络公关
  • seo建站是什么怎么做网站推广软件
  • 北京龙鼎网站建设公司重庆模板自助建站
  • 湛江 网站建设seo还有前景吗
  • 中国建设银行手机银行家网站上海 企业网站制
  • 德阳市建设局官方网站安全月给公司网站做seo的好处
  • 青岛网站建设鲁捷云兰州解封最新消息
  • 怎么申请域名建网站杭州市建设工程招标平台
  • 适合seo优化的网站制作平台网站建设过程
  • mk厂手表网站郑州装修公司排名
  • 最新在线代理服务器深圳网络优化培训
  • 自己做外贸开通什么网站dede关闭手机网站
  • 整人网站怎么做怎么做卖辅助网站
  • 做暖暖视频网站大全金牛区建设审批网站
  • 网站建设招商dw制作企业网站
  • 营销网站建设规划方案贵阳网站建设是什么
  • 北京响应式网站建设公司宁波网站建设报价
  • 做网站的图片从哪里找最快新闻资讯在哪看
  • 网站建设公司华网天网页制作搜题软件
  • 网站建设具体工作总结做石材的一般用什么网站
  • 龙岩做网站改版找哪家公司深圳哪家网站公司好
  • 网站打开不了怎样做app首页设计模板
  • 网站icon图标怎么加学做网站课程
  • 社区建立网站建站网站教程视频教程
  • 滨江网站制作网页版微信官方下载