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

城固城乡建设规划网站县城做信息网站

城固城乡建设规划网站,县城做信息网站,沈阳哪个公司可以做网站,中英文网站程序#x1f3af;每日努力一点点#xff0c;技术进步看得见 #x1f3e0;专栏介绍#xff1a;【C语言步行梯】专栏用于介绍C语言相关内容#xff0c;每篇文章将通过图片代码片段网络相关题目的方式编写#xff0c;欢迎订阅~~ 文章目录 需求分析具体实现主函数体菜单实现游戏实… 每日努力一点点技术进步看得见 专栏介绍【C语言步行梯】专栏用于介绍C语言相关内容每篇文章将通过图片代码片段网络相关题目的方式编写欢迎订阅~~ 文章目录 需求分析具体实现主函数体菜单实现游戏实现棋盘初始化显示棋盘玩家下棋电脑下棋判断棋盘是否已满判断输赢游戏函数主体 完整代码分文件编写 需求分析 上课摸鱼的时候我们可以画个九宫格在里面画上圆圈或者叉。现在我们通过C语言实现这个三子棋游戏实现用户与电脑下棋。 具体实现 主函数体 在主函数体内我们需要调用一个menu函数用它提醒用户输入1开始游戏输入0退出游戏。接收用户输入后通过switch语句执行game()函数或者退出游戏。menu和game函数将在下文中讲解。 int main() {int input 0;do{menu();printf(请输入您的选择);scanf(%d, input);switch(input){case 1:game();//游戏具体实现函数break;case 0:printf(游戏结束\n);break;default:printf(输入有误请重新输入\n);}}while(input);return 0; }菜单实现 首先我们需要一个菜单提示用户输入1可以开始游戏输入0会退出游戏。我通过封装一个menu函数实现↓↓↓ void menu() {printf(*********************************************\n);printf(************** 1.play 0.exit ***************\n);printf(*********************************************\n); }游戏实现 棋盘初始化 我们通过一个char board[3][3]来存储棋盘。如果board[i][j]为空格表示该位置还没有下棋如果board[i][j]存储’*‘星号表示该位置用户已经下棋如果board[i][j]存储‘#’井号表示该位置电脑已经下棋。 但在开始游戏前我们需要将棋盘数组每个元素都初始化空格。↓↓↓ void initBoard(char board[ROW][COL], int rows, int cols) {for(int i 0; i rows; i){for(int j 0; j cols; j){board[i][j] ;}} }显示棋盘 在游戏过程中玩家或者电脑下完棋后需要显示棋盘。用户才能知道当前棋盘的落子情况。 void displayBoard(char board[ROW][COL], int rows, int cols) {for(int i 0; i rows; i){for(int j 0; j cols; j){printf( %c , board[i][j]);if(j ! cols - 1)printf(|);elseprintf(\n);}if(i ! rows - 1){for(int j 0; j cols; j){printf(---);if(j ! cols - 1)printf(|);elseprintf(\n);}}} }上方打印棋盘效果如下图所示。 玩家下棋 提示玩家输入下棋的坐标接收到坐标后我们需要判断该坐标是否为空格表示还没有棋子如果是空格则下棋成功如果不是空格则下棋失败。 void playerAddChess(char board[ROW][COL], int rows, int cols) {printf(玩家下棋\n);displayBoard(board, rows, cols);int x 0;int y 0;while (1){printf(请输入下棋坐标);scanf(%d %d, x, y);if (x rows || x 0 || y cols || y 0){printf(该坐标超出棋盘边界请重新输入\n);continue;}if (board[x - 1][y - 1] ! ){printf(该坐标已经下过棋子请重新输入\n);continue;}board[x - 1][y - 1] *;break;}}电脑下棋 通过随机数函数生成xy坐标。如果生成的坐标位置为空格则电脑下棋完成如果该坐标已被占用则重新生成坐标。 void computerAddChess(char board[ROW][COL], int rows, int cols) {printf(电脑下棋\n);int x 0;int y 0;while(1){x rand() % 3 1;y rand() % 3 1;if(board[x][y] ! )continue;else{board[x - 1][y - 1] #;break;}}displayBoard(board, rows, cols); }判断棋盘是否已满 假设经过判断没有三个棋子能连成一条直线那就无法判断谁赢谁输。若在此时棋盘已经满了但还是没有三个棋子练成一条直线则双方平手平局。如下图所示。 因此我们需要一个函数用来判断棋盘是否已经满了。如果满了则游戏结束没有满则游戏继续。 int isFull(char board[ROW][COL], int rows, int cols) {for(int i 0; i rows; i){for(int j 0; j cols; j){if(board[i][j] )return 0;}}return 1; }判断输赢 在电脑或者玩家下完棋后我们需要判断当前状态下是否有人获胜。根据三子棋的规则三个棋子连成直线即获胜。下面函数中如果玩家获胜则返回’*‘星号如果电脑获胜则返回’#‘井号如果棋盘满了则返回Q表示平局如果没人获胜棋盘也没满则游戏继续返回’C’。 char isWin(char board[ROW][COL], int rows, int cols) {//对每一行判断for(int i 0; i rows; i){if(board[i][0] board[i][1] board[i][1] board[i][2] board[i][0] ! )return board[i][0];}//对每一列判断for(int i 0; i cols; 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[0][0];if(board[0][2] board[1][1] board[1][1] board[2][0] board[0][2] ! )return board[0][2];if(isFull(board, rows, cols))return Q;return C; }游戏函数主体 在实现了上述各个函数后我们只要稍加组织就可以实现游戏了。 void game() {char board[ROW][COL] { 0 };initBoard(board, ROW, COL);char ret 0;while (1){playerAddChess(board, ROW, COL);ret isWin(board, ROW, COL);if (ret ! C)break;computerAddChess(board, ROW, COL);ret isWin(board, ROW, COL);if (ret ! C)break;}switch (ret){case *:printf(玩家获胜\n);break;case #:printf(电脑获胜\n);break;case Q:printf(平局\n);break;} }完整代码 上面代码中主函数中没有加入随机数种子在下面代码中加入了srand((unsigned int)time(NULL))同时对于上面出现ROW、COL的宏定义等也在下方代码整体给出。 #include stdio.h #include stdlib.h #include time.h#define ROW 3 #define COL 3void menu() {printf(*********************************************\n);printf(************** 1.play 0.exit ***************\n);printf(*********************************************\n); }void initBoard(char board[ROW][COL], int rows, int cols) {for (int i 0; i rows; i){for (int j 0; j cols; j){board[i][j] ;}} }void displayBoard(char board[ROW][COL], int rows, int cols) {for (int i 0; i rows; i){for (int j 0; j cols; j){printf( %c , board[i][j]);if (j ! cols - 1)printf(|);elseprintf(\n);}if (i ! rows - 1){for (int j 0; j cols; j){printf(---);if (j ! cols - 1)printf(|);elseprintf(\n);}}} }void playerAddChess(char board[ROW][COL], int rows, int cols) {printf(玩家下棋\n);displayBoard(board, rows, cols);int x 0;int y 0;while (1){printf(请输入下棋坐标);scanf(%d %d, x, y);if (x rows || x 0 || y cols || y 0){printf(该坐标超出棋盘边界请重新输入\n);continue;}if (board[x - 1][y - 1] ! ){printf(该坐标已经下过棋子请重新输入\n);continue;}board[x - 1][y - 1] *;break;}}void computerAddChess(char board[ROW][COL], int rows, int cols) {printf(电脑下棋\n);int x 0;int y 0;while (1){x rand() % 3 1;y rand() % 3 1;if (board[x - 1][y - 1] ! )continue;else{board[x - 1][y - 1] #;break;}}displayBoard(board, rows, cols); }int isFull(char board[ROW][COL], int rows, int cols) {for (int i 0; i rows; i){for (int j 0; j cols; j){if (board[i][j] )return 0;}}return 1; }char isWin(char board[ROW][COL], int rows, int cols) {//对每一行判断for (int i 0; i rows; i){if (board[i][0] board[i][1] board[i][1] board[i][2] board[i][0] ! )return board[i][0];}//对每一列判断for (int i 0; i cols; 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[0][0];if (board[0][2] board[1][1] board[1][1] board[2][0] board[0][2] ! )return board[0][2];if (isFull(board, rows, cols))return Q;return C; }void game() {char board[ROW][COL] { 0 };initBoard(board, ROW, COL);char ret 0;while (1){playerAddChess(board, ROW, COL);ret isWin(board, ROW, COL);if (ret ! C)break;computerAddChess(board, ROW, COL);ret isWin(board, ROW, COL);if (ret ! C)break;}switch (ret){case *:printf(玩家获胜\n);break;case #:printf(电脑获胜\n);break;case Q:printf(平局\n);break;} }int main() {int input 0;do{menu();printf(请输入您的选择);scanf(%d, input);switch (input){case 1:game();//游戏具体实现函数break;case 0:printf(游戏结束\n);break;default:printf(输入有误请重新输入\n);}} while (input);return 0; }分文件编写 可以创建game.h保存头文件及各函数的函数声明game.c保存各个函数的具体实现main.c中保存主函数。 game.h ↓↓↓ #pragma once#include stdio.h #include stdlib.h #include time.h#define ROW 3 #define COL 3//初始化棋盘 void initBoard(char board[ROW][COL], int rows, int cols);//菜单 void menu();//打印棋盘 void displayBoard(char board[ROW][COL], int rows, int cols);//玩家下棋 void playerAddChess(char board[ROW][COL], int rows, int cols);//电脑下棋 void computerAddChess(char board[ROW][COL], int rows, int cols);//游戏 void game();//判断棋盘是否已经满了 int isFull(char board[ROW][COL], int rows, int cols);//判断是否赢 char isWin(char board[ROW][COL], int rows, int cols);game.c ↓↓↓ #include game.hvoid menu() {printf(*********************************************\n);printf(************** 1.play 0.exit ***************\n);printf(*********************************************\n); }void initBoard(char board[ROW][COL], int rows, int cols) {for (int i 0; i rows; i){for (int j 0; j cols; j){board[i][j] ;}} }void displayBoard(char board[ROW][COL], int rows, int cols) {for (int i 0; i rows; i){for (int j 0; j cols; j){printf( %c , board[i][j]);if (j ! cols - 1)printf(|);elseprintf(\n);}if (i ! rows - 1){for (int j 0; j cols; j){printf(---);if (j ! cols - 1)printf(|);elseprintf(\n);}}} }void playerAddChess(char board[ROW][COL], int rows, int cols) {printf(玩家下棋\n);displayBoard(board, rows, cols);int x 0;int y 0;while (1){printf(请输入下棋坐标);scanf(%d %d, x, y);if (x rows || x 0 || y cols || y 0){printf(该坐标超出棋盘边界请重新输入\n);continue;}if (board[x - 1][y - 1] ! ){printf(该坐标已经下过棋子请重新输入\n);continue;}board[x - 1][y - 1] *;break;}}void computerAddChess(char board[ROW][COL], int rows, int cols) {printf(电脑下棋\n);int x 0;int y 0;while (1){x rand() % 3 1;y rand() % 3 1;if (board[x - 1][y - 1] ! )continue;else{board[x - 1][y - 1] #;break;}}displayBoard(board, rows, cols); }int isFull(char board[ROW][COL], int rows, int cols) {for (int i 0; i rows; i){for (int j 0; j cols; j){if (board[i][j] )return 0;}}return 1; }char isWin(char board[ROW][COL], int rows, int cols) {//对每一行判断for (int i 0; i rows; i){if (board[i][0] board[i][1] board[i][1] board[i][2] board[i][0] ! )return board[i][0];}//对每一列判断for (int i 0; i cols; 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[0][0];if (board[0][2] board[1][1] board[1][1] board[2][0] board[0][2] ! )return board[0][2];if (isFull(board, rows, cols))return Q;return C; }void game() {char board[ROW][COL] { 0 };initBoard(board, ROW, COL);char ret 0;while (1){playerAddChess(board, ROW, COL);ret isWin(board, ROW, COL);if (ret ! C)break;computerAddChess(board, ROW, COL);ret isWin(board, ROW, COL);if (ret ! C)break;}switch (ret){case *:printf(玩家获胜\n);break;case #:printf(电脑获胜\n);break;case Q:printf(平局\n);break;} }main.c ↓↓↓ int main() {int input 0;do{menu();printf(请输入您的选择);scanf(%d, input);switch (input){case 1:game();//游戏具体实现函数break;case 0:printf(游戏结束\n);break;default:printf(输入有误请重新输入\n);}} while (input);return 0; }这篇文章结束了~~ 如果文章中出现了错误欢迎私信或留言。(๑•̀ㅂ•́)و✧ 有任何疑问请评论或私信哦~~o(▽)ブ
http://www.pierceye.com/news/888067/

相关文章:

  • 扬州网站建设suteng崇左网页设计
  • 中文网站模板html做网站 最好的开源cms
  • 个人资料展示网站网站建设网络推广外包服务商
  • 外贸网站建设有什么需要注意的吗网站建设职业发展前景
  • 企业网站建设方案效果版权WordPress
  • 做网站知道访客ip汝州文明建设网站
  • 吴江建设局网站打不开了网站备案信息地址
  • 长沙网站建设优化局域网网站架设软件
  • 重庆企业网站建设解决方案seo关键词怎么优化
  • 信誉好的大良网站建设做的好的ppt下载网站有哪些
  • 栖霞网站定制手机网站图片自适应代码
  • 企业网站管理中心网站海外推广
  • 书店商城网站设计万网虚拟主机做网站教程
  • 文化类网站是不是休闲娱乐类网站wordpress插件 ftp
  • 织梦系统网站吉林省建设安全厅官方网站
  • 网站推广网站关键词排名怎么做建站教程wp
  • 用织梦系统做网站产权网站建设需要掌握什么技术
  • 南宁seo平台费用安徽网站关键词优化排名
  • 李贤威 wordpress甘肃搜索引擎网络优化
  • 网站建设的步骤图片过程9377将军
  • 做彩票网站需要什么服务器wordpress slug
  • 个人空间网站建设太原做网页软件
  • 网站建站方式有哪些wordpress星座主题自适应
  • 如何为公司做网站算命 网站开发
  • 那些做软件的网站十大装潢公司上海
  • wordpress 仿站 主题公路建设网站
  • 接网站 建设网站建设业务员招聘
  • 江西工程建设信息网站服装公司网站建设
  • 什么店是做网站制作的dw网站结构图怎么做
  • 一个网站开发需要多久软件开发工时费用标准