C语言——三子棋游戏编程思考

本文介绍了如何实现一个基本的三子棋游戏,包括游戏的运行流程、大体框架的编写、菜单程序设计,以及关键的game程序部分,如棋盘初始化、玩家与电脑下棋、判断输赢的IsWin函数。重点在于循环和选择语句在游戏逻辑中的应用。
摘要由CSDN通过智能技术生成

一、游戏实现

1.1大体框架

首先,预想一下游戏的运行过程。游戏开始前会显示一个游戏菜单,供玩家选择“进行游戏”or“结束游戏”,进行游戏则运行游戏程序,玩家和电脑轮流下棋,并判断谁输谁赢或者平局。

了解游戏运行过程后,便可将大体框架的代码编写出来。这里需要用到do while循环语句和switch选择语句。do while循环语句特性是先执行后判断,可用于菜单程序,循环前显示菜单内容,随后判断是否需要循环。switch选择语句用于判断玩家的输入值,选择运行结果。代码如下:

1.int定义一个变量input,即我们输入值

2.do while循环内包含menu,game和switch

3.scanf为输入函数,给程序中的变量赋值

4.input进入switch分支选择,无论输入任何值,都将break结束switch选择

5.do结束后,while通过input条件判断是否继续循环(若input = 0,则0为假,while结束循环,游戏结束;若input = !0,则为真,继续循环)

1.2菜单程序编写

大体框架编写完成,只需定义menu程序和game程序即可正常运行游戏。menu程序有两个游戏选项“进行游戏”or“结束游戏”,只需要使用printf打印出来即可。

 二、游戏程序编写

游戏程序编写是重中之重,也是难点所在。为使源文件不显得冗长复杂,将game程序单独出来,新建一个头文件和源文件用于编写game程序,原源文件只需引用game头文件即可。

注:这里引用game源文件书写为 #include"game.h";可以将需引用的头文件都放在game头文件中,即头文件的包含。

 game程序的实现过程为:显示一个初始化的井字格棋盘,随后玩家和电脑轮流下棋,每下一次便判断是否输赢或平局,如果都不是则继续循环,直至出现输赢或平局。在源文件中写下程序运行过程,再在game的头文件和源文件中定义即可。

game头文件中: 

2.1初始化棋盘并打印

玩家选择开始游戏后,会显示一个空白的井字格棋盘,在game源文件中定义函数。棋盘为井字格,初始棋盘内数值为空格。

 2.2玩家和电脑下棋

棋盘初始化后,玩家需要输入坐标来下棋,玩家输入坐标后需要验证该坐标是否已被占用,如果被占用则重新输入坐标,如果没有,则电脑下棋。

注:玩家输入的坐标不是数组地址的下标,所以函数中要将输入坐标-1。

玩家下完棋后则电脑下棋,电脑下棋需要引入时间戳的概念, 生成随机数,使其随机下棋,同时要限制随机数的范围在棋盘内。注:使用时间戳需引入#include<stdlib.h>,#include<time.h>。

想要达到时间戳的效果需使用rand函数,rand函数在使用前需调用srand函数,srand只需调用一次即可,故将srand放在main函数中。

 

2.3判断输赢 

玩家和电脑每走完一步棋,都需判定一次,判定有四种结果:1.玩家赢、2.电脑赢、3.平局、4.都不是,游戏继续。通过IsWin()函数的返回值进行判定,设定玩家赢返回✳,电脑赢返回#,平局返回—,游戏继续返回~。源文件续写为:

在game源文件中定义IsWin()函数。游戏的胜利条件有三种,1.行、2.列、3.对角线。平局条件为棋盘走满了无法下一步则判定为平局。

三、结语

至此,三子棋游戏程序编写完成。 此游戏的编写难点在于游戏程序的实现,对循环和选择语句需灵活运用,要理清楚游戏的运行逻辑。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值