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

山西建站推广做网站好的网站建设公司哪家好

山西建站推广,做网站好的网站建设公司哪家好,html5手机商城网站模板,凡科 wordpress前言#xff1a; 三子棋是一种民间传统游戏#xff0c;又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏规则是双方对战#xff0c;双方依次在9宫格棋盘上摆放棋子#xff0c;率先将自己的三个棋子走成一条线就视为胜利。但因棋盘太小#xff0c;三子棋在很多时候会出现和…  前言 三子棋是一种民间传统游戏又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。游戏规则是双方对战双方依次在9宫格棋盘上摆放棋子率先将自己的三个棋子走成一条线就视为胜利。但因棋盘太小三子棋在很多时候会出现和棋的局面。 设计思路 先开一个test.c文件用来进行游戏的逻辑测试再开一个game.h头文件和game.c文件分别用来进行函数声明和实现游戏的逻辑然后就是打印菜单、生成棋盘、实现玩家下棋、实现电脑下棋、判断游戏的输赢、游戏优化。 1. 打印菜单 test.c void menu() {printf(***************************\n);printf(******** 1.play ********\n);printf(******** 2.exit ********\n);printf(***************************\n); }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; } 2. 生成棋盘 2.1 初始化棋盘 我们可以用空格将每一个格子初始化。 test.c文件 board[ROW][COL] { 0 }; InitBoard(board, ROW, COL); game.c文件 void InitBoard(char board[ROW][COL], int row, int col) {for (int i 0; i row; i){for (int j 0; j col; j){board[i][j] ;}} } 其中的ROW和COL是两个宏定义。 game.h #define ROW 3 #define COL 32.2 打印棋盘 打印棋盘时我们可以一些符号隔开不同的空格这样就会使我们的棋盘更加美观。比如我们可以使用“|”将同一行的空格分开用“-”将不同行的空格分开这样我们就可以得到一个如下的九宫格了。 game.c文件 void DisplayBoard(char board[ROW][COL], int row, int col) {for (int i 0; i row; i){for (int j 0; j col; j){printf( );if (j col - 1){printf(|);}}printf(\n);if (i row - 1){for (int j 0; j col; j){printf(---);if (j col - 1)printf(|);}printf(\n);}} }3. 实现玩家下棋和电脑下棋 为了游戏的可实行性当玩家或电脑下完一个棋子后我们需要考虑以下两点 1.玩家或电脑所下的坐标是否在棋盘的范围内。 2.玩家或电脑所下的位置是否已经被下过棋子了。 依据上面的两点条件的我们需要分别写一个条件语句判断玩家是否合法下棋。 3.1 玩家下棋 game.c文件 void PlayerMove(char board[ROW][COL], int row, int col) {int x 0, y 0;printf(玩家下棋:\n);while (1){printf(请输入你要落子的坐标:);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] *;break;}else{printf(输入的坐标已被占用请重新输入\n);}}else{printf(坐标非法,请重新输入\n);}} } 3.2 电脑下棋 思路  我们可以在让电脑生成随机数这样就可以使其随机生成一个坐标下棋子那么我们就可以简单的实现电脑下棋的效果了。 随机数的生成则可以使用rand函数、srand函数以及time函数。 game.c文件 void ComputerMove(char board[ROW][COL], int row, int col) {printf(电脑下棋:\n);while (1){int x rand() % row;int y rand() % row;if (x row x 1 y row y 1){if (board[x][y] ){board[x][y] #;break;}}} } test.c文件 srand((unsigned int)time(UNLL)) game.h文件 #includetime.h #includestdlib.h 为了实现玩家下一个棋然后电脑下一个棋的功能我们还需加上一个while循环。如下 test.c文件 while(1) {//玩家下棋PlayerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//电脑下棋ComputerMove(board, ROW, COL);DisplayBoard(board, ROW, COL); } 4. 判断游戏的输赢 思路 此游戏无非只有三种结果要么玩家赢要么电脑赢要么平局。所以我们可以写一个函数判断是这几种结果的哪一种然后规定如果是玩家赢此函数返回“*”如果是电脑赢则返回“#”平局则返回“Q”这几种都不是就说明游戏继续那么就返回“C”. 要判断是否有赢的一方无非就是判断是否出现了三个相同的棋子练成一条直线而棋子连成的线无非就只有三种情况竖线、横线、对角线。所以我们只需要判断是否出现了这三种情况的其中一种就可以了。而要判断是平局则判断九宫格是否还有没有空格。 game.c文件 int ItFull(char board[ROW][COL], int row, int col) {for (int i 0; i row; i){for (int j 0;j col; j){if (board[i][j] ){return 0;}}}return 1; } char ItWin(char board[ROW][COL], int row, int col) {//行for (int i 0; i row; i){if (board[i][0] board[i][1] board[i][1] board[i][2] board[i][2] ! )return board[i][1];}//列for (int j 0; j col; j){if (board[0][j] board[1][j] board[1][j] board[2][j] board[2][j] ! )return board[1][j];}//对角线if (board[0][0] board[1][1] board[1][1] board[2][2] board[2][2] ! 0){return board[1][1];}if (ItFull(board, row, col)){return Q;}return C; } test.c文件 //玩家下棋PlayerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//判断输赢char ret ItWin(board, ROW, COL);if (ret ! C){if (ret *){printf(玩家赢了!!!\n);}break;}//电脑下棋ComputerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//判断输赢ItWin(board, ROW, COL);if (ret ! C){if (ret #){printf(电脑赢了!!!\n);}break;} 完整代码 game.h文件 #includestdio.h #includestdlib.h #includetime.h#define ROW 3 #define COL 3void 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 ItWin(char board[ROW][COL], int row, int col); test.c文件 #includegame.hvoid menu() {printf(***************************\n);printf(******** 1.play ********\n);printf(******** 2.exit ********\n);printf(***************************\n); } void game() {//第一步打印棋盘。char board[ROW][COL] { 0 };//初始化棋盘InitBoard(board, ROW, COL);//打印棋盘DisplayBoard(board, ROW, COL);char ret;while(1){//玩家下棋PlayerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//判断输赢char ret ItWin(board, ROW, COL);if (ret ! C){if (ret *){printf(玩家赢了!!!\n);}break;}//电脑下棋ComputerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//判断输赢ItWin(board, ROW, COL);if (ret ! C){if (ret #){printf(电脑赢了!!!\n);}break;}} } int main() {srand((unsigned int)time(NULL));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.c文件 #includegame.hvoid InitBoard(char board[ROW][COL], int row, int col) {for (int i 0; i row; i){for (int j 0; j col; j){board[i][j] ;}} }void DisplayBoard(char board[ROW][COL], int row, int col) {for (int i 0; i row; i){for (int j 0; j col; j){printf( %c ,board[i][j]);if (j col - 1)printf(|);}printf(\n);if (i row - 1){for (int 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, y 0;printf(玩家下棋:\n);while (1){printf(请输入你要落子的坐标:);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] *;break;}else{printf(输入的坐标已被占用请重新输入\n);}}else{printf(坐标非法,请重新输入\n);}} }void ComputerMove(char board[ROW][COL], int row, int col) {printf(电脑下棋:\n);while (1){int x rand() % row;int y rand() % row;if (x row x 1 y row y 1){if (board[x][y] ){board[x][y] #;break;}}} }int ItFull(char board[ROW][COL], int row, int col) {for (int i 0; i row; i){for (int j 0;j col; j){if (board[i][j] ){return 0;}}}return 1; } char ItWin(char board[ROW][COL], int row, int col) {//行for (int i 0; i row; i){if (board[i][0] board[i][1] board[i][1] board[i][2] board[i][2] ! )return board[i][1];}//列for (int j 0; j col; j){if (board[0][j] board[1][j] board[1][j] board[2][j] board[2][j] ! )return board[1][j];}//对角线if (board[0][0] board[1][1] board[1][1] board[2][2] board[2][2] ! 0){return board[1][1];}if (ItFull(board, row, col)){return Q;}return C; } 运行图 游戏优化  让电脑生成一个数的方式来实现一个电脑下棋的效果肯定是没有什么可玩性的等后面学习算法之后我们就加入一些算法将其变为一个棋艺高超的棋手了。 以上就是使用c语言写三子棋的全部内容啦如果上述内容对你有帮助的话不要忘记点上一个小小的赞和关注呦期待我们下次再见。
http://www.dnsts.com.cn/news/247914.html

相关文章:

  • 铜仁市建设招投标网站模版网站商城
  • 安徽网站备案广东省网站设计与开发
  • 网站图片添加alt标签河北集团网站建设
  • 商城网站有免费建设的吗asp网站打开
  • 郑州网站优化的微博_腾讯微博网站开发需要什么东西
  • 非织梦做的网站能仿吗南昌网站seo外包服务
  • 陕西中小企业网站建设推广定期做图书推荐的网站
  • 做网站go和php用哪个好eclipse可以做网站吗
  • 校园网站wordpress调用服务器文件
  • 邯郸市搞网站服务务的吗秦皇岛房产网
  • 做公司网站的办公室设计风格有哪些
  • 做一个网站一般需要多少钱免费网页设计源码
  • 如何修改网站后台的用户名和密码手机建立网站的软件
  • 网站怎样做多语言切换手机端快速建站工具
  • 上海网站推广服务公司开发文档
  • 设计干货很多的网站专业做运动服装的网站
  • 企业网站的建设费用wordpress建站方向
  • 惠州网站建设价格怎么用网网站模板做网站
  • 电商网站开发系统架构dhru商城网站建设
  • 绵阳市建设银行网站seo外贸网站建设
  • wordpress 网站投票个人养老保险查询
  • 做套网站多少钱连云港做网站哪家好
  • 桂林北站附近的景点wordpress全站同一个标题
  • 微网站开发外包西部数码网站管理软件
  • 合肥家居网站建设怎么样济南网站建设哪家好
  • 免费高清素材网站邢台123式的网站怎么做
  • 20个外国平面设计网站东莞网络推广公司排行榜
  • 大淘客官网做的网站打不开物流网站的建设论文一万字
  • 做关于网站的开题报告公司简介网站怎么做
  • php网站开发入门网站页面设计说明