我正在尝试创建一个小而简单的模拟,使流星出现在屏幕中间并移开......直到用户按下一个键。按下该键时,路径将动态更正为新路径。
我尝试了两种不同的方法,首先是KEYDOWN,然后是pygame.key.get_pressed()函数,但在这两种情况下,在我释放密钥后,图像“Meteor”再次下降到其原始路径。
我希望有人能指出我做错了什么。
到目前为止我的代码:
import pygame,sys
from pygame.locals import *
from colors import *
import random
FPS = 30
fpsClock = pygame.time.Clock()
pygame.init()
X_Display = 400
Y_Display = 400
DisplaySurf = pygame.display.set_mode((X_Display, Y_Display))
DisplaySurf.fill(Silver)
pygame.display.set_caption("Meteor")
X_Real_Max = X_Display/2
Y_Real_Max = Y_Display/2
X_Center = 0
Y_Center = 0
XMeteor = 40
YMeteor = 20
XCenterMeteor = 0
YCenterMeteor = 0
XPosMeteor = XCenterMeteor + (200 - (XMeteor/2))
YPosMeteor = YCenterMeteor + (200 - (YMeteor/2))
imgMeteor = pygame.image.load("Desktop\imgMeteor.png")
VisEffect = 1.05
while True:
XMeteor *= VisEffect
YMeteor *= VisEffect
XCenterMeteor *= VisEffect
YCenterMeteor *= VisEffect
XPosMeteor = XCenterMeteor + (200 - (XMeteor/2))
YPosMeteor = YCenterMeteor + (200 - (YMeteor/2))
#Pressed = pygame.key.get_pressed()
#if Pressed[pygame.K_w]:
#YPosMeteor -= 10
if XMeteor > 150:
XMeteor = 40
YMeteor = 20
XCenterMeteor = random.randrange(-100, 100)
YCenterMeteor = random.randrange(-100, 100)
XPosMeteor = XCenterMeteor + (200 - (XMeteor/2))
YPosMeteor = YCenterMeteor + (200 - (YMeteor/2))
Meteor = pygame.transform.scale(imgMeteor, (int(XMeteor),int(YMeteor)))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
#if event.type == KEYDOWN:
#if event.key == K_w:
#YPosMeteor -= 50
#elif event.type == KEYUP:
#YPosMeteor = YPosMeteor
DisplaySurf.blit(Meteor, (XPosMeteor, YPosMeteor))
pygame.display.update()
fpsClock.tick(FPS)
DisplaySurf.fill(Silver)
答案 0 :(得分:0)
您正在更新错误的变量。 Group
每次都在循环中被破坏,所以当你改变那个变量时就没有持久的效果了。您想要更改YPosMeteor
或YCenterMeteor
。