如何制作精灵正确的路径?

时间:2015-05-11 22:01:09

标签: python python-2.7 pygame blit

我正在尝试创建一个小而简单的模拟,使流星出现在屏幕中间并移开......直到用户按下一个键。按下该键时,路径将动态更正为新路径。

我尝试了两种不同的方法,首先是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)

1 个答案:

答案 0 :(得分:0)

您正在更新错误的变量。 Group每次都在循环中被破坏,所以当你改变那个变量时就没有持久的效果了。您想要更改YPosMeteorYCenterMeteor