今天来用C语言写写小游戏三子棋
三子棋
三子棋是我们大家人人都知道的一款小游戏,那我们如何用C语言来简单做一个三子棋的小游戏呢
事前准备
我先创建了test.c用来写我的主函数 然后创建了game.h来进行函数和头文件的声明 最后还有game.c来进行函数的实现
创建游戏菜单
首先创建我们的主函数,想象一个游戏开始的界面是什么样子的,通常都是有个个选些,开始游戏和退出对吧,因此我们写一个打印菜单函数,先把我们游戏的进入界面展示出来 这里我就随便弄了个基础的菜单函数
我们要进行选择,当然要进行输入呀,所以我们创建一个变量用于让我们选择菜单,并且根据选择的不同要有不同的变化,而且在我们玩完一盘游戏之后我要能够再次回到菜单界面,因此我在这里用到了do while循环
并且我用了swich语句来进行选择分支
这样,一个游戏的模型就基本弄好了,我们接下来只要完善进行游戏的函数就好了
游戏函数
初始化棋盘
进入游戏函数,我们知道三字棋的棋盘是3X3的,因此,我们不妨创建一个3行3列的二维数组来作为游戏的棋盘 想象一下,棋盘大概是这个样子的
因为我们下棋只需要放一个字符,所以创一个char的数组就够了,这是我创建的数组,并且用空格把它初始化了 在这里我没用 char board【3】【3】来初始化,而是用了ROW 和COL两个词,因为我在头文件里定义了他们的值是3,这样我后面需要用3的地方只需要用ROW 和 COL来说明就行,这样的好处是以后如果我要修改棋盘,我就不用把每一个3都改一次,只需要修改头文件定义的大小就可以了
我把函数的初始化写成了函数,把它放到函数InitBoard里,然后在game.c里实现这个函数就好了,往下其他功能我们都会写成函数的形式,然后在game.c里实现函数的功能 这是棋盘的初始化函数的实现
打印棋盘
我们把棋盘创建完成了,但我们还要把它在我们眼前表现出来,这时候就需要把棋盘打印出来。 但是光打印数组是不够的,因为棋盘里还要有其他的东西装饰,比如棋盘格子,我们发现它是有规律的,我们就把打印函数给写了出来
这是打印的样子,打印的时候,先打印数组的内容,然后是一条丨,这样循环就把第一行打印完成,第二行我们打印行之间的分割线,也可以是一次循环,这样把前2行就打印完了,把它看做一次循环,就可以打印整个棋盘
可能我说的有点绕,但你具体要去尝试做,就发现其实还是很简单的
这样我们的函数就又增加了 就这样一步步实现就好
下棋
下棋时我下一步,电脑下一步,因此下棋其实是一个循环,这里我使用了while循环,在适当的地方跳出去就好 每一步都是通过函数来实现的,我们先写好步骤,到时候去game.c里把函数完善就好
可以知道,我们或者电脑每次下一步棋,都需要判断一次输赢,如果此时有人获胜要立即跳出去这个循环
玩家下棋函数
每次轮到玩家下棋,系统会提示玩家走,玩家需要输入要下的坐标为几行几列,玩家的棋子是用 * 表示的 这里要注意数组是从0开始而不是从1开始
电脑下棋函数
到电脑走的时候,我用了rand函数,该函数的随机值除3,就会随机得到一个1-3的数,判断这个随机坐标是否是空坐标,不是的话就继续循环,是的话就写入# 需要注意的是要用这个rand()函数的话,要在主函数加一个 srand((unsigned int)time(NULL))
判断输赢
判断输赢我用了一个IsWin函数
这里要根据不同的情况返回不同的值 我在这里玩家赢的话返回*,电脑赢的话返回#,平局的话返回Q,还得继续就返回C
然后根据返回的值,判断接下来的行动,如果是C就继续循环,如果不是C就跳出了下棋循环,到下面根据返回的是*还是#还是Q来判断是谁获胜或者平局
最后
这样我们的简单三子棋就可以玩啦 因为是简单三子棋,所以电脑的ai智商貌似很低(只会乱下),有兴趣的可以试试增强电脑难度哦
|