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

沈阳网站设计外包万户做网站怎么样

沈阳网站设计外包,万户做网站怎么样,wordpress 上传svg,个人网站怎么做视频基本框架 三个文件: 其中.cpp文件用于游戏具体函数设计#xff0c;.h文件为游戏的函数声明#xff0c;test.cpp文件用于测试游戏运行。 需要用到的头文件#xff1a; #include stdio.h #include stdlib.h//randsrand #include time.h//时间相…基本框架 三个文件: 其中.cpp文件用于游戏具体函数设计.h文件为游戏的函数声明test.cpp文件用于测试游戏运行。 需要用到的头文件 #include stdio.h #include stdlib.h//randsrand #include time.h//时间相关 框架运行 #includegame.h void menu() {printf(*********************************\n);printf(******** 1. play ********\n);printf(******** 0. exit ********\n);printf(*********************************\n); } void game() {} int main() {int input;do{menu();printf(请选择:);scanf(%d, input);switch (input){case 1:game();break;case 0:printf(退出游戏\n);break;default:printf(选择错误重新选择!\n);break;}} while (input);return 0; } 运行结果 棋盘 棋盘是一个3*3的平面可以用二维数组接收编译器不支持变长数组我们可以用define定义数组的下标(行和列)之后有大用。 #define COL 3 #define ROW 3 打印 为什么没有对齐呢这是因为字符数组初始化为0等价于\0而\0是不会显示出来的所以我们再添加一个初始化函数。 初始化函数 因为游戏可以反复游玩我们不妨设置一个初始化函数将棋子置于初始状态(  字符)。 void init_board(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){board[i][j] ;}}} 可以发现这次棋盘很标准了但有点刻意的风味如果想要一个10*10的棋盘又要重新设计吗应对此种情况我们试着改进棋盘。 棋盘改进 void display_board(char board[ROW][COL], int row, int col) {int i 0;for (i 0; i row; i){//printf( %c | %c | %c \n, board[i][0], board[i][1], board[i][2]);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)//末行不用分割{for (j 0; j col; j){printf(---);if (j col - 1){printf(|);}}printf(\n);}} } 看着挺复杂其实很简单只要找出重复的部分再进行循环和判断就能打印出你想要的样子 玩家下棋 玩家下棋有两个注意点判断坐标是否合法和坐标是否被占用。为此我们需要设计一个循环语句。坐标范围从1开始而不是从0开始是因为让玩家觉得合理。 void player_move(char board[ROW][COL], int row, int col) {int x;int y;while (1){printf(请输入要下棋的坐标:);scanf(%d %d, x, y);if (y col x row){if (board[x-1][y-1] ){board[x-1][y-1] *;break;}else{printf(该坐标被占用请重新输入\n);}}else{printf(坐标非法重新输入\n);}} } 测试  电脑下棋 需要用随机函数rand生成随机数和srand设置初始点使之电脑能随机在棋盘上下棋。 srand放在主函数里循环体前只需执行一次。  void computer_move(char board[ROW][COL], int row, int col) {while (1){int x rand() % 3;//0~2int y rand() % 3;if (board[x][y] ){board[x][y] #;break;}} }胜负评判 接着需要我们评判双方获胜条件即三子连成一条线的情况。 这里我们直接无脑评判就行如果三处相同且不为空格则说明一方胜利 char is_win(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][0] ! ){return board[i][1];}}//列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[1][1] ! ){return board[1][1];}if (board[0][2] board[1][1] board[1][1] board[2][0] board[1][1] ! ){return board[1][1];}//判断平局if (is_full(board, row, col) 1){return Q;}//继续return C; } 这里有个取巧的方法可以直接用我们棋子所代表的字符作为返回值进行判断。 是否平局 平局需要单独判断我们可以封装一个函数遍历看棋盘是否已满就行了。 static int is_full(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){if ( board[i][j]){return 0;}}}return 1; } 这里的static是只对本文件可见因为它只用于我们的胜负评判。 接下来我们对主函数的game函数再增添胜负评判每次落子之后进行评判根据对应的返回值输出相应的结果。 运行结果 完整代码 //game.c #include game.h void display_board(char board[ROW][COL], int row, int col) {int i 0;for (i 0; i row; i){//printf( %c | %c | %c \n, board[i][0], board[i][1], board[i][2]);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)//末行不用分割{for (j 0; j col; j){printf(---);if (j col - 1){printf(|);}}printf(\n);}}printf(\n); } void init_board(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){board[i][j] ;}}} void player_move(char board[ROW][COL], int row, int col) {int x;int y;while (1){printf(请输入要下棋的坐标:);scanf(%d %d, x, y);if (y col x row){if (board[x-1][y-1] ){board[x-1][y-1] *;break;}else{printf(该坐标被占用请重新输入\n);}}else{printf(坐标非法重新输入\n);}} } void computer_move(char board[ROW][COL], int row, int col) {while (1){int x rand() % 3;int y rand() % 3;if (board[x][y] ){board[x][y] #;break;}} }static int is_full(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){if ( board[i][j]){return 0;}}}return 1; } char is_win(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][0] ! ){return board[i][1];}}//列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[1][1] ! ){return board[1][1];}if (board[0][2] board[1][1] board[1][1] board[2][0] board[1][1] ! ){return board[1][1];}//判断平局if (is_full(board, row, col) 1){return Q;}//继续return C; }//.h #define _CRT_SECURE_NO_WARNINGS 1 #pragma once#include stdio.h #include stdlib.h #include time.h#define ROW 3 #define COL 3//初始化棋盘 void init_board(char board[ROW][COL], int row, int col); //打印棋盘 void display_board(char board[ROW][COL], int row, int col); //玩家下棋 void player_move(char board[ROW][COL], int row, int col); //电脑下棋 void computer_move(char board[ROW][COL], int row, int col); //判断游戏状态 char is_win(char board[ROW][COL], int row, int col);//test.c #includegame.h void menu() {printf(*********************************\n);printf(******** 1. play ********\n);printf(******** 0. exit ********\n);printf(*********************************\n); } void game() {char board[ROW][COL] { 0 };init_board(board, ROW, COL);display_board(board, ROW, COL);char ret;while (1){player_move(board, ROW, COL);display_board(board, ROW, COL);ret is_win(board, ROW, COL);if (ret ! C)break;computer_move(board, ROW, COL);display_board(board, ROW, COL);ret is_win(board, ROW, COL);if (ret ! C)break;}if (ret Q){printf(平局\n);}if (ret *){printf(玩家胜\n);}if (ret #){printf(电脑胜\n);} } int main() {int input;srand((unsigned int)time(NULL));do{menu();printf(请选择:);scanf(%d, input);switch (input){case 1:game();break;case 0:printf(退出游戏\n);break;default:printf(选择错误重新选择!\n);break;}} while (input);return 0; }
http://www.yutouwan.com/news/380762/

相关文章:

  • 服装箱包网站建设网站的类型有哪些
  • 微信网站建设费用计入什么科目seo详细教程
  • 什么网站可以做h5做网站的主题有哪些
  • 毕业设计做网站好的想法昆山网站建设哪家便宜
  • sql网站模板最挣钱的三个销售行业
  • 网站模板免费下载网站郓城做网站网络公司
  • 网站开发用什么图片格式最好网站建设培训教程新手入门到精通
  • 查看网站速度3d设计公司
  • 网站制作建设需求济南个人网站建设
  • 政务类网站西乡网站建设
  • 潍坊seo建站重庆做网站多少钱
  • 黑色时尚橱柜网站源码贵阳手机银行app下载
  • 网站服务器异常是什么意思wordpress搜索功能优化
  • 两学一做网站源码广州竞价外包
  • 扬州网站推广公司上海集团网站建设公司好
  • 城口自助建站深圳营销型网站建设公司网络服务
  • 十堰网站制作快速网站
  • 网站怎样投放广告位东莞厚街劳务事件
  • wordpress新闻站做易经类的网站
  • 陕西网站建设营销推广江西南昌网站建设哪家公司好
  • 泰安哪里可以做网站网站关键字怎么分割
  • 亚购物车功能网站怎么做的wordpress 获取下一篇
  • 网站开发软件和工具ide和编辑器宁波网站制作作
  • wordpress多站点问题网站地图灰色效果的怎么做的
  • 集美网站建设阿里云服务器做盗版视频网站
  • 旅游类网站设计镇江网站制作费用
  • 网站服务器规划 用户数网站需要每个城市做推广吗
  • 做网站的费用如何写分录西安搬家公司电话附近联系方式
  • 哈尔滨营销网站制作3d网页游戏开服表
  • 专门做设计的网站有哪些做项目的编程网站