1 回答

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()
添加回答
舉報