概述
今天带大家用C语言制作一个三子棋小游戏~
打开VS,这里我们建立源文件test.c(用于测试功能) game.c(用于保存游戏主体函数)以及一个game.h头文件。
建立好了文件,接下来就要一步步确立游戏的流程,并构造游戏整体的框架。
一个游戏,总得要个菜单引导玩家进行操作吧,那么我们在进入游戏之后,打印一个菜单,并且引导玩家进行选择。这里我们构造一个print_menu函数进行实现。
我们使用do while语句进行循环,让玩家可以多次游玩。while()控制条件放入玩家输入的变量input,让玩家输入0时可以结束循环,退出游戏。
测试后发现功能正常,接下来就是实现游戏主体部分。
首先,下棋需要打印一个游戏棋盘进行展示。我们先设置好一个二维数组,以装入“棋子”。将棋盘的行与列进行宏定义,以便日后进行修改。
再用Init_board(char arr[ROW][COL], int row, int col)函数将棋盘初始化,这里将行与列作为参数传入是为了在ROW,COL未被定义时能自行输入行与列,不至于使得函数无法使用。
因为初始化后“棋子”的位置不显示字符,我们将数组内容全部初始化为空格。
接下来,就是打印棋盘,我们预设棋盘打印后效果如图:
那么我们需要将一行拆分为字符行与分割行,并且循环打印。
我们创建一个print_board实现棋盘打印,具体内容如下。
既然棋盘都打印好了,那么接下来就能进入到游戏对战环节了,对战双方分别为玩家与简单级别的电脑AI(雾)。
这里我们先构造一个player_move函数,实现玩家下棋的步骤。
这里我们要注意,当玩家输入1 1时,实际指向的是arr[0][0],所以我们需要在函数里进行一点小小的修改,将范围从i>=0改为i>=1,以此类推进行修改,避免指向错误的元素。
接下来 测试一下玩家下棋
看起来没什么问题,那么我们继续实现电脑下棋。这里我们构造computer_move函数,再借助srand和rand函数,让电脑得以在随机位置下棋。
再来测测能不能在上棋盘和电脑下棋呢
看起来没什么问题。这样,我们就能愉快的在棋盘上和电脑下棋了。但是,是不是还少了点什么?
没错,这是个需要判断输赢的游戏,所以我们还需要构造一个函数来判断游戏的胜负。
每下一步,我们便判断一次胜负,那么情况有以下几种
1:玩家赢
2:电脑赢
3:没有决出胜负,继续下棋
4:棋满,平局
对于1 2情况 我们进行 行与列 以及对角线的判断。我们构造一个win函数来进行判断。判断行与列时,为了适应3行以上的情况,对行与列循环范围设定为0~ROW以及0~COL。当某一行或者某一列被‘O’或'X'填满时,返回符号O或者X。判断对角线时,我们偷一下懒,仅判断3行3列的情况。对于第3种,即棋盘未满,我们在win函数中返回字符0,不会干扰到循环,游戏可以继续进行。对于第4种,即平局的情况,我们在game函数内采用计数器的方式,利用变量i每下一颗棋子之后便自增1,当i=行*列时,若没有产生胜者,便必定是平局。
game函数内部循环体
win函数总体实现如下
这样,我们的三子棋游戏就做好啦。然后我们可以试着和简单难度的电脑下两把~
最后,作者加上了一个玩家对战功能,这样就不用和没脑袋的电脑对战了。具体步骤很简单,我们将主函数内的switch内部加上一个case 2:
修改一下菜单
在game函数内加入形参,使玩家在菜单输入时程序可以记录输入内容,当输入2时,进入玩家对战
循环体内容从人机对战那里拿。
再将computer_move制作成player2_move,对代码稍作修改,便可以实现玩家对战啦~ 这样就可以和好基友快乐的玩三子棋了 好耶!
如果能看到这里,非常感谢你的阅读!(不过应该没有人能看到这里吧 笑)
最后
以上就是留胡子小丸子为你收集整理的C语言入门:制作一个三子棋小游戏吧~的全部内容,希望文章能够帮你解决C语言入门:制作一个三子棋小游戏吧~所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复