这是我的代码
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()
这只是一个简单的测试,看看我是否可以移动一个矩形。除了我用斜体写的代码之外,一切似乎都有效。
答案 0 :(得分:1)
我对PyGame一无所知,但看起来while
循环永远不会退出,并且缩进使得从第二个rect.move(x,y)
开始的所有内容都在循环之外,因此无法访问。从那里缩进所有内容,以便它在while循环中,并且可以这样做。
答案 1 :(得分:0)
问题在于.flip()方法。每个blit都需要调用一次并更新,因此它会在屏幕上显示更改。把它们放在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.