QT飛機大戰三 子彈類

2021-10-19 22:52:17 字數 2048 閱讀 2408

前文鏈結如下所示

qt飛機大戰一(遊戲場景配置)

qt飛機大戰二(飛機類)

從飛機的位置射出來

那麼子彈這個類肯定有自己的位置座標

肯定有自己的資源

既然子彈需要"射"出去,也需要發射的速率,也就是更新一次幾畫素

然後子彈需要有乙個布林變數:閒置狀態

設想一下,假如需要乙個子彈就new

newne

w乙個發射出去,那麼記憶體開銷是不敢想象的

所以我們給飛機類乙個"彈夾",就是乙個型別是子彈類的陣列

飛機每次發射子彈就從彈夾裡找乙個閒置的子彈發射出去

然後子彈飛出螢幕後,就又恢復到閒置狀態

這樣,在主場景中也只需要繪製那些非閒置的子彈即可

子彈需要有乙個函式來修改當前位置,飛出螢幕就修改閒置狀態

所以,發射子彈的原理只是把子彈狀態改為非閒置狀態而已

bullet.h

#ifndef bullet_h

#define bullet_h

#include

#include

class

bullet

;#endif

// bullet_h

bullet.cpp

#include

"bullet.h"

bullet::

bullet()

void bullet::

updateposition()

然後再回過頭來看一下主場景中的設定,是如何利用飛機和子彈的

mainscene.h

#ifndef mainscene_h

#define mainscene_h

#include

#include

#include

#include

#include

#include

#include

namespace ui

class

mainscene

:public qwidget

;#endif

// mainscene_h

mainscene.cpp

#include

"mainscene.h"

#include

"ui_mainscene.h"

#include

#include

#include

#include

#include

mainscene::

mainscene

(qwidget *parent)

:qwidget

(parent),ui

(new ui::mainscene)

mainscene::

~mainscene()

void mainscene::

initscene()

void mainscene::

playgame()

);//啟動定時器

timer.

start()

;}void mainscene::

paintevent

(qpaintevent *)}

void mainscene::

updateposition()

}void mainscene::

mousemoveevent

(qmouseevent *event)

pygame飛機大戰關於子彈的設計(二)

遊戲後期,敵機數量較多,若我方死亡後子彈直接降為初始1級子彈,容易造成玩家 心理陰影 影響遊戲體驗!所以,增加復活補給和子彈儲存機制 復活補給 即我方飛機死亡,重新復活時,立即生成補給包以提高子彈等級,增強作戰能力 if me destroy index 0 me.reset bullet supp...

QT案例 飛機大戰(四)

步驟如下 建立heroplane類以及生成對應的檔案 和建立地圖的步驟一樣,這裡就不在詳細截圖了 建立好後生成heroplane.h 和 heroplane.cpp兩個檔案 在heroplane.h中新增 class heroplane 這裡飛機有個發射子彈的成員函式,由於我們還沒有做子彈 因此這個...

QT飛機大戰六 敵機血條的新增以及特殊子彈道具

比如這個血條太生硬了,這個子彈道具怎麼真的就和子彈一樣?不過沒事,功能對了就行 首先考慮這個血條怎麼搞。那麼首先我們的敵機需要有個屬性sum hp 總血量 初始化隨機乙個值 每次判斷敵機和子彈相撞,更新敵機的now hp 當前血量 那麼,我們就有乙個比例就是now hps um h p frac s...