使用clamp_ip()在窗口内保留一个精灵

时间:2014-06-10 12:50:08

标签: python window pygame sprite

我尝试使用clamp_ip()将我的精灵保留在600 x 315的屏幕上,但它似乎无法正常工作。

ship = pygame.image.load("ship.png")
ship_top = screen.get_width() - ship.get_width()
ship_left = screen.get_height()/2 - ship.get_height()/2

while True:
    clock.tick(60)
    keys = pygame.key.get_pressed()
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    if keys[pygame.K_LEFT]:
        ship_left = ship_left - 6
    elif keys[pygame.K_RIGHT]:
        ship_left = ship_left + 6

    screen.blit(back, (x,0))
    screen.blit(back2,(x-screenWidth,0))
    screen.blit(ship, (ship_top, ship_left))

    screen_rect = pygame.Rect((0, 0), (600, 315))

    def moveme(ship,ship_top,ship_left):
       ship.rect.move_ip((ship_top,ship_left))
       ship.rect.clamp_ip(screen_rect)

2 个答案:

答案 0 :(得分:0)

你永远不会打电话给moveme;您可以直接使用 unclamped 变量ship_left来代替使用矩形。

答案 1 :(得分:0)

要使用clamp_ip,您必须使用Rect

ship = pygame.image.load("ship.png")
ship_top = screen.get_width() - ship.get_width()
ship_left = screen.get_height()/2 - ship.get_height()/2
ship_r = ship.get_rect(top=ship_top, left=ship_left)

然后您可以在主循环中使用Rect方法:

if keys[pygame.K_LEFT]:
    ship_r.move_ip(-6, 0)
elif keys[pygame.K_RIGHT]:
    ship_r.move_ip(6, 0)

ship_r.clamp_ip(screen_rect)

screen.blit(back, (x,0))
screen.blit(back2,(x-screenWidth,0))
screen.blit(ship, ship_r)