s目录
前言
三子棋,又名井字棋。作为一款简单的小游戏,虽然逻辑并不困难,但是用计算机语言去表达对一个初学C语言的萌新来说还是有一定难度的,需要对函数,数组等知识有一定理解并且有一定的代码能力才可以实现。下面就让我们来分析一下,这款小游戏是如何制作的吧!
一、游戏规则是什么?
三子棋的游戏规则并不复杂,内容是玩家和电脑之间在一个3✖3的棋盘空格处交替落子,如果有一方实现了三颗棋子连成一条直线(横,竖,斜均可),就获得胜利。如果棋子已经填满了棋盘而双方还没有人取胜,就出现平局。接下来就让我们分析一下,该如何实现这样的逻辑。
二、逻辑分析
1.主函数部分 ——运行test函数即可,把具体内容放到test函数中实现。这样的好处是可以将游戏内容分成不同的模块来实现。
2. menu函数部分——游戏的菜单,让玩家选择是否进行游戏,在玩家输入开始或者退出之外的内容时给予提示。并且实现循环,玩家进行完一场游戏后可以选择继续游戏。
3.game函数部分 ——通过将下面完成的具体函数部分进行使用,来实现整个游戏的运行,我们需要运用循环的方式,来实现玩家与电脑交替落子,并保证胜负判定结束后,即时跳出循环并打印结果。
4.game函数的实现
(1).棋盘初始化——3×3棋盘的本质为九个空格,因此需要先输入一个二维数组,将每一个元素都设定为一个空格,用空格完成棋盘的初始化。
(2).棋盘的打印 ——目标是将刚才由空格组成的3×3棋盘打印出来。此时若直接打印,将会是空格的堆叠,什么也看不到,因此需要输入分隔线,来形成完整的棋盘。
(3).玩 家 下 棋 ——此时需要玩家进行主动输入一组坐标数据,使用星号*或者井号#这样的棋子替代该坐标处原来的空格,落子后再次打印棋盘,实现反馈。
(4).电 脑 下 棋 ——很遗憾,在初级阶段,我们做不到赋予电脑足够高的智能来通过分析场上的局势判断出最优解,我们所能做的只有让电脑随机生成一组数据的坐标,使用棋子替代原来的空格,并且完成打印。
(5).判 断 胜 负 ——胜负的规则前文已经提到,我们此处需要做的就是三种情况的判断,第一种:连成三个子的一方判定胜利,游戏结束,宣布胜利者。第二种:棋盘已经填满,但仍没有连成三子的情况,游戏结束,宣布平局。第三种:棋盘尚未填满,也没有出现三子相连,游戏继续。
三、游戏具体代码
理清了游戏的逻辑,清楚了每一步具体的目标和要求,接下来就是具体代码的实现过程了。
1.主函数部分
此处的目的是将函数分模块实现,这样便于代码的修改,便于其他人读懂。
int main()
{
test();
return 0;
}
2.menu函数部分
我们想要使用一个菜单函数,就必须在test函数中进行实现,因此需要先创建一个menu函数,再在test函数中完成。
viod menu()
{
printf("*************************\n");//创建一个菜单的界面,并提示玩家进行下一步的操作
printf("******* 1.play *********\n");
printf("******* 2.exit **********\n");
printf("*************************\n");
}
viod test()
{
int input =0;
srand((unsigned int)time(NULL));//定义一个随机数,后续会用在电脑下棋的部分
do
{
menu();//进入游戏后首先打开菜单,让玩家选择是否进行游戏
printf("请输入:>");
scanf("%d",input);//玩家输入0,1或者其他内容进行操作
switch(input)
{case 1:
game();//具体游戏部分这个函数将在case 1情况下执行
break;
case 0;
printf("退出游戏\n");//对于case 0,后面的while将判断为假,跳出循环
break;
default:
printf("输入错误,请重新输入\n");}
}
while(input);//do while 结构可以保证我们玩完一把之后再玩下一把
}