C语言游戏设计——三子棋

 今天博主教你一步步用c语言实现三子棋游戏,可以根据自己的需求跳转至对应段落(代码放在Gitee上,结尾有链接)。

目录

一、游戏介绍

二、代码核心知识

三、游戏实现

一、游戏介绍

三子棋的棋盘有九个格子,分成三行,每行有三个格子,如一个井字,所以三子棋也被称为井字棋。玩家双方可以轮流在棋盘上落子,当一方的棋子连成一条直线,则该玩家获胜,游戏结束。

图一  三子棋棋盘
二、代码核心知识

在代码设计中,我们采用二维数组来存储棋盘上的每个格子上的内容,通过判断数组内的信息来判断游戏进程。

三、游戏实现

(一)文件创建与分类

创建一个新项目后创建三个文件:

1.头文件Game.h。该文件用来存放一些所需要的头文件和函数的声明。

2.源文件game.c。该文件用来定义游戏所需要的函数。

3.源文件main.c。该文件用来写主函数,即游戏实现的代码。

(这里的文件名不重要,重要的是每个文件所分配的内容。将代码分工明确可以让代码更加清晰,易于理解与检查。)

之后将主要的游戏流程写出来

图二  菜单设计与声明
图三  游戏大概流程

 后面的函数设计和声明也如图二这样安排,之后便不在赘述。

这里用input作为循环控制语句,输入0则为假,退出循环;输入1则进入游戏,输入其他数则会再次进入菜单,这么处理更加简洁。

(二)三子棋的实现

1.初始化棋盘的信息并打印棋盘。

我们定义一个三行三列的二维数组,将字符’  ‘(空格)作为初始化的值。之后再定义一个函数,用来打印棋盘信息。

空白棋盘打印出来就是这样

2.玩家下棋

这里玩家下棋是指玩家输入要落子的坐标,而程序通过玩家输入的坐标将数组中对应的数据改成字符‘ * ’并再次将棋盘打印出来。

在这一步中,有两个值得注意的点:

第一是棋盘的坐标与数组下标的对应。在程序里,数组每一行的开头下标为0,但现实中我们是从1开始数的,所以我们要注意输入坐标与数组下标之间的转化。

第二是坐标合法性。我们的棋盘的大小是三行三列,所以输入的横纵坐标的大小都为1~3,同时还要注意输入的坐标上有没有下过子。

综合以上,我们可以这么写:

3.电脑下棋

电脑下棋就比较简单了,用rand()函数模拟电脑下棋的随机性,再控制一下坐标范围就行。

 4.对局情况判断

每下完一步,我们都要判断对局情况。对局一共有四种情况:玩家胜利、电脑胜利、平局、未结束。

 这些语句是用来判断是否获胜的:前两个循环分别判断每行每列,后面两个判断对角线。这里我们用char类型作为返回类型,返回获胜方的棋子,这样就可以通过返回的字符判断哪一方获胜。

 而还有平局和未结束两种情况。平局就是双方都没获胜且棋盘上没有格子可以下,而获胜的情况我们已经完成了,那接下来就判断棋盘有没有填满,可以写一个函数来判断:

 而如果前面三种情况都没有发生,那就是游戏继续。此时我们就可以完整地把判断对局情况的函数写完。

这里的Q表示平局,C表示继续。 

这些都完成后我们已经可以将这个游戏部分完整地写完了。

最后放一下成果(部分)

 四、结尾

三子棋游戏重点便在于二维数组的使用,只要掌握二维数组,再一步步分析游戏的进行流程,写好一个三子棋挺容易的。

代码放在我的gitee里,点下面链接,找到文件TicTacToe就可以啦。

C-C++游戏设计: 一些用C/C++实现的游戏程序 (gitee.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值