前文鏈結如下所示
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...