- 博客(6)
- 资源 (14)
- 收藏
- 关注
原创 一步一步实现五子棋6
最近一直忙于面试,杂事太多都没时间写代码了,今天抽出了点时间,完成了五子棋的博弈算法。 所谓博弈,就是指在一定的游戏规则约束下,基于直接相互作用的环境条件,参与者选择各自策略以实现利益最大化和风险成本最小化的过程。在五子棋中就是我怎么下才能使我方形成五连珠(赢棋)的可能最高,同时考虑对方无法比我先形成无连珠。也就是说,在分析棋局的时候不但要考虑自己怎么下,还要考虑自己这样下了之后
2013-12-15 15:29:25 1716 2
原创 一步一步实现五子棋5
前面弱智版五子棋虽然实现了让电脑下棋,但是完全没有思考能力。下面我们就来为电脑提升智力,学会思考后再下棋。 计算机的思考能力体现在对盘面的分析上,通过分析可能形成的盘面,从中选择最优结果,形成这个最优结果的着法即为计算机本次的选择。
2013-12-10 14:07:17 1332
原创 一步一步实现五子棋4
完成上章之后本来准备进入五子棋的估值算法的,考虑了一下后还是觉得不要太着急,要符合本文一步一步的宗旨,保持清晰的思路。首先我们实现弱智版的人机对弈,理清人机对弈的基本流程。然后完成五子棋估值算法,让电脑能对棋盘进行基本的价值分析,具有思考能力。最后引入博弈算法,让电脑能进行深度思考,变的更加聪明。 本章的弱智版五子棋使用随机算法,即从棋盘上有效点中随机获取一点落子。方法虽然弱智,但目的是能够循序
2013-12-09 13:00:34 1566
原创 一步一步实现五子棋3
昨天有面试,五子棋的工作暂停了一下,今天继续。 前面五子棋的棋盘棋子的绘制以及用鼠标下棋的功能已经实现了,下一步我们的工作就是让电脑一步一步学会如何下棋。首先要教会的是如何判断输赢,我们都知道当相同棋子在横向、纵向和斜对角方向形成五连珠者分出胜负,所以只要扫描整个棋盘发现有五连珠即可判断输赢。当然,扫描整个棋盘的方法笨了点,只关注最后落子的点是否能形成五连珠就可以了,话不多说,上代码: BOO
2013-12-06 11:32:04 1152
原创 一步一步实现五子棋2
上一章我们实现了棋盘的绘制,现在来实现用鼠标下棋的功能吧。 首先添加一个Engine类,然后添加若干方法和成员,代码如下: #ifndef FIVE_ENGINE_H #define FIVE_ENGINE_H #include using namespace std; // 游戏状态 enum GAME_STATUS {
2013-12-04 17:40:58 1095
原创 一步一步实现五子棋1
最近待业中,趁这段时间想实现一个VC版的五子棋软件,并且把每天的工作内容写出来当作对自己工作的总结,同时希望能达到抛砖引玉的效果,希望各位大侠多多指教。 首先建立一个MFC工程,如下图: 工程建好后我们先完成棋盘的绘制。这里我们使用GDI+来绘图。要使用GDI+,先要完成如下工作。 (1)将以下代码加入到StdAfx.h头文件中: #include
2013-12-04 12:27:41 2506 1
JavaLauncher
2007-11-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人