基于QT的中国象棋设计与实现答辩ppt.ppt
《基于QT的中国象棋设计与实现答辩ppt.ppt》由会员分享,可在线阅读,更多相关《基于QT的中国象棋设计与实现答辩ppt.ppt(30页珍藏版)》请在三一文库上搜索。
1、基于QT中国象棋游戏的设计与实现,1.引言,1.1象棋游戏设计目的与意义 棋牌游戏属于休闲类游戏,相对于角色扮演类游戏和即时战略类游戏等其他游戏,具有上手快、游戏时间短的特点,更利于用户进行放松休闲。作为中华民族悠久文化的代表之一,中国象棋不仅源远流长,而且基础广泛,作为一项智力运动,中国象棋开始走向世界。,1.2象棋的研究方法: 本设计在linux平台操作与开发。 对于象棋来说,核心设计主要包括人工智能算法、整个游戏界面及程序辅助部分的实现。主要用QT开发,使游戏开发更加方便,并利用人工智能相关搜索算法实现人工智能的着法生产,从而完成整个游戏的功能。,本设计目 标 实现中国象棋人机对弈程序。
2、 该程序功能包括:人机对弈; 人人对弈(不过在同一个平台上); 搜索算法的设定; 悔棋、还原; 整个程序实现为两大部分: 一、人工智能算法设计 该部分实现了如何让计算机下中国象棋,其中涉及人机对弈的基本理论及思想,是该本设计的核心部分。 二、界面及程序辅助设计 在下棋引擎尚不能满足人机交互的基本要求,因此还需要一个界面来作为引擎的载体,同时提供一些诸如悔棋,还原之类的辅助功能。 下面分别介绍各个部分实现。由于界面及程序辅助部分涉及内容宽泛而有繁琐,因而本文只介绍其中重点部分。,2 概述 2.1 QT简介 Qt是一个跨平台的C+图形用户界面库,由挪威TrollTech公司出品,目前包括Qt、基于
3、FrameBuffer的Qtopia Core、快速开发工具Qt Designer和国际化工具Qt Linguist等部分。Qt支持所有的UNIX系统,当然也包括Linux系统,还支持WinNT/Win2k、Windows 95/98平台。 基本上Qt同X-Window上的Motif、Openwin、GTK等图形界面库和Windows平台上的MFC、OWL、VCL、ATL是同类型的。不过Qt还具有下列一些优点。 (1)优良的跨平台特性。 Qt支持下列操作系统:Microsoft Windows 95/98、Microsoft Windows NT、Linux、Solaris、SunOS、HP-
4、UX、Digital UNIX (OSF/1、Tru64)、Irix、FreeBSD、BSD/OS、SCO、AIX、OS390和QNX等。,(2)面向对象。 Qt的良好封装机制使得Qt的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。Qt提供了一种称为signals/slots 的安全类型来替代callback,这使得各个元件之间的协同工作变得十分简单。 (3)丰富的API。 Qt包括多达250个以上的C+类,还提供基于模板的collections、serialization、file、I/O device、directory management和date/time类。甚至还包
5、括正则表达式的处理功能 (4)支持2D/3D图形渲染,支持OpenGL。 (5)大量的开发文档。 (6)XML支持。,2.2 Linux操作系统简介 Linux是一种自由和开放源码的类Unix操作系统。 Linux操作系统是Nuix操作系统的一种克隆系统。它诞生于1991 年的10 月5 日以后借助于Internet 网络,并经过全世界各地计算机爱好者的共同努力下,现已成为今天世界上使用最多的一种UNIX 类操作系统,并且使用人数还在迅猛增长。 Linux 操作系统的诞生、发展和成长过程始终依赖着以下五个重要支柱:UNIX 操作系统、MI操作系统、GNU 计划、POSIX 标准和Interne
6、t 网络。 目前,Linux的发行版有很多,如Ubuntu,RedHat,Debian,Fedora等等。,3 人工智能算法设计 程序的基本框架: 从程序的结构上讲,大体上分为四大块: 棋局表示; 着法生成; 搜索算法; 局面评估; 程序的大概的思想是: 首先使用一个数据数据结构来描述棋局信息,对某一特定的棋局信息由着法生产器生产当前下棋方所有合法的着法并依次存入着法队列。然后通过搜索算法来逐一读取着法并调用局面估值函数对该着法所生产的后继局面进行评估打分,从中选出一个最有可能导致棋方取胜的着法。在搜索的过程中还可以采用一些辅助手段来提高搜索的效率。其过程如下所示(图1):,3.1 棋局表示
7、对于棋盘局面的表示可采用传统而简单的“棋盘数组”。即用一个10*9的数组来存储棋盘上的信息,数组每个元素储存棋盘上是否有棋子。这种表示方法简单易行。按此方法棋盘的初始情形如下所示: const BYTE initBoard109 = B_CAR,B_HORSE,B_ELEPHANT,B_BISHOP,B_KING,B_BISHOP,B_ELEPHANT,B_HORSE,B_CAR, NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS, NOCHESS,B_CANON,NOCHESS,NOCHESS,NO
8、CHESS,NOCHESS,NOCHESS,B_CANON,NOCHESS, B_PAWN,NOCHESS,B_PAWN,NOCHESS,B_PAWN,NOCHESS,B_PAWN,NOCHESS,B_PAWN, NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS, /楚河 汉界/ NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS, R_PAWN,NOCHESS,R_PAWN,NOCHESS,R_PAWN,NO
9、CHESS,R_PAWN,NOCHESS,R_PAWN, NOCHESS,R_CANON,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,R_CANON,NOCHESS, NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS,NOCHESS, R_CAR,R_HORSE,R_ELEPHANT,R_BISHOP,R_KING,R_BISHOP,R_ELEPHANT,R_HORSE,R_CAR ;,对于着法的表示,直接借用棋盘数组的下标来记录着法的起点和目标点。至于是什么棋子在走,以及是否吃子
10、、吃的是什么子,在着法结构中并不记录。这些信息由外部读取棋盘上的起点、终点的数据获得。着法结构定义如下,其中包括了对着法的历史得分的记录项,以供后面要讲到的“历史启发”所用。 typedef struct short nChessID; /表明是什么棋子 CHESSMANPOS From;/起始位置 CHESSMANPOS To; /走到什么位置 int Score; /走法的分数 CHESSMOVE;,3.2 着法生成 程序需要让计算机在轮到它走子的时候能够执行一步它认为对它最有利的着法,那前提就是它要有诸多可供选择的着法,提供所有候选着法的“清单”就是着法生产器所要完成的。之后用搜索函数来
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 QT 中国象棋 设计 实现 答辩 ppt
链接地址:https://www.31doc.com/p-5184175.html