本篇用c语言实现了简单的三子棋。
代码演示:
#define _CRT_SECURE_NO_WARNINGS 1 #include#include #include #include #define row 3 #define col 3 //定义棋盘静态全局变量 static char chess_board[row][col]; //初始化棋盘 void InitGame() { for (int i = 0;i < row;++i) { for (int j = 0;j < col;++j) { chess_board[i][j] = ' '; } } } //显示棋盘 void ShowChessBoard() { for (int i = 0;i < row;++i) { printf(" %c | %c | %c n", chess_board[i][0], chess_board[i][1], chess_board[i][2]); if (i != 2) { printf("--- --- ---n"); } } } //玩家下棋 void PlayerMove() { int m = 0; int n = 0; while (1) { printf("请输入你要落子的坐标(格式为 坐标一+空格+坐标二):"); scanf("%d %d", &m, &n); if (m < 0 || m>2 || n < 0 || n>2) { printf("输入的坐标只能在0~2之间!n"); } else if (chess_board[m][n] != ' ') { printf("该处已有棋子!请重新选择。n"); } else { chess_board[m][n] = 'O'; break; } } } //电脑下棋 void ComputerMove() { int m = 0; int n = 0; while (1) { srand(time(0)); m = rand() % 3; n = rand() % 3;//随机生成0~2的数字 if (chess_board[m][n] == ' ') { chess_board[m][n] = '*'; break; } } } //判断棋盘是否满 bool IsFullChessBoard() { for (int i = 0;i < row;++i) { for (int j = 0;j < col;++j) { if (chess_board[i][j] == ' ') { return false; } } } return true; } //检查结果 char CheakResult() { //判断行 for (int i = 0;i < row;++i) { if (chess_board[i][0] == chess_board[i][1] && chess_board[i][0] == chess_board[i][2] && chess_board[i][0] != ' ') { return chess_board[i][0]; } } //判断列 for (int i = 0;i < col;++i) { if (chess_board[0][i] == chess_board[1][i] && chess_board[0][i] == chess_board[2][i] && chess_board[0][i] != ' ') { return chess_board[0][i]; } } //判断斜线 if (chess_board[0][0] == chess_board[1][1] && chess_board[0][0] == chess_board[2][2] && chess_board[0][0] != ' ') { return chess_board[0][0]; } if (chess_board[0][2] == chess_board[1][1] && chess_board[1][1] == chess_board[2][0] && chess_board[1][1] != ' ') { return chess_board[1][1]; } return '0'; } //开始游戏 void StartGame() { //初始化棋盘 InitGame(); //打印棋盘 ShowChessBoard(); bool b; char r; while (1) { //玩家下棋 PlayerMove(); ShowChessBoard(); b = IsFullChessBoard(); r = CheakResult(); if (r != '0' || b) { break; } //电脑下棋 printf("电脑落子n"); ComputerMove(); ShowChessBoard(); b = IsFullChessBoard(); r = CheakResult(); if (r != '0' || b) { break; } } //判断输赢 if (r == 'O') { printf("恭喜你,赢了不太聪明人机!!!n"); } else if (r == '*') { printf("不可能,不可能,你居然会输给它!!!n"); } else { printf("平局!"); } } int main() { int select = 1; while (select) { printf("****************************************n"); printf("****************************************n"); printf("* 欢迎来到建议三子棋游戏 *n"); printf("* 1.开始游戏 0.退出 *n"); printf("****************************************n"); printf("****************************************n"); //选择是否开始玩游戏 printf("请输入你的选择>:"); scanf("%d", &select); if (select == 0) { break; } StartGame(); printf("n"); } printf("已结束,欢迎下次再玩!n"); return 0; }
ps:第一次运行可能会有点小慢。



