APP下载

基于QT的飞行射击游戏的角色安排

2018-01-08崔志斌成荣荣李珂

电脑知识与技术 2017年36期
关键词:链表指针飞机

崔志斌 成荣荣 李珂

摘要:文献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连续容器是一个“数组列表”,它存储了一个给定类型值的列表,而且这些值可以通过索引访问[2]。其中子弹在后面的Bullet类中实现。

同類型的多个对象的控制,一般通过链表进行控制,其存储方式与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.

猜你喜欢

链表指针飞机
飞机失踪
基于二进制链表的粗糙集属性约简
“拼座飞机”迎风飞扬
基于链表多分支路径树的云存储数据完整性验证机制
乘坐飞机
神奇飞机变变变
基于改进Hough变换和BP网络的指针仪表识别
链表方式集中器抄表的设计
ARM Cortex—MO/MO+单片机的指针变量替换方法