このコードをどのように機能させますか?このコードをファイルに保存したディレクトリに保存されているイメージの名前をpyglet
インストールして変更するだけです。"fireball.png"
import pyglet
class Fireball(pyglet.sprite.Sprite):
def __init__(self, batch):
pyglet.sprite.Sprite.__init__(self, pyglet.resource.image("fireball.png"))
# replace "fireball.png" with your own image stored in dir of fireball.py
self.x = 10 # Initial x coordinate of the fireball
self.y = 10 # Initial y coordinate of the fireball
class Game(pyglet.window.Window):
def __init__(self):
pyglet.window.Window.__init__(self, width = 315, height = 220)
self.batch_draw = pyglet.graphics.Batch()
self.fps_display = pyglet.clock.ClockDisplay()
self.fireball = []
def on_draw(self):
self.clear()
self.fps_display.draw()
self.batch_draw.draw()
if len(self.fireball) != 0: # Allow drawing of multiple
for i in range(len(self.fireball)): # fireballs on screen
self.fireball[i].draw() # at the same time
def on_key_press(self, symbol, modifiers):
if symbol == pyglet.window.key.A:
self.fireball.append(Fireball(batch = self.batch_draw))
pyglet.clock.schedule_interval(func = self.update, interval = 1/60.)
print "The 'A' key was pressed"
def update(self, interval):
for i in range(len(self.fireball)):
self.fireball[i].x += 1 # why do fireballs get faster and faster?
if __name__ == "__main__":
window = Game()
pyglet.app.run()
このコードは、黒い背景画面を作成します。この画面では、キーを押すたびにfpsが表示され、位置(10、10)からx方向に沿って火の玉が発射されA
ます。
発射する火の玉が多いほど、すべての火の玉が速く進み始めることに気付くでしょう。
質問:
Aを押すたびに火の玉がどんどん速くなるのはなぜですか?
Aを押すたびに火の玉が加速するのを防ぐにはどうすればよいですか?