这期内容当中小编将会给大家带来有关C语言实现三子棋实例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。首先,我将该程序的实现分为3个板块,main,game.h,和game.c;代码如下:#def
这期内容当中小编将会给大家带来有关C语言实现三子棋实例代码怎么写,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
首先,我将该程序的实现分为3个板块,main,game.h,和game.c;
代码如下:
#define _CRT_SECURE_NO_WARNINGS#include"game.h" void menu(){printf("****************************************\n");printf("*********** 1.play 0.exit ************\n");printf("****************************************\n");} void game(){char board[ROW][COL] = {0};Creatboard(board, ROW,COL);//创建棋盘Displayboard(board,ROW,COL); //初始化棋盘while (1){PlayerMove(board,ROW,COL);//玩家移动Displayboard(board, ROW, COL);//绘制char i = Result(board, ROW, COL);//判断switch (i){case '*':printf("你赢了!");Sleep(2000);Creatboard(board, ROW, COL);break;case '#':printf("你输了!");Sleep(2000);Creatboard(board, ROW, COL);break;case 'p':printf("平局!");Sleep(2000);Creatboard(board, ROW, COL);break;case 'c':;}//我没用鹏哥讲的;用的switch好像更麻烦了system("cls");//清屏ComputerMove(board, ROW, COL);//电脑移动Displayboard(board, ROW, COL);switch (i){case '*':printf("你赢了!");Sleep(2000);Creatboard(board, ROW, COL);break;case '#':printf("你输了!");Sleep(2000);Creatboard(board, ROW, COL);break;case 'p':printf("平局!");Sleep(2000);Creatboard(board, ROW, COL);break;case 'c':;}}} void control(){int n = 0;do {menu();//菜单页面printf("请选择:>");scanf("%d", &n);switch (n){case 0:printf("退出游戏\n");break;case 1:game();break;default:printf("输入错误,请重新输入\n");break;} } while (n);} int main(){srand ((unsigned int)time(NULL));//时间戳control();return 0;}
这部分我用了switch之后比较麻烦,也没有结束游戏的退出程序,写的比较乱。
我将所用的头文件都放在了game.h里,着是鹏老师教的写大程序的方式,使程序结构一目了然。
#define ROW 3#define COL 3 #include<stdio.h>#include<time.h>#include<windows.h>//函数声明void Creatboard(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 Result(char board[ROW][COL], int row, int col);
对函数的定义是主要事项,判断三子棋当前是否输赢或是平局,以及棋盘绘制的规律,都是在看了几遍后才明白,我这个比较粗糙,有能力的可以自行修改一下绘制的图案。
#define _CRT_SECURE_NO_WARNINGS #include"game.h" void Creatboard(char board[ROW][COL], int row,int col){int i = 0, j = 0;for (i = 0; i < row; i++){for (j = 0; j < col; j++){board[i][j] = ' ';}}} void Displayboard(char board[ROW][COL], int row, int col)//绘制图案最好用循环,直接用printf按鹏哥的话说比较挫{int i = 0, j = 0;for (i = 0; i < row; i++){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");}} void PlayerMove(char board[ROW][COL], int row, int col)//下棋的位置是用坐标表示的{int x, y;printf("玩家请下棋:>\n");again:scanf("%d %d", &x, &y);if (board[x - 1][y - 1] == ' '){board[x - 1][y - 1] = '*';}else{printf("非法位置,请重新输入\n");Goto again;}} void ComputerMove(char board[ROW][COL], int row, int col){printf("电脑下棋中\n");while (1){int x = rand() % row;//生成0~2之间的随机数int y = rand() % col;if (board[x][y] == ' '){board[x][y] = '#';break;}}} int Full(char board[ROW][COL], int row, int col)//判定棋盘是否下满{int i = 0, j = 0;for (i = 0; i < row; i++){for (j = 0; j < col; j++){if (board[i][j] == ' ')return 0;}}return 1;} char Result(char board[ROW][COL], int row, int col){int i = 0, j = 0;for (i = 0; i < row; i++)//判断三行{if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ')return board[0][0];}for (j = 0; j <col; j++)//判断三列{if (board[j][0] == board[j][1] && board[j][0] == board[j][2] && board[j][0] != ' ')return board[0][0];}if(board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[0][0] != ' ' || board[0][2] == board[1][1] && board[0][2] == board[2][0] && board[0][2] != ' ')//判断对角线return board[1][1];if (Full(board,row,col)==1)return 'p';elsereturn 'c';}
上述就是小编为大家分享的C语言实现三子棋实例代码怎么写了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网其他教程频道。
--结束END--
本文标题: C语言实现三子棋实例代码怎么写
本文链接: https://www.lsjlt.com/news/303602.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0