学了那么多关于C语言的知识,也该进行一下实操了。三子棋游戏应该是大家学生时代课间比较喜欢娱乐消遣的一种方式吧。那么我们今天就来说说如何实现简单版本的三子棋对战小游戏吧。
三子棋游戏介绍
三子棋游戏类似于五子棋,不同的是它的棋盘大小是九宫格且达到如下图一种结果则算赢。三子棋游戏的规则是必须 横向 或 纵向 或 斜线 填满相同的棋子才算赢。
三子棋游戏实现的编程框架
1. 游戏不退出,当结束一局可以进行下一局(循环)。
2. 应用多文件的形式完成代码。在企业团队进行项目开发时,多文件形式写代码是必不可少的,因此这里我们也用多文件形式写代码,这些文件都必须放在同一个工程(即同一个文件夹)下。
test.c -- 测试游戏的,即主要是main函数内对游戏功能进行框架搭建和测试。
game.c -- 游戏函数的实现,即主要是完成游戏核心功能的函数的具体实现。
game.h -- 游戏函数的声明,即主要是对这些函数的声明和简介。
不同文件的实现
(一)game.h文件
该文件为实现三子棋项目的声明。
宏定义的变量ROW 和COL表示棋盘的大小是三行三列的九宫格,在game.h中声明棋盘大小。如果想改变棋盘的大小,直接在该文件中进行修改即可。
(二)test.c文件
1.菜单功能
实现一个简易的菜单功能,提醒玩家选择开始游戏还是结束游戏。选择1表示开始游戏,选择0表示结束游戏。
2.main函数实现连续多玩
由于我们游戏开发的目标是实现玩家可以选择连续多玩游戏,因此本段代码主要的逻辑是使用循环控制。而且我们程序运行时必须至少进行一次游戏,所以采取do……while循环进行控制,具体代码逻辑可以参考之前写的博客C语言之猜数字小游戏。
3.game函数的实现
game函数是实现游戏流程,如打印棋盘,玩家下棋,电脑下棋,并判断输赢等。当然game函数中只是对这些函数的调用,核心功能的函数实现放在game.c源文件中。代码如下java五子棋基础设计:
本代码使用'“*”表示玩家棋子,“#”表示电脑棋子,使用二维数组存储棋子的位置,而此二维数组相当于棋盘。最开始时要初始化棋盘并打印棋盘,以让玩家值观看见棋盘并准备下棋。下棋时不是只下一颗棋就结束了,所以要用循环,直至分出结果后结束循环,判断游戏结局。同时,玩家和电脑每下一颗棋时都要打印棋盘并判断是否分出胜负,如果没有分出胜负则继续下棋(不跳出循环)。
(三)game.c文件
该文件是实现整个游戏最核心的逻辑部分。
1.初始化棋盘(InitGame)
游戏实现是使用字符作为玩家和电脑的棋子,在初始化时,用空格来初始化棋盘(空格也是一个字符)。二维数组用两层for循环对数组元素进行赋值即可。
2.显示棋盘对决情况(DisPlayBoard)
棋盘设计情况如下图
3.玩家下棋 (PlayerGame)
4.电脑下棋(ComputerGame)
这里的row和col都是3,所以rand()%row,rand()%col已经满足了电脑随机产生的坐标不会越界,取余产生的数字也是0、1、2,刚好与数组下标相符,而当遇到空格子时电脑才完成下棋,因此电脑下棋并不会覆盖原来已经下好的棋子。
5.判断棋盘是否下满(if_full)
若还有一个空位,则说明棋盘没有下满,此时返回0;反之,返回1,即棋盘已经下满。
6.判断输赢(is_win)
玩游戏,不仅要享受玩的过程,还要注重游戏的结果。在本篇文章开头已经介绍了三子棋游戏胜利的8种情况,因此在函数编写时则按照行、列、斜线依次进行结果的判定。
设定该函数返回的结果对应的下棋对决结果如下:
- 玩家赢 ------ ‘*’
- 电脑赢 ------ ‘#’
- 平局 ------ ‘Q’
- 可以继续下棋 ------ ‘C’
完整代码
game.h
game.c
test.c
程序运行效果
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/20511.html