前言
相信不少小伙伴都玩过五子棋,其实三子棋和它的游戏规则一样,谁在行/列/对角线上连成直线,谁就获得胜利。
接下来用C语言实现它
Code and Explain
首先为了方便代码编写,实现系统试编程。在工程里定义3个文件:
其中,tpc.h是用来存放宏定义和函数声明的头文件
tpc.c是头文件中声明函数的具体实现
test.c则是用来测试代码的源文件。
下面给出各个模块的代码并解释:
首先,tcp.h:
#ifndef __TPC_H__
#define __TPC_H__
//棋盘的行和列,为了方便修改所以定义成宏。因为是三子棋所以定义为3
#define COLS 3
#define ROWS 3
//下面是各种函数声明
void init_board(char board[ROWS][COLS], int rows, int cols);//初始化棋盘
void display_board(char board[ROWS][COLS], int rows, int cols);//打印棋盘
void player_move(char board[ROWS][COLS], int rows, int cols);//玩家操作
void computer_move(char board[ROWS][COLS], int rows, int cols);//电脑操作
char check_win(char board[ROWS][COLS], int rows, int cols);//判断输赢
#endif
其次,tpc.c:
#define _CRT_SECURE_NO_WARNINGS
#include "tpc.h"
#include<string.h>
#include<stdio.h>
void init_board(char board[ROWS][COLS], int rows, int cols)//初始化棋盘(数组)
{
memset(board, ' ', sizeof(char)*cols*rows);//用库函数代替for循环初始化数组,提高效率
}
void display_board(char board[ROWS][COLS], int rows, int cols)//打印棋盘
{
int i = 0;
for (i = 0; i < rows; i++)
{
printf(" %c | %c | %c \n", board[i][0], board[i][1], board[i][