第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

去除帶有 kivy 條件的物體粒子

去除帶有 kivy 條件的物體粒子

慕娘9325324 2023-07-27 10:36:48
我想要的是兩件事:計算屏幕上敵人的數(shù)量。并通過一個動作將所有敵人從屏幕上移除。第二個選擇是讓敵人隨機射擊class Enemy(Particle):    active = False    tex_name = 'ufo'    v = 0    def reset(self, created=False):        self.active = False        self.x = -100        self.y = -100        self.v = 0    def advance(self, nap):        if self.active:            if self.check_hit():                self.reset()                return            self.x -= 200 * nap            if self.x < -50:                self.reset()                return            self.y += self.v * nap            if self.y <= 0:                self.v = abs(self.v)            elif self.y >= self.parent.height:                self.v = -abs(self.v)        elif self.parent.spawn_delay <= 0:            self.active = True            self.x = self.parent.width + 50            self.y = self.parent.height * random()            self.v = randint(-100, 100)            self.parent.spawn_delay += 1    def check_hit(self):        if math.hypot(self.parent.player_x - self.x,                      self.parent.player_y - self.y) < 60:            return True        for b in self.parent.bullets:            if not b.active:                continue            if math.hypot(b.x - self.x, b.y - self.y) < 30:                b.reset()                return True我想要的是兩件事:計算屏幕上敵人的數(shù)量。并通過一個動作將所有敵人從屏幕上移除。第二個選擇是讓敵人隨機射擊
查看完整描述

1 回答

?
大話西游666

TA貢獻(xiàn)1817條經(jīng)驗 獲得超14個贊

您可以通過修改類來完成前兩個問題PSWidget。通過向類添加兩個屬性enemy_count和:killall


class PSWidget(Widget):

    indices = []

    vertices = []

    particles = []

    enemy_count = 0

    killall = False

并在方法中使用這些屬性update_glsl():


def update_glsl(self, nap):

    self.enemy_count = 0  # initialize enemy count


    for p in self.particles:

        if isinstance(p, Enemy) and p.active:

            if self.killall:

                p.reset()    # kill this enemy

            else:

                self.enemy_count += 1    # increment enemy count

        p.advance(nap)

        p.update()


    self.canvas.clear()


    with self.canvas:

        Mesh(fmt=self.vfmt, mode='triangles',

             indices=self.indices, vertices=self.vertices,

             texture=self.texture)


    # reset killall

    self.killall = False

因此,任何時候你想要統(tǒng)計活躍敵人的數(shù)量,只需使用實例enemy_count的屬性即可PSWidget。每當(dāng)你想殺死所有活躍的敵人時,只需設(shè)置實例killall的屬性即可PSWidget。


至于你的第三個問題,請向我們展示你對此進(jìn)行編碼的嘗試。


如果您使用的是我在另一個問題中給出的答案,我建議使用該on_enter()方法來啟動游戲更新,那么您可以使用on_leave()它來停止更新。每次進(jìn)入時游戲動作都會更快,MainScreen因為每次進(jìn)入都會安排更多更新。MainScreen這是處理該問題的修改:


class MainScreen(Screen):

    started = BooleanProperty(False)


    def on_enter(self, *args):

        if not self.started:

            self.ids.game.initialize()

            self.started = True

        self.update_event = Clock.schedule_interval(self.ids.game.update_glsl, 1.0/60.0)


    def on_leave(self, *args):

        if self.update_event is not None:

            self.update_event.cancel()


查看完整回答
反對 回復(fù) 2023-07-27
  • 1 回答
  • 0 關(guān)注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號