C语言实现“三子棋”小游戏

【C语言实现“三子棋”小游戏】今日长缨在手,何时缚住苍龙。这篇文章主要讲述C语言实现“三子棋”小游戏相关的知识,希望能为你提供帮助。
::: hljs-center
C语言实现“三子棋”小游戏
:::
一、编程思路:\\
二、具体编写代码过程:
game.h文件---包含所有的头文件和函数声明:

#define _CRT_SECURE_NO_WARNINGS 1 #include< stdio.h> #include< stdlib.h> #include< time.h> #define ROW 3 #define COL 3 //函数声明 void IniBoard(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); int IsFull(char board[ROW][COL], int row, int col);

test.c文件:用于整个游戏逻辑实现 主函数:
int main()test(); return 0;

//显示菜单函数
void menu()printf("*************三子棋**********\\n"); printf("*******1.play0.exit*****\\n"); printf("*******************************\\n");

void game()实现整个游戏的操作逻辑:
//整个游戏的逻辑 void game()int ret; //用来接收IsWin()函数的返回值 //printf("wanyouxi\\n"); //创建棋盘 char board[ROW][COL] =0 ; //初始化数组 IniBoard(board,ROW,COL); //打印棋盘 DisplayBoard(board,ROW,COL); //下棋 while (1)//1.玩家下 PlayerMove(board, ROW, COL); DisplayBoard(board, ROW, COL); //判断输赢 ret = IsWin(board, ROW, COL); if (ret != C)break; //2.电脑下 ComputerMove(board, ROW, COL); DisplayBoard(board, ROW, COL); ret = IsWin(board, ROW, COL); if (ret != C)break; //判断输赢 //ret = IsWin(board,ROW,COL); if (ret == *)printf("***电脑获胜!\\n"); if (ret == F)printf("游戏平局\\n"); if (ret == #)printf("***玩家获胜!\\n");

void test()用来调试:
void test()//设置随机数产生起点 srand((unsigned int)time(NULL)); int input = 0; domenu(); printf("请输入:\\n"); scanf("%d", & input); switch (input)case 1: //printf("玩游戏\\n"); game(); break; case 0: printf("退出游戏!\\n"); break; defaoult: printf("输入有误请重新输入!\\n"); while (input);

game.c文件--用来实现所有的函数功能:
#include"game.h" //数组棋盘的初始化,令其为空格 void IniBoard(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 DisplayBoard(char board[ROW][COL], int row, int col)int i; int j; for (i = 0; i < row; i++)//1.打印一行的数据 for (j = 0; j < col; j++)//printf(" %c | %c | %c \\n", board[i][0], board[i][1], board[i][2]); printf(" %c ", board[i][j]); if (j < col - 1)printf("|"); printf("\\n"); //2.打印每行的分隔符 if (i < row - 1)for (j = 0; j < col; j++)printf("---"); if (j < col - 1)printf("|"); printf("\\n"); //下棋 //1.玩家下 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 < = 3 & & y > = 1 & & y < = 3)//判断所下的位置是否为空 if (board[x - 1][y - 1] ==)//在玩家输入的位置上填上# board[x - 1][y - 1] = #; break; elseprintf("此位置已经被占用!\\n"); elseprintf("坐标非法!请重新输入:\\n"); //电脑下棋 void ComputerMove(char board[ROW][COL], int row, int col)int x = 0; int y = 0; printf("*****电脑走*****\\n"); //x,y为随机数 while (1)x = rand() % ROW; y = rand() % COL; //判断位置是否为空 if (board[x][y] ==)board[x][y] = *; break; //判断输赢 //四种情况: //1.玩家赢 返回# //2.电脑赢 返回* //3.平局 返回F //4.继续 返回C // IsFull()函数返回0表示没满,返回1表示满了 int IsFull(char board[ROW][COL], int row, int col)int i; int j; for (i = 0; i < row; i++)for (j = 0; j < col; j++)if (board[i][j] !=)return 0; return 1; char IsWin(char board[ROW][COL], int row, int col)int i; int j; for (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]; //判断列 if (board[0][i] == board[1][i] & & board[1][i] == board[2][i] & & board[2][i] !=)return board[0][i]; //判断对角线 if (board[0][0] == board[1][1] & & board[1][1] == board[2][2] & & board[2][2] !=)return board[1][1]; if(board[2][0] == board[1][1] & & board[1][1] == board[0][2] & & board[0][2] !=)return board[1][1]; //判断是否平局 if (1 == IsFull(board, row, col))return F; else return C;

\\
三、运行截图:
简单的给了一张实现截图,具体可以拷贝源码后自行运行,有疑问可以留言一起讨论!
C语言实现“三子棋”小游戏

文章图片


    推荐阅读