我有一些pygame的麻烦

时间:2013-07-23 15:29:08

标签: pygame

我希望“ball.giff”像这样转过来。

--->            -->
                   |
^                  v
|             

                   |
^                   v
|     <--      <- -

和我的代码:

import sys
import pygame

size = width, height = 600, 600
screen = pygame.display.set_mode(size)
pygame.display.set_caption("wedding")

brade = pygame.image.load("ball.gif")
brade_rect = brade.get_rect()
speed = [10, 0]
black = 0, 0, 0
while True:
    for event in pygame.event.get():
        if event.type==pygame.QUIT:
            pygame.quit()
            sys.exit()

    brade_rect.move_ip(speed)
    if brade_rect.right>width:
        speed = [0,10]
    if brade_rect.bottom>height:
        speed = [-10, 0]
    if brade_rect.left<0:
        speed = [0, -10]
    if brade_rect.top<0:
        speed = [10, 0]

    pygame.time.delay(100)
    screen.fill(black)
    screen.blit(brade, brade_rect)
    pygame.display.flip()

但是有问题。经过一次巡回赛,球永远向右走。它没有下降? 我错过了,你能帮忙吗?

1 个答案:

答案 0 :(得分:1)

在第一个回合结束时,brad_rect.top变为-10。您将速度更改为[10, 0],但将brad_rect.top保持为-10,因此最后一个仍然可以激活并删除任何速度。你应该在窗口中放回brade_rect

if brade_rect.right>width:
    speed = [0,10]
    brade_rect.right=width
if brade_rect.bottom>height:
    speed = [-10, 0]
    brade_rect.bottom=height
if brade_rect.left<0:
    speed = [0, -10]
    brade_rect.left=0
if brade_rect.top<0:
    speed = [10, 0]
    brade_rect.top=0

顺便说一下,你应该考虑在这里放一些else