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

一个ip可以建设多少个网站重庆工程造价信息2021

一个ip可以建设多少个网站,重庆工程造价信息2021,南宁网页设计培训机构,平台公司转型发展思路#x1f6a9;纸上得来终觉浅#xff0c; 绝知此事要躬行。 #x1f31f;主页#xff1a;June-Frost #x1f680;专栏#xff1a;C语言 #x1f525;该篇将结合之前的知识来实现 三子棋游戏。 目录#xff1a; #x1f31f;思路框架#xff1a;测试游戏 #x1f31f… 纸上得来终觉浅 绝知此事要躬行。 主页June-Frost 专栏C语言 该篇将结合之前的知识来实现 三子棋游戏。 目录 思路框架测试游戏 测试部分函数实现游戏部分函数实现完整的代码❤️ 结语 思路框架 测试 通过迭代保证每次玩完游戏后可以再来一局或者退出。 游戏 博主将会对上图每一个板块进行函数实现。 测试部分函数实现 选择是否玩游戏 该板块的循环部分将会使用do while 循环来实现保证一开始可以选择运行完游戏部分后还可以继续选择。 #includegame.hint main() {int input 0;do{menu();//菜单printf(请选择: );scanf(%d, input);switch (input){case 1:printf(三子棋游戏:\n);game();//游戏部分break;case 0:printf(退出游戏\n);break;default:printf(输入非法请重新输入\n);break;}} while (input);return 0; }游戏部分函数实现 在玩三子棋游戏中每一步棋下完之后的状态需要保存即需要数据的保存所以可以创建一个3X3的数组之后的数据操作就可以针对数组进行操作。 菜单 void menu() {printf(**************************\n);printf(********* 1.play *********\n);printf(********* 0.exit *********\n);printf(**************************\n); }初始化棋盘 定义一个 3X3 数组后我们将数组的元素都赋为 空格这样就可以保证打印出来的效果是空的棋盘。 void BoardInit(char board[][Col], int row, int col) {//遍历数组将每个元素赋为 空格int i 0;for (i 0; i row; i){int j 0;for (j 0; j col; j){board[i][j] ;}} }打印棋盘 需要产生的效果 实现上述的效果只需要两步拆解 1. 将这样的棋盘首先分为三部分每一个部分由数据部分和分割线部分构成分割线部分在最后一部分没有(只需要加一个限制条件即可) int i 0;for (i 0; i row; i){//打印数据printf(\n);//打印后换行//打印分割线if (i row - 1)//保证最后一部分不打印分割线{}printf(\n);//打印后换行}每个部分内部又可以划分为三部分与第一次拆解逻辑一摸一样注意第三部分没有 | 即可 void DisplayBoard(char board[][Col], int row, int col) {int i 0;for (i 0; i row; i){//打印数据int j 0;for (j 0; j col; j){printf( %c , board[i][j]);if (j col - 1){printf(|);}}printf(\n);//打印分割线if (i row - 1){int j 0;for (j 0; j col; j){printf(---);if (j col - 1){printf(|);}}}printf(\n);} }玩家下棋 这里需要注意 检查玩家输入的坐标是否合法以及该坐标下是否已经有棋子。而且在写条件的时候需要代入玩家视角输入区间为 1 —— 3但访问区间为 0——2 。 void PlayerMove(char board[][Col], int row, int col) {printf(玩家下棋\n);printf(请输入下棋的坐标,中间使用空格:);while (1){int x 0;int y 0;scanf(%d %d, x, y);if (x 1 x row y 1 y col)//保证棋子能落入棋盘{if (board[x - 1][y - 1] )//该坐标下无棋子{board[x - 1][y - 1] X;//落子break;}else{printf(该位置已有棋子请重新输入:);}}else{printf(输入非法请重新输入:);}} }电脑下棋 这里需要使用伪随机数并且直接将范围锁定在 0——2可以直接访问数组元素。完成该功能只需要判断 坐标下是否有棋子若有棋子则重新生成随机数。若要了解随机数可以参考——随机数 。 void ComputerMove(char board[][Col], int row, int col) {printf(电脑下棋:\n);while (1){int x rand() % row;int y rand() % col;if (board[x][y] ){board[x][y] O;break;}} }判断输赢 只需要从4种方向遍历数组有符合获胜条件的直接返回数组元素如果没有获胜则需要判断是否棋盘已满平局除此之外就是未完成该局继续下棋。 所以返回值 有四种情况 电脑赢 —— 返回 ‘O’ 玩家赢 —— 返回 ‘X’ 平局 —— 返回 ‘P’ 继续 —— 返回 ‘C’ int IsFull(char board[][Col], int row, int col)//判断是否已满已满返回1 {//遍历int i 0;for (i 0; i row; i){int j 0;for (j 0; j col; j){if (board[i][j] )return 0;}}return 1; } //判断输赢 char IsWin(char board[][Col], int row, int col) {//一方获胜//从上到下遍历int i 0;for (i 0; i row; i){if (board[i][0] board[i][1] board[i][1] board[i][2] board[i][0] ! ){return board[i][0];}}//从左至右遍历for (i 0; i col; i){if (board[0][i] board[1][i] board[1][i] board[2][i] board[0][i] ! ){return board[0][i];}}//左上至右下if (board[0][0] board[1][1] board[1][1] board[2][2] board[0][0] ! ){return board[1][1];}//左下至右上if (board[2][0] board[1][1] board[1][1] board[0][2] board[2][0] ! ){return board[1][1];}//平局if (IsFull(board,row,col)){return P;}return C;}游戏逻辑部分 我们已经有了所有的功能函数按照思路框架直接写出来即可。 void game() {char board[Row][Col] { 0 };BoardInit(board, Row, Col);DisplayBoard(board, Row, Col);//先手判断//假设玩家先手void(*Fir)(char board[][Col], int, int) PlayerMove;void(*Sec)(char board[][Col], int, int) ComputerMove;int flag rand()%2; //1——玩家先手0——电脑先手if (flag 0){printf(电脑先手\n);Fir ComputerMove;Sec PlayerMove;}else{printf(玩家先手\n);}//char ret 0;while (1){Fir(board, Row, Col);DisplayBoard(board, Row, Col);ret IsWin(board, Row, Col);if (ret ! C)break;Sec(board, Row, Col);DisplayBoard(board, Row, Col);ret IsWin(board, Row, Col);if (ret ! C)break;}if (ret X){printf(玩家获胜\n);}else if (ret O){printf(电脑获胜\n);}else{printf(平局\n);} }首先假设玩家是先手如果flag 1则照旧进行如果flag 0就直接交换先后手。 完整的代码 test.c : 请记得设置随机数起点srand。 #define _CRT_SECURE_NO_WARNINGS 1 #includegame.hint main() {int input 0;srand((unsigned int)time(NULL));//起点do{menu();//菜单printf(请选择: );scanf(%d, input);switch (input){case 1:printf(三子棋游戏:\n);game();//游戏部分break;case 0:printf(退出游戏\n);break;default:printf(输入非法请重新输入\n);break;}} while (input);return 0; }game.h #pragma once#includestdio.h #includestdlib.h #includetime.h #define Row 3 #define Col 3 //菜单 void menu(); //游戏(逻辑 void game(); //初始化棋盘 void BoardInit(char board[][Col], int row, int col); //打印棋盘 void DisplayBoard(char board[][Col], int row, int col); //玩家下棋 void PlayerMove(char board[][Col], int row, int col); //电脑下棋 void ComputerMove(char board[][Col], int row, int col); //判断输赢 char IsWin(char board[][Col], int row, int col); game.c #define _CRT_SECURE_NO_WARNINGS 1 #includegame.hvoid menu() {printf(**************************\n);printf(********* 1.play *********\n);printf(********* 0.exit *********\n);printf(**************************\n); }void BoardInit(char board[][Col], int row, int col) {//遍历数组将每个元素赋为 空格int i 0;for (i 0; i row; i){int j 0;for (j 0; j col; j){board[i][j] ;}} }void DisplayBoard(char board[][Col], int row, int col) {int i 0;for (i 0; i row; i){//打印数据int j 0;for (j 0; j col; j){printf( %c , board[i][j]);if (j col - 1){printf(|);}}printf(\n);//打印分割线if (i row - 1){int j 0;for (j 0; j col; j){printf(---);if (j col - 1){printf(|);}}}printf(\n);} }void PlayerMove(char board[][Col], int row, int col) {printf(玩家下棋\n);printf(请输入下棋的坐标,中间使用空格:);while (1){int x 0;int y 0;scanf(%d %d, x, y);if (x 1 x row y 1 y col)//保证棋子能落入棋盘{if (board[x - 1][y - 1] ){board[x - 1][y - 1] X;//落子break;}else{printf(该位置已有棋子请重新输入:);}}else{printf(输入非法请重新输入:);}} }void ComputerMove(char board[][Col], int row, int col) {printf(电脑下棋:\n);while (1){int x rand() % row;int y rand() % col;if (board[x][y] ){board[x][y] O;break;}} }int IsFull(char board[][Col], int row, int col) {//遍历int i 0;for (i 0; i row; i){int j 0;for (j 0; j col; j){if (board[i][j] )return 0;}}return 1; }char IsWin(char board[][Col], int row, int col) {//一方获胜//从上到下遍历int i 0;for (i 0; i row; i){if (board[i][0] board[i][1] board[i][1] board[i][2] board[i][0] ! ){return board[i][0];}}//从左至右遍历for (i 0; i col; i){if (board[0][i] board[1][i] board[1][i] board[2][i] board[0][i] ! ){return board[0][i];}}//左上至右下if (board[0][0] board[1][1] board[1][1] board[2][2] board[0][0] ! ){return board[1][1];}//左下至右上if (board[2][0] board[1][1] board[1][1] board[0][2] board[2][0] ! ){return board[1][1];}//平局if (IsFull(board,row,col)){return P;}return C;}void game() {char board[Row][Col] { 0 };BoardInit(board, Row, Col);DisplayBoard(board, Row, Col);//先手判断//假设玩家先手void(*Fir)(char board[][Col], int, int) PlayerMove;void(*Sec)(char board[][Col], int, int) ComputerMove;int flag rand()%2; //1——玩家先手0——电脑先手if (flag 0){printf(电脑先手\n);Fir ComputerMove;Sec PlayerMove;}else{printf(玩家先手\n);}//char ret 0;while (1){Fir(board, Row, Col);DisplayBoard(board, Row, Col);ret IsWin(board, Row, Col);if (ret ! C)break;Sec(board, Row, Col);DisplayBoard(board, Row, Col);ret IsWin(board, Row, Col);if (ret ! C)break;}if (ret X){printf(玩家获胜\n);}else if (ret O){printf(电脑获胜\n);}else{printf(平局\n);} }❤️ 结语 文章到这里就结束了如果对你有帮助你的点赞将会是我的最大动力如果大家有什么问题或者不同的见解欢迎大家的留言~
http://www.zqtcl.cn/news/54070/

相关文章:

  • 沈阳建设网站公司西安网站排名公司
  • 福州网站建设方案优化山西焦煤集团公司网站
  • 转入已备案网站做空间的网站吗
  • 新网站秒收录技术烟台理工学校网站
  • 免费网站源码博客淮安建设工程协会网站查询系统
  • 个人商城网站源码下载成都广告公司制作
  • seo门户网站优化国内互联网大厂有哪些
  • 五星酒店网站建设方案五屏网站建设代理商
  • 重庆璧山网站制作公司推荐品牌策划案模板范文
  • 秦皇岛网站开发公司电话网站编辑建设
  • 杭州建设网站哪家好网站开发 性能方面
  • 欧美手表网站佛山百度网络推广
  • 玉林网站建设培训旅游网站建设最重要的流程
  • wordpress注册未发邮件六六seo基础运营第三讲
  • 网站seo搜索引擎优化教程门户型网站都有哪些
  • 好学校平台网站模板下载安装网站如何做301转向
  • 网站推广优化技巧大全自己做平台网站
  • 开封市建设中专继续教育网站上海 网络推广
  • 网站后台编辑器无法显示广告店
  • 高端网站设计报价表pc端网站设计规范
  • 制作类似网站软件建网站的目的是什么
  • 用自己的电脑做服务器建网站成立公司注册资本需要实缴吗
  • 重庆转店铺哪个网站平台好网站改版提交 百度
  • 天津市工程建设交易网站查汗国app公司组织结构图
  • 电子政务服务网站建设家教响应式网站
  • 阿里巴巴做网站需要多少钱中英 网站模板 带手机版
  • 网站建设策划书提纲重新安装 wordpress
  • 免费网站软件制作义乌做网站zisou8
  • 网页模板案例百度搜索排行seo
  • 重慶网站建设微信制作企业网站