前提・実現したいこと
ボールが画面下に衝突したときにライフを減らしたい。
Class App内で実装したいのですがやり方がいまいち分かりません。
該当のソースコード
import random
import pyxel
SCREEN_WIDTH = 256
SCREEN_HEIGHT = 256
BUBBLE_MAX_SPEED = 5
BUBBLE_INITIAL_COUNT = 1
class Vec2:
def init(self, x, y):
self.x = x
self.y = y
class Bubble:
def init(self):
self.r = random.uniform(3, 10)
self.pos = Vec2( random.uniform(self.r, SCREEN_WIDTH - self.r), random.uniform(self.r, SCREEN_HEIGHT - self.r), ) self.vel = Vec2( random.uniform(-BUBBLE_MAX_SPEED, BUBBLE_MAX_SPEED), random.uniform(-BUBBLE_MAX_SPEED, BUBBLE_MAX_SPEED), ) self.color = random.randint(1, 15) def update(self): self.pos.x += self.vel.x self.pos.y += self.vel.y if self.vel.x < 0 and self.pos.x < self.r: self.vel.x *= -1 pyxel.playm(0) if self.vel.x > 0 and self.pos.x > SCREEN_WIDTH - self.r: self.vel.x *= -1 pyxel.playm(0) if self.vel.y < 0 and self.pos.y < self.r: self.vel.y *= -1 pyxel.playm(0) if self.vel.y > 0 and self.pos.y > SCREEN_HEIGHT - self.r: self.vel.y *= -1 pyxel.playm(0)
class App:
def init(self): # はじめに一回しか通らない
pyxel.init(SCREEN_WIDTH, SCREEN_HEIGHT, caption="Pyxel block")
pyxel.load("assets/sepack-01edit.pyxres")
self.Life = 3
self.bubbles = [Bubble() for _ in range(BUBBLE_INITIAL_COUNT)]
pyxel.run(self.update, self.draw)
def playse(self, munumber): pyxel.playm(munumber) def update(self): if pyxel.btnp(pyxel.KEY_Q): pyxel.quit() bubble_count = len(self.bubbles) for i in range(bubble_count - 1, -1, -1): bi = self.bubbles[i] bi.update() def draw(self): pyxel.cls(0) pyxel.text(10, 10, "LIFE = " + str(self.Life), 7) for bubble in self.bubbles: pyxel.circ(bubble.pos.x, bubble.pos.y, bubble.r, bubble.color)
App()
試したこと
この状態で実行するとライフの表示だけはされる。
補足情報(FW/ツールのバージョンなど)
Python3.8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。