比如這個血條太生硬了,這個子彈道具怎麼真的就和子彈一樣??
不過沒事,功能對了就行
首先考慮這個血條怎麼搞。
那麼首先我們的敵機需要有個屬性sum_hp
(總血量),初始化隨機乙個值
每次判斷敵機和子彈相撞,更新敵機的now_hp
(當前血量)
那麼,我們就有乙個比例就是now
_hps
um_h
p\frac
sum_hp
now_
hp,也就是血條的紅色部分佔幾分之幾
所以我們每次就從敵機的位置處往右繪製乙個比例的紅色矩形,也就是這個**
qbrush red_brush
(qcolor
("#f20900"))
;//把刷子設定為紅色
painter.
setbrush
(red_brush)
;//應用刷子
float rate =
1.0*enemys[i]
.now_hp/enemys[i]
.sum_hp;
//計算比例
painter.
drawrect
(enemys[i]
.m_x,enemys[i]
.m_y,rate*enemys[i]
.img_enemy.
width()
,enemys[i]
.img_enemy.
height()
*0.2);
//繪製矩形
大概就是這個思路,我這麼畫的血條可能有點醜,懂意思就行
然後考慮這個特殊子彈道具怎麼弄
其實有點千篇一律了,新建乙個類叫bullettool
這個特殊子彈道具需要有位置,矩形框,…這些都之前的類一樣
我們這裡還需要有威力,特殊子彈威力肯定要大一點嘛…
然後主函式中就一樣了,每次定時器判斷子彈和敵機相撞的時候
順便判斷一下特殊子彈道具是否和英雄相遇
如果相遇,那就遍歷英雄的所有彈夾,把資源和威力去換一下
直接看**吧,比較簡單這個
bullettool.h
#ifndef bullettool_h
#define bullettool_h
#include
#include
class
bullettool
;#endif
// bullettool_h
bullettool.cpp
#include
"bullettool.h"
#include
#include
#include
bullettool::
bullettool()
void bullettool::
init
(qstring w)
void bullettool::
new_speed()
//隨機乙個速度方向
void bullettool::
updatepostion()
python飛機大戰 敵機出場
使用 定時器 新增敵機 執行 備課 觀察 敵機的 出現規律 遊戲啟動後,每隔 1 秒 會 出現一架敵機 每架敵機 向螢幕下方飛行,飛行 速度各不相同 每架敵機出現的 水平位置 也不盡相同 當敵機 從螢幕下方飛出,不會再飛回到螢幕中 set timer eventid,milliseconds non...
QT案例 飛機大戰(四)
步驟如下 建立heroplane類以及生成對應的檔案 和建立地圖的步驟一樣,這裡就不在詳細截圖了 建立好後生成heroplane.h 和 heroplane.cpp兩個檔案 在heroplane.h中新增 class heroplane 這裡飛機有個發射子彈的成員函式,由於我們還沒有做子彈 因此這個...
Java學習之路 簡單的飛機大戰遊戲(敵機下落篇)
在實現這個遊戲之前,我們首先需要知道專案可能要用到哪些知識點 重繪,執行緒,雙緩衝,資料結構的應用 差不多是這大概有這些,如果不夠的話我們再加。首先,我們應該實現敵機下落,在這裡大概思路和利用執行緒使小球下落差不多。不同的是,我在這裡用到了三種敵機,分別為小 大 boss機三種。然後給予這三種敵機不...