目录
前言
好久没写博客了,但是并不是我不想写,而是真的没时间写。中间好大一部分学习记录都来不及写,索性就先跳过,先写这几天学的东西。
好了,废话不多说,接下来就开始今天的博客正文。
三子棋的需求
用C语言实现
玩完一局后可以继续玩
玩家和电脑轮流下棋
实现逻辑
- 打印菜单选择开始游戏或者退出游戏
- 开始游戏后创建棋盘并初始化
- 打印棋盘
- 玩家下棋(用‘*’表示玩家下的棋)
- 判定胜负关系(输,赢,平局,继续下棋,Q表示和棋)
- 电脑下棋(随机落子,‘#’表示)
- 判定胜负(若可以继续下棋则返回步骤四)
- 返回步骤2
多文件
多文件在公司开发项目中十分常见,一个项目由多人同时开发,每人负责一个或多个文件,最后交由一个人汇总。多文件开发的使用大大提高了项目开发的效率,而且可以使得源文件条理清晰,有利于项目的维护。
在这里,我把这个游戏划分成了三个文件,分别是test.c ,game.c以及game.h。test.c用来存放主函数,测试函数和菜单函数,game.c用来存放游戏实现的函数,game.h用来存放头文件和函数声明以及宏定义。
test.c中的实现逻辑
实现打印菜单并选择的需求
#include "game.h"
void menu()
{
printf("##########################\n");
printf("###### 1. play ########\n");
printf("###### 0. exit ########\n");
printf("##########################\n");
}
void test()
{
int input = 0;
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏!\n");
break;
default:
printf("选择错误\n");
break;
}
} while (input);
}
int main()
{
test();
return 0;
}
游戏主题实现的逻辑
void game()
{
//数据存储到一个字符的二维数组中,玩家下棋是*,电脑下棋是#
char board[ROW][COL] = {
0 };//数组的内容应该是全部空格
InitBoard(board, ROW, COL);//初始化棋盘
//打印棋盘
DisplayBoard(board, ROW, COL);
//下棋
char ret = 0;
while (1)
{
player_move(board,ROW,COL);
DisplayBoard(board, ROW, COL);
ret = is_win(board, ROW, COL);
if (ret != 'C')
{
break;