一.前期准备
在我写这个游戏时,我发现后期会有很多函数要存储,还要经常传递棋盘的行和列,调用函数库,所以我强烈建议写一个头文件去存储行列信息,包含函数库,对函数进行声明等操作,既能方便书写,还能让代码更有流程和条理性。
建立一个game.h头文件:存储行列信息,包含函数库,对函数进行声明
建立一个game.c文件:实现游戏中的函数
建立一个test.c文件:实现函数主体逻辑,在书写时可用此函数进行测试
将game.c和test.c文件中包含#include“game.h”
二.游戏逻辑结构
写这个“三子棋”游戏前我们回想一下这个游戏个规则:
两个玩家,分别用不同花色的棋子,轮流在3乘3的棋盘上下棋,最先三子连线的玩家胜利。如果棋盘下满并且双方都下得正确无误,将平局。
因为要在程序中玩游戏,我们只写玩家操作界面的话,只能自己和自己下棋,这样好傻,要不就是让另一个玩家与你下棋,但我更希望搞一个代替玩家的电脑来和你下棋,所以我们把其中一个玩家替换成电脑。
游戏主要逻辑结构变更为:
玩家和电脑轮流下棋,当棋盘上有三个相同花色的棋子相连时,则决出获胜方
当棋子占满棋盘并且没有获胜方,则双方平局
我们可以拆分一下主要逻辑
1.电脑和玩家轮流下棋
2.三个相同花色的棋子相连,游戏结束,判断出获胜方
3.棋子占满棋盘,游戏结束,双方平局
想要在代码中实现上面的逻辑我们需要先创建一下游戏的大体框架
三.游戏主体框架
我们设想一下游戏一进去一般都会显示什么
大部门游戏进去都会显示“开始游戏”“设置”“退出游戏”等选项
这里我们设计一下当三子棋游戏程序打开后,给出玩家两个选项,“开始游戏”还是“退出游戏”,方便游戏整体的进行和退出。
我们引入“input”来控制游戏的进行和退出
当输入1-进行游戏 0-退出游戏
在这里利用do while循环有两个好处:1.一打开游戏可以先打印游戏菜单去询问玩家进行的操作再去做出判断2.while(input)当input为0时刚好跳出while循环结束游戏
——test.c
int main()
{
int input = 0;
do
{
menu(); //打印游戏菜单
printf("请输入:>");
scanf("%d", &input);
switch (input)
{
case 1:
game(); //进行游戏
break;
case 0:
break;
default:
printf("输入错误\n"); //当输入不是1或0时提醒输入错误
break;
}
} while (input);
return 0;
}
你会发现我在里面设计了一个“menu”函数和“game”函数
“menu”函数功能:打印游戏菜单
这里我们设计一个简单的游戏菜单
——game.c
void menu()
{
printf("**********************\n");
printf("********1.PLAY********\n");
printf("********0.EXIT********\n");
printf("**********************\n");
}
并且在
——game.h声明函数
void meun();
经过上放主函数中的while循环就可以多次调用“menu”函数,在必要时刻提醒玩家应该输入什么进行游戏,这样逻辑结构就进一步改变