0

これは私のコードです

    import pygame
    from pygame.locals import *
    import sys
    pygame.init()
    pygame.display.set_caption("*no current mission*")
    size = (1280, 750)
    screen = pygame.display.set_mode(size)
    clock = pygame.time.Clock()
    bg = pygame.image.load("bg1.png")
    guy = pygame.image.load("hero_stand.png")
    rect = guy.get_rect()
    x = 10
    y = 10
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
                if event.type == KEYDOWN:
                    _if event.key == K_RIGHT:
                        x += 5
                        rect.move(x,y)_
        rect.move(x,y) 
        screen.blit(bg,(0,0))
        screen.blit(guy, rect)
        pygame.display.flip()

長方形を移動できるかどうかを確認するための簡単なテストです。イタリック体で記載したコードを除いて、すべてが機能しているようです。

4

2 に答える 2

1

PyGameについては何も知りませんが、そのwhileループは決して終了しないようで、インデントは2番目rect.move(x,y)以降のすべてがループの外にあるため、到達できません。そこからすべてをインデントして、while ループに入るようにします。

于 2012-11-13T17:18:21.470 に答える
0

問題は .flip() メソッドにあります。ブリットと更新のたびに一度呼び出す必要があるため、変更が画面に表示されます。それらを While ループ内に配置すると、機能するはずです。基本的な pygame ループは次のようになります。

#capture user input and call functions responsible
delta = timer.tick()
#this takes into account the speed of the machine, so it moves the sprites indepented of speed
updateSprites(delta) #moves the sprites
drawSprites()#blits the sprites at their positions
screen.diplay.flip() #flips the screen to show changes.
于 2012-11-13T19:00:33.167 に答える