linux课程设计报告_2.docx
《linux课程设计报告_2.docx》由会员分享,可在线阅读,更多相关《linux课程设计报告_2.docx(10页珍藏版)》请在第一文库网上搜索。
1、1inux课程设计专业:软件工程班级:1班学生姓名:陈琛学号:1101070111291问题描述在1inux操作系统下,使用QT完成一个有AI的五子棋游戏。2 .概述本程序使用QT制作图形界面,展现出一个五子棋的游戏界面,并通过它与用户交互,用户可选择持白子或黑子进行游戏,同时,也可以单击鼠标右键,让电脑帮忙下子。编程平台为,openSUSE12.3+QtCreator2.6.2+Qt4.8.4.预览图如下:3 .模块和功能的划分程序总体上分为3个部分:界面、游戏逻辑、A1界面负责呈现游戏内容、与用户交互。游戏逻辑负责游戏的规则和胜负判定等游戏相关的业务逻辑处理。AI则是计算如何下子的模块,计
2、算机通过AI模块决定将棋子下在哪个点上。4 .使用的相关函数和类QMainWindow类:QT的主窗口类。QWidget类:QT的窗口部件的基类。QMenu类:菜单类。QAction类:菜单项类QMeSSageBoX类:常用的消息框模板类。QobjeCt类:QTObjeCt的基类QApp1ication类:QT应用的框架类。QPainter类:QT的画笔类。QT采用所谓“信号和槽”的机制实现应用程序里组建的通信。使用原有回调机制,若要将某一代码与按钮关联在一起,必须将函数指针传输给该按钮。单击此按钮时,系统将调用此函数。而对于老的工具套件而言,调用此函数时,它不确保将正确类型的参数传递给该函数
3、,这样很有可能导致崩溃。回调方法的另一问题是:它将GUI元素与功能紧紧地捆绑在一起,这样导致很难独立开发类。而Qt的信号和槽机制则不同。发生事件时,Qt窗体将会发出信号。例如,单击某一按钮时,该按钮将发出“c1icked”信号。编程人员要想连接一个信号可以创建一个函数(即“槽”)、并调用ConnectO函数将信号与槽关联起来。Qt的信号和槽机制不要求各类彼此感知,这样可以更轻松地开发极易重新使用的类。由于信号和槽都属于类型安全的,因此,类型错误都将报告为警告,因此不会发生崩溃。例如,如果“退出”按钮的C1ickedO信号与应用程序的quit()槽相连,那么如果用户单击“退出”,则会终止该应用程
4、序。如果以代码形式表示,则应将上述过程编写为:connect(button,SIGNA1(c1icked(),qApp,S1OT(quit();本程序中使用的事件都是通过Conneet将信号和槽关联起来实现的。值得一说的是,SIGNA1S1oT以及emit、s1otsSigna1S等宏和关键字会交给预处理器和元对象编译器替换,C+本身并不支持。5 .具体实现分析程序总体框架如下:程序通过主窗体向主面板发出开始游戏或停止游戏的指令。而游戏主面板则对外负责对用户输入的监听和界面的呈现;对内负责想游戏业务逻辑对象发出指令,如下子,另一方面,对内还会通过调用业务逻辑的接口获取然后设置窗体大小,还有棋盘
5、大小等信息。AI对象也会在游戏主面板的类中作为(不可见的)子成员,一共有2个A1对象,一个用于与玩家对战,另一个则会站在玩家的角度可以作为挑战者下子,AI会与一盘棋的一方绑定,AI的思考将会与这相关。AI算法采用了一个简单的贪心算法:计算在棋盘上所有点的价值,然后取价值最大的点作为下子点,而价值的评价算法因此成为了AI聪明度的关键因素,由于时间有限,我并没有仔细设计评分算法,因此AI还有带改进,但事实上,如果与它对弈,稍不注意还是会输掉的!程序结构图如下:下面是代码的头文件:*mainwindow.h*/c1assMainWindow:pub1icQMainWindow(Q.OBJECTpub
6、1ic:exp1icitMainWindow(QWidgetsjiparent=O);-MainWindow();protected:private:GameGridgameGrid;intmakeMenu();pub1ics1ots:voidquit();voidshowAbout();;*gobanggame.h*/c1assGobangGame(pub1ic:GobangGame(intgrid1ength);-GobangGameO;*重置游戏*/voidreset();* 在第row行第Co1列下子,自动判断该哪方下子* 如果下子成功返回true,否则fa1se.* /boo1set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- linux 课程设计 报告 _2
![提示](https://www.001doc.com/images/bang_tan.gif)