基于qt的嵌入式终端应用程序——五子棋游戏开发内容摘要:
大。 Arm2440 开发板的价格也是可以接受的,且有用户指导手册,便宜开发,易于使用。 本 应用 使用 Qt 开发, Qt 具有良好的可靠性、可用性、可编程性与易用性。 它 有优良的跨平台特性 , Qt支持 Microsoft Windows 95/9 Microsoft Windows NT、 Linux、 Solaris、 SunOS、 HPUX、 Digital UNIX 、 Irix、 FreeBSD、 BSD/OS、SCO、 AIX、 OS390、 QNX 等等 众多的操作系统 ; 并且 Qt 的良好封装机制 也 使得Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的;Qt还 支持主题,基于 Qt的应用程序能够在 Windows 外观、 Motif 外观,以及其它一些用户化外观主题之间切换; Qt 也 提供了大量的联机参考文档,有超文本 HTML 方式,也有 UNIX 帮助页 Man 手册页和补充说明。 对于初学者,其中的指南将一步步介绍如何进行 Qt 编程; 还有 Qt 的 便利性 , 支持 2D/3D 图形渲染,支持 OpenGL。 以及本身 丰富的 API。 Qt为专业应用提供了大量的函数,在 Qt 的 API 中含有大约 250 个 C++类,大多数的类都是 GUI 专有的,甚至还包括正则表达式的处理功能。 本 应用 前台作为与用户直接交互的界面,在设计考虑功能的同时,也考虑了操作的简洁和方便性,设计了方便用户使用的按钮,如开始按钮,重来按钮,退出按钮,悔棋按钮,目的是让大多数不熟练电脑操作的客户,也能轻 松的享受本系统给他们带来的便利。 因此该系统在操作上是可行的。 8 4 系统总体设计 五子棋游戏设计原则 一个好的游戏往往要遵循游戏的设计原则,主要是从实用 性,先进性,兼容性和规范性上进行设计。 而各个原则的具体描述如下。 1.实用性原则:确保 具有良好的系统性能,友好的用户界面,较高的处理效率。 2.先进性原则:采用先进而成熟的技术,使软件具有较高的技术水平和较长的生命周期。 3.兼容性原则: 对于所选硬件系统及平台,能很好地适应开发和使用。 4.规范性原则: 软件设计过程尽量按照规范进行,系统编码,操作系统平台以及所采用的开发方法也按照相应的标准。 五子棋游戏的总体设计结构 本系统主要包括包括绘制出棋子和棋盘,设置出开始、重来、悔棋、退出等按钮功能。 用到了鼠标点击事件的处理,绘制棋子,和棋盘的函数 drawpixmap()的使用。 还有胜负 的判断 显示。 需要实现的的游戏主 要功能: ( 1)主窗口:负责管理所有的部件,创建所有信号和槽的连接 ( 2)棋盘类:绘制棋盘,把棋盘看成一个二维数组,处理鼠标点击事件,在点击处一定范围内绘制棋子,然后最主要的就是算法,就是怎么走才算赢,这个要花时间研究 ( 3)胜负显示,使游 戏的人体会到胜利的快乐。 ( 4)设计按钮,控制开始、重来、悔棋、退出等功能。 9 5 系统模块设计 用 Qtcreator 进行五子棋应用程序的主要功能实现 本五子棋应用程序有绘制棋盘和棋子的功能,鼠标处理事件的实现,将鼠标坐标转换为方格子的坐标等多个主要函数。 : void MainWindow::paintEvent(QPaintEvent* ) { QPainter painter(this)。 QPainter greenPainter(this)。 (Qt::green)。 QRect rect1(10,10,695,554)。 (rect,*mChessboardPixmap)。 QRect rect2(705,220,125,130)。 (rect1,*mheifangPixmap)。 QRect rect3(830,220,125,130)。 (rect2,*mbaifangPixmap)。 QRect rect4(690,0,331,231)。 (rect3,*mbanPixmap)。 QRect rect5(690,352,261,260)。 (rect4,*mbanPixmap)。 QRect temptRect。 int i。 for( i=0。 i225。 i++) { if([i].()0) break。 QPoint p=changeGridToMouse( [i].mPoint)。 ()=convertGridToMouse( [i].mPoint).y()。 (+1)*2010+MenuBarSize, 20, 20)。 temptRect=QRect(p,mChessSize)。 if([i].mTurn==0) { 10 (temptRect,*mWhiteChessPixmap)。 } else { (temptRect,*mBlackChessPixmap)。 } } ([mGameLogic.].mPoint, 10,10)。 } : void MainWindow::mousePressEvent(QMouseEvent *e) { if(!=39。 p39。 )//39。 p39。 playing return。 QPoint p=changeMouseToGrid(epos())。 if(()0||()0) return。 if(!((),(),0)) //调用 canput()和 addrecord()添加记录 { printf(cannot put chess\n)。 return。 } PutChessToFace(p)。 //重绘棋子 repaint(tmpt)。 判断输赢 } : QPoint MainWindow::changeMouseToGrid(const QPoint p) { int x=()mLeftMargin。 int y=()mTopMargin。 if( (x=(745170))//()mLeftMarginmRightMargin) return(QPoint(1,1))。 QPoint g。 int sizex=()。 int sizey=()。 11 if((()sizex)%sizex = sizex/2){ (x/sizex)。 }//if else{ (x/sizex+1)。 }//else if((()sizey)%sizey = sizey/2){ (y/sizey)。 }//if else{ (y/sizey+1)。 }//else return g。 } : QPoint MainWindow::changeGridToMouse(const QPoint g) { QPoint p。 if(()0||()0) return QPoint(1,1)。 int sizex=()。 int sizey=()。 int x=()*sizex。 int y=()*sizey。 x+=mLeftMargin。 y+=mTopMargin。 (x)。 (y)。 if(()0||()0) printf(int convertGridToMouse size:(%d,%d) grid x,y : %d,%d mouse x, y:%d,%d \n, sizex, sizey, (), (), (), ())。 return p。 } direction 方向的 side 方棋子个数 : //以 x,y 点为中心 ,计算 direction 方向的 side 方棋子个数 //0x15,0y15 int GameLogic :: CountStones(int x, int y ,int side, int direction) 12 { int count=1。 int rx,ry。 int dx=0,dy=0。 rx=x。 ry=y。 switch(direction) { case 0://horizontal 39。 39。 { dx=1。 dy=0。 break。 } case 1://vertical 39。 | 39。 { dx=0。 dy=1。 break。 } case 2://39。 \39。 { dx=1。 dy=1。 break。 } case 3:// 39。 /39。 { dx=1。 dy=1。 break。 } } //每条线上两个方向 for(int i=0。 i2。 i++)。 { while(rx+dx=0amp。 amp。 rx+dx=15amp。 amp。 ry+dy=0amp。 amp。 ry+dy=15amp。 amp。 mChessBoard[rx+dx][ry+dy]==side) { rx+=dx。 ry+=dy。 count++。 } 13 if(dx==1amp。 amp。 dy==0)//horizontal 39。 39。 {。基于qt的嵌入式终端应用程序——五子棋游戏开发
相关推荐
1) 显示所有记事本文件列表: 当文件数量多于一屏的时候,出现纵向滚动条。 可以按方向键,向下或向上选择文件。 选择的文件是列表中的第一个文件时,按方向键的向上键时,显示列表的最后一个文件。 选择的文件是列表中的最后一个文件时,按方向键的向下键时,显示列表的第一个文件。 即列表条目可循环显示。 ( 2) 记事本文件的保 存格式为 txt文件,即后缀名为 .txt 或 .TXT.
数字图像处理。 计算机的发明以后,人们开始着重研究怎么样让计算机的功能更强大更加具有实用性,随着岁月的流逝,很多科学家为了计算机的发展奉献了自己的一生。 计算机的飞速发展给图像处理带来了飞速的发展。 人类为什么要研究科学。 无疑是为了让我们的生活更加滋润,让我们活在我们所设想过的梦幻里。 这样我们舒舒服服的享受生活,幸福快乐地过着人生。 数字图像处理技术无处不在。 只不过我们习惯了没注意而已。
SM2=0,不论接收到的第 9 位 RB8 为 0 还是为 1, TI、 RI 都以正常方式被激活。 在方式 1 处于接收时, 若 SM2=1,则只有收到有效的停止位后, RI 置 1。 在方式 0 中, SM2应为 0。 REN:允许串行接收位。 它由软件置位或清零。 REN=1 时,允许接收; REN=0时,禁止接收。 在 程序 中,由于乙机用于接收数据,因此使用位操作指令 SETB REN
交流 PC 端环境的搭建 主机环境 :CentOS 交叉编译工具: 主机编译工具: 本小结主要是介绍如何在 CentOS 环境中搭建 Qt开发环境, 将 Qt_S 软件包拷贝到 CentOS 双击即可开始安装。 点击 next,选择 custom 安装如图 6所示,选择所需的开发工具,如图 7 所示,接着点击下一步即可, 直到 安装完成。 12 图 6选择 自定义 安装方 式 图 7
球 等 一些大家熟悉的软件, Qt 发展前景很好,也非常容易入手,做出自己喜欢的软件。 在 开发上 可以降低成本,有很广的 市场 发展前景。 ( 1)跨平台特性,避免重复造车轮 写一次源代码,能在不同的系统平台下编译,这个功能很强大,目前,还没有什么软件与它相比。 有人说 flex build 可以跨平台,那么,二者效率不可同日而语, Qt 的效率还是不错的。 北京邮电大学毕业设计 6 使用
绘图工具 matplot 只能将原始无压缩音乐的波形画出来。 会议主持人: 记 录 人: 年 月 日 N 答 辩 小 组 意 见 评语: 评定等级: 负责人(签名): 年 月 日 系 学 位 委 员 会 意 见 评语: 论文(设计)最终评定等级: 负责人(签名): 系部(公章) 年 月 日 校 学 位 委 员 会 意 见 评语: 评定等级: 负责人(签名): 年 月 日 I 目 录 绪论 ...