免费获取| 专业列表 论文代理
论文天下网


自动化 模具 机械 电子 通信 动画 英语论文 工程管理 金融论文 旅游管理 工业工程 生物工程 给排水论文 西门子PLC 历史学 三菱PLC
单片机 财务 会计 法律 行政 物理 物流论文 电子商务 制药工程 包装工程 土木工程 材料科学 汉语言论文 欧姆龙PLC 电压表 松下PLC
计算机 化工 数电 工商 食品 德语 国贸论文 人力资源 教育管理 交通工程 市场营销 印刷工程 机电一体化 数控论文 变电站 文化产业

  • 论文天下网 |
  • 原创毕业论文 |
  • 论文范文 |
  • 论文下载 |
  • 计算机论文 |
  • 论文降重 |
  • 毕业论文 |
  • 外文翻译 |
  • 免费论文 |
  • 开题报告 |
  • 心得体会 |
微信集赞换取论文,低至28个 毕业论文快速高质量降重 如何验证论文网的真实性 本站论文介绍说明

当前位置:论文天下网 -> 免费论文 -> 计算机论文
·电子商务原创毕业论文
·法学专业原创毕业论文
·土木工程原创毕业论文
·工商管理专业原创论文
·电气自动化原创毕业论文
·汉语言文学专业原创论文
·会计专业原创毕业论文
·计算机技术原创毕业论文
·人力资源专业原创毕业论文
·市场营销专业原创论文
·信息管理专业原创毕业论文
·学前教育专业原创论文
·教育管理专业原创论文
·小学教育专业原创论文
·应用心理学专业原创论文
·英语专业原创论文
·播音与主持原创毕业论文
·行政管理专业原创论文
·广播电视编导原创毕业论文
·摄影专业原创毕业论文
·广告学专业原创毕业论文
·新闻学专业原创毕业论文
·文化产业管理原创毕业论文
·视觉传达设计原创毕业论文
·表演专业原创毕业论文
·动画专业原创毕业论文
·录音艺术原创毕业论文
·护理专业原创毕业论文
·通信工程原创毕业论文
·金融专业原创毕业论文

免费vc中国象棋软件(六)

计算机思考和走棋的时间还不足1秒,如果按每秒钟计一次时,则该不足1秒的时间将被遗漏),当然实际显示的时候还是只显示到秒。

4、着法名称显示(程序辅助)

 每当下棋方(用户或是计算机)走一步棋,我们就在棋盘旁边的一个列表框控件(List Box)中按照中国象棋关于着法描述的规范要求显示出该着法的名称。如:红炮二平五、黑马8进7此类。为了获得该着法名称,我们写了一个六百余行的函数。其功能就是将被移动的棋子类型以及走法的起点坐标、终点坐标这些信息转换成中国象棋所规范的着法名称。由于该函数主要涉及的是中国象棋关于着法表示的规范要求,故在此我们不对其具体实现做额外的解释。这里我们主要讨论的是如何对列表框控件(List Box)进行操作,以显示或删除着法名称。
 MFC为我们提供了一个CListBox类,使用该类的成员函数我们可以非常容易地实现在List Box中添加与删除“项(item)”。
 首先,我们先要定义一个指向该类的对象的指针:
 CListBox* pLB;
 然后,在进行程序初始化(对话框的初始化)时,我们使用如下语句来让该指针与对话框中的List Box控件建立起联系来(即让该指针指向对话框中的List Box控件)。
 pLB = (CListBox*)GetDlgItem(IDC_LISTCCHESS);
 其中IDC_LISTCCHESS是所要建立关联的控件的ID号。
 之后,我们便可调用成员函数pLB->AddString(str);来向List Box控件中添加显示字符串,str即为所要添加的字符串。
 当列表框中的项的数目超过列表框的显示范围时,列表框会自动添加垂直滚动条(前提是其VerticalScrollbar属性要为True——该属性默认即为True)。但是显示的内容依然是最早加进来的项。也就是说,垂直滚动条不会自动向下滚。为了能让列表框中始终能自动显示出最新的着法名称(所谓自动,即不需用户去手动地滚动垂直滚动条来查看最新的着法名称),我们可以使用pLB->PostMessage(WM_VSCROLL,SB_BOTTOM,0);语句来发送一个让垂直滚动条处于最底端的消息,使得列表框自动滚动垂直滚动条以显示最新的着法名称。
 当我们想要从列表框中删除项时,我们可以使用pLB->DeleteString(n);参数n指明了要删除的行数。最早加入列表框中的项记为第0行,以后逐次递增。若要删除最后一行内容(在悔棋功能中需要用到这一操作),则可以使用pLB->DeleteString(pLB->GetCount()-1);其中pLB->GetCount()返回的是列表框中的项的数目,减一之后正好是最后一项的行号。


5、悔棋、还原(程序辅助)

 悔棋和还原是棋类软件中较为基本的功能。要实现悔棋和还原功能,首先我们要明确哪些信息应当被保存以供悔棋和还原所使用。
 在我们的程序中保存了如下信息:
棋局表示中所定义的棋盘数组;
各棋子的贴图位置。
 这里需要特别说明的是通常象棋程序处于程序效率的考虑并不保存所有棋子的信息,而只是保存之前一步的走棋信息。此后当悔棋的时候,需要撤销着法;还原的时候,需要执行着法。然而,我们在编写自己的程序时一来考虑到程序的可读性和不易出错性,二来考虑到对当今的计算机的配置来说这点开销基本上不会对程序的效率产生什么影响。因此索性保存了全部棋子的信息。
 根据所要保存的数据我们定义了如下基本结构类型:
 typedef struct{
 BYTE  CChessBoard[9][10];
 POINT ptChess[32];
 } CCChess; // 供悔棋、还原保存用的信息结构
 
 并随之定义了两个队列以供悔棋和还原所用:
 vector<CCChess> vBackQueue;  //悔棋保存队列
 vector<CCChess> vForwardQueue;//还原保存队列
 
 在对弈过程中,每一回合我们都将棋局信息(这里指前面所说的需要保存的信息)保存至vBackQueue队列,以供悔棋所用。同时,若vForwardQueue不为空的话,我们还将清空它。因为还原功能是与悔棋功能相对应的,只有当产生了悔棋功能之后,还原功能才会被激活。一个回合的结束意味着前一次操作没有悔棋功能的产生,因此还原队列也应被清空。
 在悔棋中我们主要完成了以下任务:
下棋回合数减一;
将当前局面信息保存至vForwardQueue队列,以供还原所用;
从vBackQueue队列中取出上一回合的棋局信息,恢复到当前局面,然后将其从vBackQueue队列中剔除掉;
将显示着法名称的列表框中的本回合的着法名称保存到一个着法名称队列(我们将其定义为vector<CString> vNameQueue;),以供还原所用。然后从列表框中删除它。
 而在还原中我们所做的刚好和悔棋相反:
下棋回合数加一;
将当前局面信息保存至vBackQueue队列,以供悔棋所用;
从vForwardQueue队列中取出最近一次悔棋前的棋局信息,恢复到当前局面,然后将其从vForwardQueue队列中剔除;
从着法名称队列vNameQueue中取出最近一次存入的着法名称(两项,因为每回合会产生两步着法),将其重新显示到列表框中。然后将其从vNameQueue中剔除。
 以上便是悔棋和还原功能所完成的具体操作,其代码分别写入悔棋和还原按钮(Button)的BN_CLICKED事件处理函数中。

四、总 结

 下面简单地总结一下。
 首先,在指导老师的热心帮助下,小组成员协同工作最终顺利实现了程序。整个程序近6000行代码,内容涉及人工智能的基本理论以及开发MFC应用程序的一些基础知识。无论是从程序难度上讲还是从程序规模上讲都是我们之前所未遇到过的。该程序的顺利完成为我们积累了相当可观的运用理论知识解决实际问题的经验。特别是当程序运行过程中发现错误的时候,找出问题所在并解决问题更是一个积累经验,提高实际编程能力的过程。得益于此次编写该中国象棋对弈程序,我们对人工智能有了一个初步的认识——这为我们以后选择进一步学习或研究的方向也提供了一定的参考价值。此外,我们还实践了用MFC编写基本的Windows应用程序,为今后从事开发Windows应用程序也起到了一定的入门帮助作用。
 然而,我们的程序也存在着几点遗憾:
 第一、由于我们对使用MFC编写Windows程序的不熟悉,导致我们在界面及附属功能部分花费了大量的时间和精力。因而没能够对计算机下棋引擎部分作更深一步的挖掘和研究。对于诸如位棋盘(BitBoard)、置换表(H

首页 上一页 3 4 5 6 7 下一页 尾页 6/7/7

相关论文
软件缺陷管理系统的分析与设计
计算机软件技术开发应用分析
关于计算机应用及软件讨论
浅析计算机软件可维护性方法
网站更新自动检测软件设计
大型超市管理系统软件的设计
我国软件产业的现状与对策分析
财务管理 市场营销 幼儿教育 PLC 单片机 教育 幼儿园 中小企业 教师 内部控制 工程造价 电子商务 PLC 变频调速 供水 系统 应用 控制 交流 变频 电梯 设计 火灾 自动 报警系统 单片机 烟雾 检测 篮球 比赛 计时器  自动售货机 控制系统 电热水器 温度 异步电动机 MATLAB 10kV 配电 线路 控制器 智能交通  机床  机械手 变电站 变压器 自动化 售货机 花样喷泉 立体车库 洗衣机 西门子PLC 组态控制 抢答器 数控车床 自行车 里程 车速 超声波 液位 传感器 密码锁 机构 数控激光 切割机设计 后托架 加工工艺 夹具设计 CA6140 传动轴 注塑 模具设计 液压 风险管理 银行 竞争力 中小企业 内部控制 状况 调查报告 融资 管理 中间业务 实习报告 金融 监管 制度  农村 养老保险 合作医疗 外贸 理财 规划 网上银行 发展现状 个人理财 人民币 升值 
上一篇:免费vc++网上寻呼QICQ源代码(附.. 下一篇:免费图书管理系统
推荐论文 本专业最新论文
贸易公司信息管理系统+VB
VB高速公路票据管理系统
电子教务管理系统vb
delphi+access通用会员管理系统[开题..
个人网站设计之上网导航设计
网上办公自动化系统的设计和实现
特洛伊木马攻击分析和检测技术
特洛伊木马程序攻击分析和检测技术
《数据结构》教学辅助系统的规划与设计
学校计算机网络环境下教学模式的研究
浅谈计算机系统维护
智能楼宇网络规划与设计
Tags:免费 中国象棋 软件 【返回顶部】

客服QQ:349991040点击这里给我发消息

微   信:1 7 3 0 4 5 4 5

相关栏目

自动化相关
计算机论文
工程管理论文
法律论文
医学论文
人力资源
电子专业
电气工程
英语论文
行政管理
电子商务
社科文学
教育论文
物流专业
金融专业
财务管理
会计专业
化学化工材料科学
电子通信
环境科学
经济类
机械模具类
报告,总结,申请书
其他专业论文

PLC 变频调速 供水 系统 应用 控制 交流 变频 电梯 设计 火灾 自动 报警系统 单片机 烟雾 检测 篮球 比赛 计时器  自动售货机 控制系统 电热水器 温度 异步电动机 MATLAB 10kV 配电 线路 控制器 智能交通  机床  机械手 变电站 变压器 自动化 售货机 花样喷泉 立体车库 洗衣机 西门子PLC 组态控制 抢答器 数控车床 自行车 里程 车速 超声波 液位 传感器 密码锁 机构 数控激光 切割机设计 后托架 加工工艺 夹具设计 CA6140 传动轴 注塑 模具设计 液压
风险管理 银行 竞争力 中小企业 内部控制 状况 调查报告 融资 管理 中间业务 实习报告 金融 监管 制度  农村 养老保险 合作医疗 外贸 理财 规划 网上银行 发展现状 个人理财 人民币 升值

关于我们 | 联系方式 | 论文说明 | 网站地图 | 免费获取 | 钻石会员 | 原创毕业论文

 

论文天下网提供论文检测,论文降重,论文范文,论文排版,网站永久域名WWW.GEPUW.NET

本站部分文章来自网友投稿上传,如发现侵犯了您的版权,请联系指出,本站及时确认并删除  E-mail: 893628136@qq.com

Copyright@ 2009-2022 GEPUW.NET 论文天下网 版权所有