c语言编黑白棋的思路,【草稿】贪吃蛇,黑白棋,五子棋,扫雷的思路。大家来看看行不行...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

【新手进阶教程】贪吃蛇,黑白棋,五子棋,扫雷的思路。

以上我只做过贪吃蛇,看过《C语言入门经典》的黑白棋(具体玩法上网搜搜)的代码,不过,个人认为五子棋,扫雷和这些都差不多。最重要的一点,那就是先计划好,再做。

先说黑白棋:

虽然我没做过这个,不过我看过代码,要做一个笨一点的AI不难。《C语言入门经典》教的只搜了一层,一个叫楼天成的搜了10层,李开复和别人合作的14层,要做出这些搜多层的AI可就不是一般的难了,估计要个几万行代码,因为是数据量是指数爆炸的。

一个项目要分成好多个问题解决,问题下面又要分好多个小问题。这样问题就不难了。

个人觉得流程图非常适合来思考这些问题,顺序是按着自上往下的思路。

一个黑白棋的程序,包含:

1.初始化

2.判断人是否有有效格子下子

3.人下子

4.判断是否有效

5.判断电脑是否有有效格子下子

6.电脑下子

7.判断是否有效

8.是否已满或者两人都无法继续下棋

9.结束游戏或再玩一次。

以上是顺序的流程。然后看横向:

0.

a)声明各种记录棋盘信息的全局变量。C语言入门经典用的是二维数组,0代表空,1代表 人,2代表电脑。PS:请善用#define。方便查看。

b)还有人子的符号,电脑子的符号。PS:请善用#define。方便日后修改。

c)棋盘行列数。PS:请善用#define。方便日后修改。

d)#define TRUE 和 FALSE,我是用的,你看着办。

e)(其他暂时想不到)

1.初始化

a)欢迎信息

b)打印表格

c)一开始的4个棋子

d)(其他暂时想不到)

2.判断是否有有效格子下子

a)游戏规则是在对手的棋子周围下子。

插播:怎么表示周围呢,很简单。用坐标表示,引进一个概念“步”(注:不是专业名 词,只是方便阐述),当前位置加上(步x=0,y=0)表示当前位置,上面那一格是当前位 置加上(步x=0, y =-1),右下面那一格是当前位置加上(步x=1,y=1)。(注:这里 的xy是行和列,跟数学上的y方向相反了。)

那怎么遍历周围呢?就把步像二维数组一样遍历就行了。弄个嵌套循环就搞定了,这样 就搜寻了一下周围的格子。注意:不要越过棋盘边界。

这个步的概念在贪吃蛇也能用上。五子棋也要用,扫雷也要用的。

b)所以思路很容易就出来了,要找到有效的格子,只要扫描棋盘所有对手棋子,然后遍历 周围(注意边界),是否有空格,有则统计数加一(暂时想不到统计有啥用,不过以后 可能有用),扫描棋盘很容易,因为棋盘是二维数组记录的,所以只要弄个嵌套循环就 可以了,所以貌似会出现四层的嵌套但是不难理解。(插播:如何跳出多层嵌套?要么 用return,如果不行就另外弄一个isbreak的变量,然后在每层嵌套后面,添加验证是 否跳出。还有一种就是使用goto语句,不过不推荐使用,因为goto用得太多,容易让程 序难以理解。以上是在《C和指针》《C程序设计语言》学来的,嘿嘿~)

各位给点评价,如果写得好,我就继续写下去,如果写得不好,俺就不写了,我也想偷懒啊~~

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值