简单c语言实现三子棋/多子棋

简单c语言实现三子棋/多子棋主要是想实现以下几个功能

(先做再循环)do while

一.目录: 1.play 0.exit

二.选择:(Switch)选择

三.进行游戏:

1.储存数据 - 二维数组

2.初始化棋盘 - 初始化时全输入空格

3.打印棋盘 - 本质是打印数组

4.玩家落子 -

①判断坐标合法性

②下棋

③判断是否占用

④展示棋盘

⑤判断输赢 - 四种游戏状态 - 玩家胜利,游戏胜利,平局(此时棋盘下满仍未分出胜负),游戏继续(棋盘未下满)

5.电脑落子

①随机坐标

②判断是否占用

③展示棋盘

④判断输赢

为分模块有效实现游戏,建立以下三个文件:

1.test.c 测试游戏的逻辑(主函数)

2.game.h 关于游戏相关的函数声明,符号声明,头文件包含

3.game.c 游戏相关函数的实现

一. 首先是菜单函数menu()的实现(test.c)

二. Switch选择(play or exit)(test.c)

玩家输入1,则开始游戏,输入0,则退出游戏,还应注意到除1,0之外,玩家还可能输入其他数字,此时应提示玩家输入错误重新输入

 三. 进行游戏函数game()

1.储存数组 - 建立二维数组。

为使更改棋盘方便此时应在头文件内声明符号ROW(代表行),COL(代表列)。再在game函数中创建ROW x COL 的二维数组(game.h test.c)

 

 

2. 棋盘初始化 - 填入空格。

使用函数InitBoard(board,ROW,COL)(test.c)

此时我们在game.h中声明函数,

并在game.c中定义函数

 

3. 打印棋盘(DisplayBoard) -  本质打印数组内容   (test.c) 

在game.h声明 

在game.c中定义

我们希望的棋盘如下

其实质是由2row-1行,每行由2col-1列组成

行是 空格 board[i][j] 空格 | 空格 board[i][j] 空格 | 空格 board[i][j] 空格

        _ _ _ | _ _ _ | _ _ _    这两种形式构成的

列是由 空格 board[i][j] 空格和 | 和 _ _ _ 这三种形式构成

 

打印代码如下

 

 4.玩家落子 - 自定玩家棋子为*,电脑棋子为#

①玩家落子

在主函数test.c使用落子函数PlayerMove(),我们需将数组,行和列的信息传送

在头文件game.h中声明落子函数

在game.c中定义落子函数

玩家落子有几个步骤

1.判断玩家输入的坐标是否在给定棋盘的范围内,若不是需重新输入

2.输入正确坐标后,需判断当前坐标是否被占用(也就是当前坐标内是否是空格)

3.若输入正确,坐标也未被占用将空格替换成玩家棋子*

具体代码如下

②展示棋盘(test.c)

 

③判断输赢

用来判断游戏的状态
        // 1.玩家赢了 - *
        // 2.电脑赢了 - #
        // 3.平局     - Q
        // 4.游戏继续 - C

 此时我们需将判断输赢的函数返回的值存放起来,若返回值不为C,则说明游戏结束,此时跳出循环

跳出后比较返回值,判断游戏结果

 对于判断输赢函数 IsWin();

我们先在主函数中将返回值赋给已定义的ret

在头文件game.h中声明

在game.c中定义

①.首先我们分析,若棋盘的任意一行或一列或一对角线所有元素相同(不论是*或是#),此时返回任意一个元素即可判断是玩家赢还是电脑赢

②.若①条件都不满足,只要棋盘被填满则说明平局,返回Q

③.若①②都不满足,则说明此时棋盘上仍有空位,且还未分出胜负,则游戏继续,返回C

①条件的代码如下

 ②和③的代码如下:定义变量ret=Q,若仍有空位,使ret=C,若无,不改变ret。最后返回ret。

5.电脑落子 - 棋子为#

①电脑落子函数ComputerMove()(text.c)

在主函数调用

 在头文件game.h中声明

在game.c中定义

首先我们希望电脑能生成随机数,此时就需要使用rand()库函数,但由于rand()函数每次重开生成的数都是一样的,所以我们需要使用srand来Sets a random starting point.但若是给srand()空格内用一个固定的数,从而得到的数也都是固定的,我们就在srand内使用time函数,从而使每次的数值都随机。(且srand不能在game函数内,否则每次初始的时间太短,会导致rand()数值相近,所以一般将其放在主函数)

srand函数的信息如下

 rand函数信息如下

time函数信息如下 

 

具体操作代码如下

(test.c)

 (game.c)

 

 ②展示棋盘

③判断输赢

 

最后按逻辑组装所有函数

<test.c>

 

 <game.h>

<game.c>

 有问题可以评论或者私信,如果有帮助到你,希望可以留下一个赞鼓励鼓励我,大家一起进步吧!

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值