前言
在学习了C语言一些比较基础的语法,通过案例来练习,对于巩固知识来说很有帮助。
1.准备
先了解游戏规则,代码的实现都是围绕规则来进行的。
1.1游戏规则
人机双方依次在3*3的棋盘上下棋,先连成3个相同棋子的获胜。如果棋盘下满还未分出胜负,即为平局。
玩家下' * ',电脑下' # '。
1.2准备文件
作为初学者,三子棋的代码量还是比较多的,需要我们分文件编写。其实就是采用分模块的编程思想,进行功能的划分。这样可以方便我们方便调试、阅读代码清晰简洁,
分成三个文件:
game.c (函数具体实现)
test.c (主函数,主体流程)
game.h(用于函数的声明、头文件包含)
其他文件想要使用在game.h文件声明的函数和包含的头文件只需要包含一下game.h即可。
2.菜单创建和主函数流程
菜单:
展示菜单供让玩家看到。
主函数流程:
利用do while循环和switch分支的方式实现玩家选择进入游戏和退出游戏的操作。
3. 游戏核心内容实现
下棋的棋盘实际上需要二维数组的帮助,先定义数组的行和列:
先看游戏部分的流程:
看完大体流程主要的是每一个函数的具体实现。
3.1初始化棋盘
遍历二维数组把每一个元素赋值为空格。方便后面赋值和展示。
3.2打印棋盘
打印棋盘其实就是遍历数组,把数组的元素输出出来,但是我们初始化棋盘的时候把元素都赋值为空格,所以直接打印什么都看不到。我们为了玩家更加方便看到棋盘,可以利用学过的if语句的判断来让棋盘更美观。
棋盘:
3.3玩家下棋
下棋落子要考虑的是棋子坐标是否超出范围,该位置是否已下过棋子。把这些判断的部分放入死循环,只有下对了位置才能break出循环即可。需要注意的是玩家输入的x和y,需要-1才对应数组坐标的位置。
3.4电脑下棋
电脑下棋的逻辑其实和玩家下棋的大同小异,唯一不同的是需要用到随机数随机下棋,而且如果电脑下在了有棋子的位置不需要像玩家下棋一样告知玩家位置错误重新下棋,只需要重新走一遍循环就行了。
3.5判断输赢
判断输赢我们会返回一个char类型的值,返回'*'玩家赢,返回'#'电脑赢,返回'F'平局,返回'C'游戏继续 。
if语句进行判断即可。
4.全部代码
game.h
game.c
test.c