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

建设医院官方网站中国建设人才网站

建设医院官方网站,中国建设人才网站,建立虚拟网站,学做网站教程视频目录 主函数test.c 菜单函数 选择实现 游戏函数 #xff08;函数调用#xff09; 打印棋盘数据 打印展示棋盘 玩家下棋 电脑下棋 判断输赢 循环 test.c总代码 头文件函数声明game.h 头文件的包含 游戏符号声明 游戏函数声明 game.h总代码 游戏函数ga…目录 主函数test.c 菜单函数 选择实现 游戏函数 函数调用 打印棋盘数据 打印展示棋盘  玩家下棋 电脑下棋 判断输赢 循环 test.c总代码  头文件函数声明game.h 头文件的包含 游戏符号声明 游戏函数声明 game.h总代码  游戏函数game.c  打印棋盘数据InitBoard 打印展示棋盘DisplayBoard  打印数据行 打印分割行 玩家下棋PlayerMove 展示棋盘DisplayBoard  电脑下棋ComputerMove 展示棋盘DisplayBoard  判断输赢IsWin 判断平局IsFull game.c总代码 拖了许久的三子棋游戏的实现今天来一步一步的实现三子棋游戏。 主函数test.c 菜单函数 void menu() {printf(***************************\n);printf(******* 1.Play ********\n);printf(******* 0.over ********\n);printf(***************************\n); } 选择实现 void menu() {printf(***************************\n);printf(******* 1.Play ********\n);printf(******* 0.over ********\n);printf(***************************\n); } void game() {printf(开始游戏三子棋\n); } int main() {//打印菜单int input 0;do{menu();printf(请玩家选择\n);scanf(%d, input);switch (input)//分支语句{case 1://玩游戏{game();break;}case 0://结束游戏{printf(游戏结束\n);break;}default:{printf(输入错误请重新选择\n);break;}}} while (input); } 以上游戏的菜单和游戏选择我们曾在玩数字游戏中写过大家可以回顾复习一下。 游戏函数 函数调用 打印棋盘数据 打印棋盘我们需要创建二维数组存放棋盘数据。 char board[ROW][COL];//创建一个二维数组行和列我们需要创建一个函数InitBoard功能是初始化棋盘数据。 InitBoard(board,ROW,COL);//把数组 数组的行和列都传过去 打印展示棋盘  打印棋盘  DisplayBoard(board,ROW,COL); 玩家下棋 PlayerMove(board,ROW,COL); 电脑下棋 ComputerMove(board, ROW, COL); srand((unsigned int)time(NULL));//产生随机数 //随机数的产生我们在前面猜数字游戏已经讲解过了忘了的的小朋友可以去看看。 判断输赢 玩家赢——函数返回*电脑赢——函数返回#平局——函数返回Q以上三种都跳出了循环只有游戏继续——返回C——继续循环  Iswin(board, ROW, COL); char ret0; ret Iswin(board, ROW, COL); if (ret ! C) {break; } if (ret *){printf(玩家赢\n);}if (ret #){printf(电脑赢\n);}if (ret Q){printf(平局\n);} 循环 每次玩家下棋完展示棋盘和判断输赢同理电脑下棋完也要展示棋盘和判断输赢。 void game() {char board[ROW][COL];InitBoard(board, ROW, COL);DisplayBoard(board, ROW, COL);//下棋循环char ret 0;while (1){PlayerMove(board, ROW, COL);//玩家下棋DisplayBoard(board, ROW, COL);//展示棋盘//判断输赢ret Iswin(board, ROW, COL);if (ret ! C){break;}ComputerMove(board, ROW, COL);//电脑下棋DisplayBoard(board, ROW, COL);//展示棋盘//判断输赢ret Iswin(board, ROW, COL);if (ret ! C){break;}}if (ret *){printf(玩家赢\n);}if (ret #){printf(电脑赢\n);}if (ret Q){printf(平局\n);} } test.c总代码  #define _CRT_SECURE_NO_WARNINGS 1 #includegame.h void menu() {printf(***************************\n);printf(******* 1.Play ********\n);printf(******* 0.over ********\n);printf(***************************\n); } //判断输赢 //玩家赢——返回* //电脑赢——返回# //平局——Q // 以上三种都跳出了循环 //游戏继续——C //继续循环 void game() {char board[ROW][COL];InitBoard(board, ROW, COL);DisplayBoard(board, ROW, COL);//下棋循环char ret 0;while (1){PlayerMove(board, ROW, COL);//玩家下棋DisplayBoard(board, ROW, COL);//展示棋盘//判断输赢ret Iswin(board, ROW, COL);if (ret ! C){break;}ComputerMove(board, ROW, COL);//电脑下棋DisplayBoard(board, ROW, COL);//展示棋盘//判断输赢ret Iswin(board, ROW, COL);if (ret ! C){break;}}if (ret *){printf(玩家赢\n);}if (ret #){printf(电脑赢\n);}if (ret Q){printf(平局\n);} } int main() {//打印菜单int input 0;srand((unsigned int)time(NULL));//产生随机数do{menu();printf(请玩家选择\n);scanf(%d, input);switch (input)//分支语句{case 1://玩游戏{printf(开始游戏\n);game();break;}case 0://结束游戏{printf(游戏结束\n);break;}default:{printf(输入错误请重新选择\n);break;}}} while (input); } 头文件函数声明game.h 头文件的包含 在我们写代码的过程中会调用库函数需要包含头文件和声明函数。 所以我们将所有函数声明和头文件放到我们.h 文件中。 当然在其他.c文件需要使用时我们只需要包含 我们创造的 头文件game.h 即可。  //#includegame.h #includestdio.h #includetime.h #includestdlib.h 游戏符号声明 #define ROW 3 #define COL 3 游戏函数声明 void InitBoard(char board[ROW][COL],int row,int col);//打印棋盘数据 void DisplayBoard(char board[ROW][COL], int row, int col);//打印棋盘 void PlayerMove(char board[ROW][COL], int row, int col); void ComputerMove(char board[ROW][COL], int row, int col); char Iswin(char board[ROW][COL], int row, int col); int IsFull(char board[ROW][COL], int row, int col); game.h总代码  #define _CRT_SECURE_NO_WARNINGS 1 #pragma once #includestdio.h #includetime.h #includestdlib.h #define ROW 3 #define COL 3 void InitBoard(char board[ROW][COL], int row, int col); void DisplayBoard(char board[ROW][COL], int row, int col); void PlayerMove(char board[ROW][COL], int row, int col); void ComputerMove(char board[ROW][COL], int row, int col); char Iswin(char board[ROW][COL], int row, int col); int IsFull(char board[ROW][COL], int row, int col); 游戏函数game.c  分析一下棋盘。 棋盘分为 数据行和分割行 。数据行落子在棋盘上每一个棋盘上的位置对应二维数组中的一个数组元素。在还未 落子   在棋盘上的时候最开始棋盘上的数据初始化为空格 分割行有行和列。 分析完棋盘我们要将棋盘打印出来也就是把数据行和分割行打印出来我们需要拆分 。 数据行我们拆分为  空格和 | 分割行我们拆分为   ----和 |  注意分割行没有最后一列和最后一行用分支语句来控制。  打印棋盘数据InitBoard 我们将数组的参数传递给了函数InitBoard。接下来利用遍历二维数组元素把数组中的元素初始化(用赋值运算符)为 空格 初始化空格注意是 单引号 #includegame.h void InitBoard(char board[ROW][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] ;//初始化为空格//字符单引号}} } 打印展示棋盘DisplayBoard  注意要换行注意数据行和分割行的空位大小要一致注意使用行和列循环棋盘被改变格式3*3改为10*10也不会错乱。 打印数据行 void DisplayBoard(char board[ROW][COL], int row, int col) {int i 0;int j 0;for (i 0; i row; i)//控制行一行一行打印{//打印数据行int j 0;//每行的元素按列打印for (j 0; j col; j){printf( , 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(|);}}} } 棋盘效果如下 玩家下棋PlayerMove 注意设置限制条件_不能超出棋盘范围 注意棋盘是数组数组的下标是从0开始的。 注意循环,下棋成功break跳出循环。 void PlayerMove(char board[ROW][COL], int row, int col) {int x 0;int y 0;while (1){//先让玩家下棋printf(请输入要下棋的坐标:);scanf(%d %d, x, y);//不能超出棋盘范围if (x 1 x row y col y1){if (board[x - 1][y - 1] )//数组下标要从开始{board[x - 1][y - 1] *;}else{printf(该坐标已被占用请输入其他坐标\n);}}else{printf(坐标超出棋盘范围请重新输入\n);}} } 展示棋盘DisplayBoard  电脑下棋ComputerMove 随机数的产生要掌握  void ComputerMove(char board[ROW][COL], int row, int col) {printf(电脑下棋\n);int x 0;int y 0;while (1){x rand() % row;y rand() % col;//产生随机值if (board[x][y] ){board[x][y] #;break;}} } 展示棋盘DisplayBoard  判断输赢IsWin 玩家赢——函数返回*电脑赢——函数返回#平局——函数返回Q以上三种都跳出了循环只有游戏继续——返回C——继续循环  产生以上的结果的条件我们来分析以下 char Iswin(char board[ROW][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][1] ! )//循环1{return board[i][1];}if (board[0][i] board[1][i] board[1][i] board[2][i] board[1][i] ! )//循环2{return board[1][i];}if (board[0][0] board[1][1] board[1][1] board[2][2] board[1][1] ! )//循环3{return board[1][1];}if (board[2][2] board[1][1] board[1][1] board[0][2] board[1][1] ! ){return board[1][1];}if (IsFull(board, row, col))//返回1真执行返回0假不执行{return Q;}//如果以上情况均不是return C;} } 判断平局IsFull if (IsFull(board, row, col))//返回1真执行返回0假不执行 {return Q; } int IsFull(char board[ROW][COL], int row, int col) {int i 0;int j 0;for (i 0; i row; i){for (j 0; j col; j){if (board[i][j] )return 0;//有空位不执行}}return 1; } game.c总代码 #define _CRT_SECURE_NO_WARNINGS 1 #includegame.h void InitBoard(char board[ROW][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[ROW][COL], int row, int col) {int i 0;int j 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[ROW][COL], int row, int col) {int x 0;int y 0;while (1){//先让玩家下棋printf(请输入要下棋的坐标:);scanf(%d %d, x, y);//不能超出棋盘范围if (x 1 x row y col y1){if (board[x - 1][y - 1] )//数组下标要从开始{board[x - 1][y - 1] *;break;}else{printf(该坐标已被占用请输入其他坐标\n);}}else{printf(坐标超出棋盘范围请重新输入\n);}} }void ComputerMove(char board[ROW][COL], int row, int col) {printf(电脑下棋\n);int x 0;int y 0;while (1){x rand() % row;y rand() % col;//产生随机值if (board[x][y] ){board[x][y] #;break;}} }char Iswin(char board[ROW][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][1] ! )//循环1{return board[i][1];}if (board[0][i] board[1][i] board[1][i] board[2][i] board[1][i] ! )//循环2{return board[1][i];}if (board[0][0] board[1][1] board[1][1] board[2][2] board[1][1] ! )//循环3{return board[1][1];}if (board[2][2] board[1][1] board[1][1] board[0][2] board[1][1] ! ){return board[1][1];}if (IsFull(board, row, col))//返回1真执行返回0假不执行{return Q;}//如果以上情况均不是return C;} }int IsFull(char board[ROW][COL], int row, int col) {int i 0;int j 0;for (i 0; i row; i){for (j 0; j col; j){if (board[i][j] )return 0;//有空位不执行}}return 1; } ✔✔✔✔✔最后感谢大家的阅读如有不足和错误欢迎指正。 代码---------→【gitee:https://gitee.com/TSQXG】 联系---------→【邮箱2784139418qq.cqq
http://www.zqtcl.cn/news/950491/

相关文章:

  • 可以做网站的公司有哪些聊天软件开发厂家有哪些
  • 正规网站建设公司一般要多少钱婚纱网站有哪些
  • 企业网站开发目的和意义住房和城乡建设厅官网查询
  • 直播一级a做爰片免费网站wordpress 模板 使用
  • 网站开发中期检查优质的菏泽网站建设
  • 建设网站号码在线html编辑
  • 品牌型网站制作有哪些公司石家庄广告制作公司
  • 做网站赚几百万网站效果图怎么做的
  • 哪些网站做企业招聘不要花钱wordpress底部导航代码
  • 怎么用链接进自己做的网站企业组织架构
  • 建设新网站征求意见网站设计佛山
  • 重庆建设造价工程信息网站东莞电商页面设计公司
  • 乔拓云智能建站官网登录入口怎么样做网站卖农产品
  • 怎么维护好网站网站的域名每年都要续费
  • 运动网站模板佛山三水区有没有网站建设公司
  • 申请微官网的网站国外域名注册商网站
  • 集团公司网站建设建设中学校园网站的来源
  • 产品展示网站含后台网站模板下载网站开发什么语言好
  • 做知乎网站的图片如何设计好网站
  • 广州企业网站推广织梦学校网站模板
  • 国内响应式网站案例深圳住房和城乡建设局网站
  • 网页制作网站首页中国建筑论坛网
  • 众创空间网站建设少年宫网站建设模块
  • 企业营销型网站的内容科技公司取名大全
  • 哈尔滨云建站模板投资公司的钱从哪里来
  • 海南做网站公司哪家好中国人做外贸生意的网站
  • 没有网站怎么做cpa成都百度推广公司地址
  • 龙湖地产 网站建设高端上海网站设计公司
  • 触屏手机网站模板装修设计软件排名
  • 怎么做盗文网站郑州建设教育培训中心