基于QT的飞行射击游戏的角色安排
2018-01-08崔志斌成荣荣李珂
崔志斌 成荣荣 李珂
摘要:文献1主要说明了用类Element实现游戏的组件按钮和计时器,类GamePad进行游戏的布局安排[1]。该文主要阐述用类Plane设定游戏角色的相关内容,角色分为我方飞机和敌方飞机。
关键词:Plane;游戏角色;类
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)36-0058-02
Abstract: Document 1 mainly describes the use of class components to achieve the game components button and timer, class GamePad is used to layout the game arrangement[1]. This article mainly describes the use of class Plane setting the role of the relevant content of the game,the role is divided into our aircraft and enemy aircraft.
Key words: Plane; the role of game; class
1 设定位置和速度
在实现角色之前,有两步工作需要完成,第一,需要预先设定好角色出场时所处的位置,简单的设一个可以返回当前坐标点的函数:
2 设定角色
在基本工作实现之后就是设置角色,导入角色的图片路径、图片绘制的区域和备选图形区域之后绘制角色:
3 移动效果
移动的基本理论是根据不断变动的坐标点,将图片按照坐标所在的位置进行重绘,在控制敌机的移动,需要达到一个随机路径的效果,首先定义几组轨迹函数:
函数moveForward()分别对飞机移动的四个方向Up、Down、Left、Right的坐标点进行处理,因此当对应键盘事件触发之后,就可以实现飞机在界面中移动的视觉效果。另外选择条件switch中还有一个条件 Track,用于规定敌机移动的随机路线,四个索引值对应四组路径轨迹:索引1对应双曲线,索引2对应抛物线,索引3对应圆形路径。当路径是曲线是可以定义曲线的焦点以方便控制曲线的轨迹范围。
为了使飞机在移动过程中显示的连贯性,同样通过计时器处理飞机的移动刷新,假设刷新时间设定为20ms一次,人眼视觉暂留时间约为0.05至0.2秒,因此,在20ms的时间中我们看上去的飞机就是流畅的在移动。游戏运行时界面上飞机移动的动态感如图1所示。
为了实现子弹的连发效果,使用了容器类QList,QList
同類型的多个对象的控制,一般通过链表进行控制,其存储方式与QList一致,在未使用容器控制的情况下,可以采用链表方式控制。链表(link list)就一些包含数据的独立的数据结构的集合,链表的实现方法主要使用结构和指针。其每个节点通过链或指针联系在一起。通常通过指针访问链表中的节点,一次程序一般通过指针来遍历链表。[3]
4 爆炸效果
主要通过索引moveingActIndex的递增,不断找出索引值对应的爆炸效果区域,不断刷新产生爆炸效果动画。
5 结束语
本文主要阐述类Plane安排游戏的角色,角色分为我方飞机和敌方飞机。用类Plane的不同函数分别设计了角色、位置和速度、移动效果以及爆炸效果,实现了游戏角色安排。
参考文献:
[1] 成荣荣,崔志斌, 杨克香. 基于QT的飞行射击游戏的实现[J]. 电脑知识与技术, 2017, 13(32):89-91
[2] 杨盛毅, 文方, 师娇. 实时数据曲线绘制的Qt编程实现[J]. 四川大学学报:自然科学版, 2008, 45(2):61-64.
[3] 谭浩强. C++程序设计[M]. 北京: 清华大学出版社, 2006.