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

2021-10-20 07:34:11 字數 1772 閱讀 2526

比如這個血條太生硬了,這個子彈道具怎麼真的就和子彈一樣??

不過沒事,功能對了就行

首先考慮這個血條怎麼搞。

那麼首先我們的敵機需要有個屬性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機三種。然後給予這三種敵機不...