戻ってきました... ゲームに多くの時間を費やした後、2 つの質問に出くわしました。どちらもスプライトとテキストの表示に関するものです。1 つ目は、テキストの点滅です。これは多くの人に起こったことだと思いますが、グーグルで調べても、何が原因なのかについての直接的な答えを見つけることができませんでした. 画面にブリットしたときにテキストが点滅する理由を誰かが説明してくれたら、大歓迎です。
次の質問は、スプライトに関することを除いて、最初の質問とほぼ同じです。スペースバーが押されたときにプレーヤースプライトから弾丸を発射するように Python に指示するコードをゲームに追加しました。実行するとエラーは発生せず、弾丸が画面に表示されてすぐに消えます。これら 2 つのバグは相互に直接関連していると推測していますが、何が原因なのかはわかりません。
私よりも pygame について詳しい方がいらっしゃいましたら、問題を解決する方法を判断できるように、何が原因なのか説明していただけないでしょうか。
これが私のバンカー(プレーヤー)と弾丸クラスです:
class Bunker(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
bunker = pygame.image.load(bunk).convert_alpha()
self.image = bunker
self.rect = self.image.get_rect()
bunker_x = 160
bunker_y = 0
self.firecountdown = 0
def update(self, milli):
self.pos = self.rect
if (self.firecountdown > 0):
self.firecountdown -= milli
def collide(self, EnemyTank):
return pygame.sprite.collide_rect(self.rect, EnemyTank.rect)
def fire(self, bullet):
if (self.firecountdown <=0):
bullet.x = 165
bullet.y = 0
bullet.fired = True
bullet.speed = 100
self.firecountdown = 500
class Bullet(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init__(self)
bullet = pygame.image.load(bull).convert_alpha()
self.image = bullet
self.rect = self.image.get_rect()
self.x = 0
self.y = 0
self.speed = 0
self.forwardx = 1
self.forwardy = 0
self.fired = False
def update(self):
self.pos = self.rect
self.x += self.forwardx * self.speed
self.y += self.forwardy * self.speed
if self.x > 640:
self.fired = False
そして私のメインループのセクション:
font = pygame.font.SysFont('Courier', 76)
text = font.render('Game Over', True, (0,0,0))
if e_tank_x>640:
screen.blit(text, (100,100))
if bullet.fired == True:
screen.blit(bullet.image, (bullet.x, bullet.y))