欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

三字棋代码

发布时间:2024/1/1 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 三字棋代码 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

头文件

#define ROW 3#define COL 3//头文件的包含#include<string.h>#include<stdio.h>#include<stdlib.h>#include<time.h>//函数声明//初始化棋盘void 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 IsWin(char board[ROW][COL], int row, int col);

game.c 函数的实现

#define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" #include<stdlib.h> #include<time.h> int IsFull(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++){if (board[i][j] == ' '){return 0;}}}return 1;} void InitBoard(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++){board[i][j] = ' ';}} } void DisplayBoard(char board[ROW][COL], int row, int col) {int i = 0;int j = 0;for (i = 0; i < row; i++){printf(" %c | %c | %c\n", board[i][0], board[i][1], board[i][2]);if(i<row-1)printf("---|---|---\n"); } } void PlayerMove(char board[ROW][COL], int row, int col) {int x = 0;int y = 0;printf("玩家下棋:\n");while (1){printf("请输入要下棋的坐标:\n");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");}} } void ComputerMove(char board[ROW][COL], int row, int col) {//电脑随机下棋int x;int y;printf("电脑下棋:\n");while (1){x = rand() % row;y = rand() % col;if (board[x][y] == ' '){board[x][y] = '#';break;}}} char IsWin(char board[ROW][COL], int row, int col) //玩家赢-‘*’电脑赢—‘#’平局—‘q’继续—‘c’ {int i = 0;for (i = 0; i < row; i++){if (board[i][0] == board[i][1] == board[i][2]&&board[i][0]!=' '){return board[i][0];}}for (int j = 0; j< col; j++){if (board[0][i] == board[1][i] == board[2][i] && board[0][i] != ' '){return board[0][i];}}if (board[0][0] == board[1][1] == board[2][2] && board[0][0] != ' '){return board[0][0];}else if (board[0][2] == board[1][1] == board[2][0] && board[0][2] != ' '){return board[1][1];}//判断是否平局else if (IsFull(board, ROW, COL)){return 'q';}//游戏继续return 'c'; }

test.c 测试游戏的逻辑源文件

#include <stdio.h>#include"game.h"void menu()//规划菜单{printf("*****************************\n");printf("******** 1.paly *********\n");printf("******** 0.exit *********\n");printf("*****************************\n");}void game(){char ret = 0;//存放数据需要一个3*3的二维数组char board[ROW][COL] = { 0 };//初始化棋盘InitBoard(board, ROW, COL);//显示棋盘DisplayBoard(board, ROW, COL);while (1){//玩家下棋PlayerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);//打印棋盘//判断输赢 玩家赢 电脑赢 平局 继续ret = IsWin(board, ROW, COL);if (ret != 'c'){break;}//电脑下棋ComputerMove(board, ROW, COL);DisplayBoard(board, ROW, COL);ret = IsWin(board, ROW, COL);if (ret != 'c'){break;}//打印棋盘//判断输赢}if (ret == '*'){printf("玩家赢\n");}else if (ret == '#'){printf("电脑赢\n");}else if (ret == 'q'){printf("平局\n");}}int main(){int input = 0;do{menu();printf("请选择:");scanf("%d", &input);switch (input){case 1:game();break;case 0:break;default:printf("选择错误,请重新选择");break;}} while (input);return 0;}

总结

以上是生活随笔为你收集整理的三字棋代码的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。