国际象棋游戏的学习软件的设计与实现
摘要 | 第5-6页 |
ABSTRACT | 第6-7页 |
第一章 绪论 | 第11-18页 |
1.1 研究背景和意义 | 第11-17页 |
1.2 论文的主要工作 | 第17页 |
1.3 章节安排 | 第17-18页 |
第二章 相关技术介绍 | 第18-21页 |
2.1 关于Visual C++ | 第18页 |
2.2 MFC概述 | 第18-19页 |
2.3 人工智能概述 | 第19-21页 |
第三章 国际象棋学习软件的需求分析 | 第21-25页 |
3.1 软件实现的目标分析 | 第21页 |
3.2 用户的特点 | 第21-22页 |
3.3 系统初步分析 | 第22-23页 |
3.4 对功能的设定 | 第23-24页 |
3.4.1 对弈双方设定 | 第23页 |
3.4.2 时间设定 | 第23-24页 |
3.4.3 对弈开始结束的设定 | 第24页 |
3.5 本章小结 | 第24-25页 |
第四章 国际象棋学习软件的架构设计 | 第25-44页 |
4.1 初步设计 | 第25-28页 |
4.2 局面表示 | 第28-29页 |
4.3 数据结构 | 第29页 |
4.4 走法生成 | 第29-30页 |
4.5 搜索算法 | 第30-31页 |
4.6 局面评估 | 第31-32页 |
4.7 窗.探测 | 第32-34页 |
4.7.1 渴望搜索 | 第32-33页 |
4.7.2 极小窗.算法 | 第33-34页 |
4.8 静寂搜索 | 第34页 |
4.9 历史启发 | 第34-36页 |
4.10 深层迭代 | 第36-37页 |
4.11 静态评估算法详述 | 第37-39页 |
4.11.1 对棋子攻击性和棋力的评估 | 第37-38页 |
4.11.2 对棋子位置附加价值的综合评估 | 第38页 |
4.11.3 对灵活性的评估 | 第38-39页 |
4.11.4 对棋子的保护性和协调性的评估 | 第39页 |
4.11.5 静态估值函数 | 第39页 |
4.12 静态估值函数的缺陷 | 第39-40页 |
4.13 局势因子及动态局势再评估函数 | 第40-42页 |
4.14 动态局势再评估算法的步骤 | 第42页 |
4.15 本章小结 | 第42-44页 |
第五章 国际象棋学习软件系统实现 | 第44-69页 |
5.1 界面实现 | 第44-47页 |
5.1.1 详细实现 | 第44-45页 |
5.1.2 关键代码展示 | 第45-47页 |
5.2 走棋规则 | 第47-52页 |
5.2.1 局面表示 | 第47页 |
5.2.2 走法表示 | 第47-51页 |
5.2.3 关键代码展示 | 第51-52页 |
5.3 胜负判断 | 第52-55页 |
5.3.1 王是否被吃 | 第52-53页 |
5.3.2 时间是否用完 | 第53页 |
5.3.3 王是否被将死 | 第53-54页 |
5.3.4 关键代码展示 | 第54-55页 |
5.4 游戏模式及限时 | 第55-56页 |
5.4.1 时间限制的设置 | 第55-56页 |
5.4.2 游戏模式的设置 | 第56页 |
5.5 AI算法分析 | 第56-68页 |
5.5.1 算法概述 | 第56-57页 |
5.5.2 局面评估 | 第57-59页 |
5.5.3 搜索算法 | 第59-62页 |
5.5.4 极大极小算法 | 第62-63页 |
5.5.6 负极大值法 | 第63-64页 |
5.5.7 Alpha-Beta搜索算法 | 第64-67页 |
5.5.8 置换表和开局残局库 | 第67-68页 |
5.6 本章小结 | 第68-69页 |
第六章 程序测试 | 第69-75页 |
6.1 系统测试环境 | 第69页 |
6.2 测试方法 | 第69页 |
6.3 测试用例设计 | 第69-74页 |
6.3.1 人人对弈 | 第69-71页 |
6.3.2 人机对弈 | 第71页 |
6.3.3 走法错位判断 | 第71-72页 |
6.3.4 胜负判断 | 第72-74页 |
6.4 测试计算时间 | 第74页 |
6.5 测试结果分析 | 第74-75页 |
第七章 总结与展望 | 第75-76页 |
7.1 全文总结 | 第75页 |
7.2 未来展望 | 第75-76页 |
致谢 | 第76-77页 |
参考文献 | 第77-79页 |