2016-09-22 3 views
0

私はPythonの初心者です。私はpygameモジュールを使ってイメージをシフトしようとしています。しかし、私はpythonでイメージの位置をシフトすることができません。私が間違っていることを理解するのを助けることができますか?Pygameで画像を移動できません

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

image = pygame.image.load("ball.jpg") 
image = pygame.transform.scale(image, (100, 100)) 

imgrect = image.get_rect() 

Canvas = pygame.display.set_mode((500, 500)) 
pygame.display.set_caption('Text Input') 

imgrect.left = 200 
imgrect.top = 200 

Canvas.blit(image, imgrect) 
pygame.display.update() 

while True:          
    for event in pygame.event.get(): 

     if event.type == KEYDOWN :    
      if event.key == K_ESCAPE:   
       pygame.quit()     
       sys.exit()  
      if event.key == K_UP: 
       imgrect.top += 1 
      if event.key == K_DOWN: 
       imgrect.top -= 1 
+0

'Canvas'ではなく、変数に小文字の名前(' canvas'など)を使用します。 2つ目はクラスに使用され、2つを混ぜると他のプログラマーを混乱させる可能性があります。 –

答えて

1

基本的なゲームループは、イベントの処理、更新、描画の3つを行う必要があります。私は矩形の位置を更新するロジックを見ていますが、新しい位置にイメージを再描画しません。

シーンを描画するために、ゲームループの下部に線を追加しました。

while True: 
    # handle events 
    # update logic 

    # draw 
    Canvas.fill((0, 0, 0)) # Clears the previous image. 
    Canvas.blit(image, imgrect) # Draws the image at the new position. 
    pygame.display.update() # Updates the screen. 
+0

また、背景が黒以外の色である場合、 'Canvas.fill((R、G、B))のR、G、B値を現在の背景色に合わせて変更するだけです。あるいは、背景画像がある場合は、 'Canvas.fill((0、0、0))'を 'Canvas.blit(bg_image、(0、0))'に置き換えます。 –

関連する問題