**
C语言实现三子棋
导语
通过最近一段的学习,我掌握了c语言中的基本语法和语句,比如分支和循环语句、一维数组和二维数组、函数的创建和调用,为了更加灵活使用这些基础知识,我决定用已学过的基础知识编写一个三子棋小游戏.
一、三子棋是什么?
相比较三子棋,想必大家更加熟悉五子棋,但是他们的原理是一样的。原理也比较简单,就是两个玩家执棋子在N*N的方格棋盘落子,哪个玩家落的棋子先连成一串(三子棋是三个为一串,五子棋是五个为一串),那么该玩家就在该盘棋局获得胜利。这里的串可以是横串,也可以是竖串,还可以是斜串。
二、项目实现
1.模块一:chess.h头文件
原理介绍:
- chess.h中包含整个项目所需要的头文件和函数声明以及所需要的宏定义。
- 头文件包括C语言常用的库函数头文件和产生随机数所需要的time、stdlib头文件。
- 宏定义:
1)定义行数和列数:这是对棋盘的大小的定义。
2)定义落子:我们定义玩家执黑子,用‘x’表示。电脑执白子,用‘0’表示。
3)函数声明:我依次声明的函数有游戏函数Game、面板初始化函数InitBoard、面板显示函数ShowBoard、玩家落子函数PlayerMove、电脑落子函数ComputerMove、棋局输赢判断函数JudgeResult。
代码如下:
#ifndef _CHESS_H_
#define _CHESS_H_
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
//使用一些常见的功能函数,如动态储存分配。
//随机数:生成不同的随即数序列使用rand是要使用srand来为rand生成随机数序列设置起始点
//也要用到#include<time.h>
#include<time.h>//使用前时钟做种子
#pragma warning(disable:4996)
#define ROW 3
#define COL 3
#define BLACK_PIECE 'X'
#define WHITE_PIECE 'O'
void Game();
void InitBoard(char board[][COL], int row, int col);
void ShowBoard(char board[][COL], int row, int col);
int PlayerMove(char board[][COL], int row, int col);
void ComputerMove(char board[][COL], int row, int col);
char JudgeResult(char board[][COL], int row, int col);
#endif
所实现功能介绍:
chess.h此部分代码所实现的功能是C语言头文件的调用和项目所用到的函数声明。
2.模块二:main.c源文件
原理介绍:
main.c是整个项目的主函数。因为代码执行是顺序执行,因此此部分代码逻辑主要是运用了switch语句。根据玩家的意愿执行不同的选择执行不同的语句。其中定义了quit是为了更高效的执行while循环语句。
代码如下:
#include"chess.h"
void Menu()
{
printf("######################################\n");
printf("### 欢迎来到我的三子棋游戏室 ###\n");
printf("######################################\n");
printf("### 1. Play 2. Exit ###\n");
printf("######################################\n");
printf("Please Enter Select: > ");
}
int main()
{
int quit = 0;
while (!quit){
int select = 0