一.游戏界面的实现本篇文章主要以C语言中的二维数组为核心实现简单的三字棋。
根据上次猜数字游戏的经验,我们可以继续采用switch case语句与do while语句联动来实现基本的游戏界面。
我们先引入menu()函数,来实现游戏画面。
这里有一个细节,建议把play 设为数字1 exit设为数字0,具体为什么我到后面详细说
接着我们使用do while语句 结合switch语句嵌套
这里解释几个点
①input变量的设置,在这里我一开始引入的变量是x,这就是自己根深蒂固的不良习惯,设置变量要优先考虑有意义,像input就明显指示“哦,这是我要输入的值”
②switch(input) while(input)
③switch语句外部有一个printf这个地方起到一个换行的作用防止出现重叠
二.棋盘与棋子的实现
为了便于模块化处理以及后续可能多次打印棋盘的考虑,我们先初始化数组接着再调用函数。
思考:此处为什么不直接char board[Wedth][Length]=" ";???
这里批注一下:①Length Wedth 的解释
②这其实就是通过循环‘ ’装进数组里,记住是空格,而不是‘ ‘我们看一下如果是 的情况
1.棋子
棋子我们可以考虑用# *来充当棋子,这些字符可以储存在数组当中
2.棋盘
这是一个设计好的棋盘
黑圈圈的位置就是棋子的位置
现在我们开始实现这个设想
a.行的实现
从每行观察
其实 1 2 3 完全可以通过循环实现
只不过在处理3的时候加入if语句,不打出“|” 接着换行。
这样棋盘就实现了
三.游戏机制的实现1. 玩家下棋(单独调用函数)
a.玩家输入坐标
b.检查坐标是否合法
合法(是否出现数组越界?是否出现该位置已被占用?)
c.合法之后进行落子
2.电脑下棋(单独调用函数)
a.电脑随机生成坐标(迫于水平原因,比较瑕疵的地方就是在于这里并没有实现智能)
b.检查坐标是否合法
c.落子
3.多回合实现
加入while循环,实现 玩家-->电脑-->玩家-->电脑......
4.每回合结束后添加检验机制(单独调用函数)
*-->玩家赢
#-->电脑赢
Q-->平局
C-->继续游戏
根据ret的结果来判定最后的结果
a.判断双方中的任意一方三个连成一条线后结束游戏
或者9个格子都被占满后结束游戏
4.最后呈现最终棋局