メインプログラム:
player = Player("player.png",[10,650])
players = pygame.sprite.Group()
players.add(player)
while True:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_RIGHT:
player.goright()
if event.key == K_LEFT:
player.goleft()
if event.type == KEYUP:
if event.key == K_RIGHT:
player.cangoright = False
if event.key == K_LEFT:
player.cangoleft = False
players.update()
players.draw(SCREEN)
pygame.display.update()
clock.tick(FPS)
関連するスプライトの機能:
def update(self):
if self.cangoright:
self.rect.left += self.speed
if self.cangoleft:
self.rect.left -= self.speed
def goright(self):
if self.rect.right <= 1024:
self.cangoright = True
else:
self.cangoright = False
def goleft(self):
if self.rect.left >= 0:
self.cangoleft = True
else:
self.cangoleft = False
問題は、「cangoright」フラグと「cangoleft」フラグが正しく機能していないように見えることです。スプライトが画面の端 (左が 0、右が 1024) を超えた場合、フラグを false に設定する必要があるため、更新関数の ifs は false を返す必要がありますが、そうはなりません。