欢迎来到天天文库
浏览记录
ID:9276281
大小:347.28 KB
页数:25页
时间:2018-04-26
《成都理工大学课程设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、嵌入式系统开发设计课程设计设计题目软件中的典型算法分析学院名称信息科学与技术学院专业名称学生姓名学生学号任课教师设计成绩教务处制2015年3月24日25软件中的典型算法分析摘要此次课程设计为加农炮游戏,这是一款基于Linux平台,运用QtCreater软件开发的一款小游戏。本文将从加农炮的设计及实现出发,分析在实现过程中的一些典型算法。其中包括坐标转换算法、碰撞检测算法、边界检测算法、定时器驱动等。关键词:坐标转换算法;碰撞检测算法;边界检测算法;定时器驱动;QtCreater1、加农炮整体实现流程1.1加农
2、炮设计与实现简述这是一款基于Linux平台,运用QtCreater软件开发的一款加农炮小游戏。游戏的界面为一个窗口,在窗口的右边从上到下以此是:quit按钮,该按钮的作用是用于关闭游戏与窗口中×的作用相同;AngelLED显示屏,屏上显示的数据就是炮台当前的角度,下边是一个滚动滑条用于控制炮台的角度,炮台角度的范围是0度~70度,当滑条向左边滑动,炮台的角度变小,当滑条向右边滑动,炮台的角25度变大;ForceLED显示屏,屏上显示的数据是炮台射出的炮弹的力度,下边的滑条用于控制炮台射出炮弹的速度,炮弹的速度
3、范围是0~50,当滑条向右边滑动,炮弹的力度变大,当向左边滑动,炮弹的力度变小。窗口的上边一栏从左到右分别是:Shoot按钮,当用户按下这个按钮后炮台会发射一个炮弹,炮弹的轨迹遵循物理定理,将成一个抛物线运动;HitsLED显示屏,屏上的数据显示的是炮台发出的炮弹击中木块的次数,最多显示为15;ShootsLeftLED显示屏,屏上的数据显示的是炮台还可以发出的炮弹数,默认的初始值为15,最小为0;NewGame按钮,当用户按下这个按钮时,其将进入一个新游戏,所有的值都变为初始值。窗口的右下方的大屏幕即为游戏
4、显示界面,炮台位于游戏显示界面的左下角,在游戏显示界面的任意位置处有一个小木条。当用户打开游戏界面后按下Shoot按钮时,炮台自动发射一个炮弹,如果炮弹击打到小木块,炮弹和小木块会同时消失,同时会在游戏显示界面的另外一个任意位置显示出另外一个小木块,如果用户发射出的炮弹没有击打到小木块,用户可以通过调整炮台的角度,发射炮弹的力度来调整炮弹的运动轨迹以此来使炮弹能够击打到小木块,当用户发射够15枚炮弹是,游戏显示界面会显示GameOver同时游戏显示界面的炮台和炮弹会消失,当没有发射完后,用户继续发射。如果用户
5、没有发射完炮弹就想进行新游戏,这个操作也是被允许的。自定义窗口部件:•lcdrange.h包含LCDRange类定义。25•lcdrange.cpp包含LCDRange类实现。•cannon.h包含CannonField类定义。•cannonfield.cpp包含CannonField类实现。•main.cpp包含MyWidget和main。1.2流程图25251.3加农炮模块分析及整体界面1.3.1按钮按钮是执行游戏界面的退出功能;是执行炮弹的发射功能;按钮式执行新游戏的功能。1.3.2LED显示击中木块数
6、显示屏;可发送炮弹数显示屏;炮台角度显示屏及滑动条;力度显示屏及滑动条。其中,Angel和Force滚动条,两个作用分别用于控制炮台的角度与力度。251.3.3加农炮界面2、坐标转换算法2.1坐标转换原理我们已经能够使用QPainter的相关函数画出一些东西了。接下来,我们要看的是QPainter的坐标系统。 同很多坐标系统一样,QPainter的默认坐标的原点(0,0)位于屏幕的左上角,X轴正方向是水平向右,Y轴正方向是竖直向下。在这个坐标系统中,每个像素占据1x1的空间。你可以把它想象成是一张坐标值,其中
7、的每个小格都是1个像素。这么说来,一个像素的中心实际上是一个“半像素坐标系”,也就是说,像素(x,y)的中心位25置其实是在(x+0.5,y+0.5)的位置上。因此,如果我们使用QPainter在(100,100)处绘制一个像素,那么,这个像素的中心坐标是(100.5,100.5)。 这种细微的差别在实际应用中,特别是对坐标要求精确的系统中是很重要的。首先,只有在禁止反走样,也就是默认状态下,才会有这0.5像素的偏移;如果使用了反走样,那么,我们画(100,100)位置的像素时,QPainter会在(99.5
8、,99.5),(99.5,100.5),(100.5,99.5)和(100.5,100.5)四个位置绘制一个亮色的像素,这么产生的效果就是在这四个像素的焦点处(100,100)产生了一个像素。如果不需要这个特性,就需要将QPainter的坐标系平移(0.5,0.5)。 这一特性在绘制直线、矩形等图形的时候都会用到。下图给出了在没有反走样技术时,使用drawRect(2,2,6,5)绘制一个矩形的示例
此文档下载收益归作者所有