2016-12-29 6 views
0

キーボードで制御されるメソッドを使用して、Pygameの画面上で単一の画像を移動しようとしていますが、元の画像を移動する代わりに、メインループに入る前にイメージが作成されている場合、なぜこのようなことが起こりますか?1つだけを動かす代わりに複数のオブジェクトを作成するPygame

import pygame, sys 
from pygame.locals import * 
pygame.init() 

FPS = 30 
fpsClock = pygame.time.Clock() 



DISPLAYSURF = pygame.display.set_mode((600, 500), 0, 32) 
pygame.display.set_caption('Animation') 

posx = 10 
posy = 10 

class Hero(): 
    def __init__(self): 
     self.x = posx 
     self.y = posy 

    def appearance(self): 
     return pygame.image.load('C:\\Users\\admin\\Desktop\\right.png') 

    def move_right(self): 
     self.x += 25 
     return self.x 

    def move_left(self): 
     self.x -= 25 
     return self.x 

    def move_up(self): 
     self.y -= 25 
     return self.y 

    def move_down(self): 
     self.y += 25 
     return self.y 

new_hero = Hero() #create a Hero 
item = new_hero.appearance() #create one reference 



while True: 

    for event in pygame.event.get(): 
     if event.type == QUIT: 
      pygame.quit() 
      sys.exit() 
     elif event.type == pygame.KEYDOWN: 

      if event.key == pygame.K_LEFT: 
       posx = new_hero.move_left() 

      elif event.key == pygame.K_RIGHT: 
       posx = new_hero.move_right() 

      elif event.key == pygame.K_UP: 
       posy = new_hero.move_up() 

      elif event.key == pygame.K_DOWN: 
       posy = new_hero.move_down() 

    DISPLAYSURF.blit(item, (posx, posy)) 



    pygame.display.update() 
    fpsClock.tick(FPS) 
+1

新しい要素を描画する前に、画面を消去する必要があります。すなわち、黒色 'DISPLAYSURF.fill((0,0,0))'または 'blit'を使って' DISPLAYSURF'で何かを削除してください。 – furas

+1

[simple template](https://github.com/furas/python- examples/blob/master/pygame/__ template __/1__simple__.py)を使用してコードを整理します。 – furas

答えて

0

あなたはすべての過去の画像を削除するには、コードに置くことを忘れていました:

は、ここに私のコードです。

これは、パイゲームプロジェクトの基本的なレイアウトです。更新後は常に(背景画像がない場合は)画面を白く塗ります。

white = 255, 255, 255 
while True: 
    DISPLAYSURF.fill(white) 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      quit() 
    pygame.display.update() 
関連する問題