Pygame边界不起作用

时间:2016-04-26 22:29:23

标签: python pygame

我是一个中学的孩子,希望在我长大后成为一名程序员。我要去暑期学校编写课程并学习python和pygame。我已经知道了足够的python但是我的手已经弄湿了pygame.I正在添加尝试为我的游戏添加边界,但它能够阻止屏幕左侧和顶部这里是我的代码:

  import pygame,sys
from pygame.locals import *
pygame.init()

WIDTH = 400
HEIGHT = 400

pg = "player.gif"
bg = "y.gif"
screen=pygame.display.set_mode((WIDTH,HEIGHT))
background = pygame.image.load(bg)
player = pygame.image.load(pg)

while True:
    for event in pygame.event.get():
        if event.type == QUIT:
         pygame.quit()
        sys.exit
        x,y = pygame.mouse.get_pos()
        screen.blit(background,[0,0])
        screen.blit(player,(x,y))
        pygame.display.update()
        if x <= WIDTH:
         x = 0
        if y <= HEIGHT:
         y = 0

1 个答案:

答案 0 :(得分:1)

if x <= WIDTH:
  x = 0
if y <= HEIGHT:
  y = 0

这真的是你想要做的吗?只要鼠标位于边界内,就将xy设置为零?或者,您是否希望将xy限制为仅分别在0到WIDTHHEIGHT范围内?

x = min(max(x, 0), WIDTH)
y = min(max(y, 0), HEIGHT)

此外,请注意您的播放器精灵有自己的宽度和高度。 x,y坐标表示精灵左上角的位置。如果你想限制精灵的位置,使整个事物总是在屏幕上,你首先需要得到精灵的大小

spriteWidth, spriteHeight = player.get_rect().size

然后将该大小计入边界计算

x = min(max(x, 0), WIDTH - spriteWidth)
y = min(max(y, 0), HEIGHT - spriteHeight)

此外,您需要确保在调用screen.blit(player, (x, y))之前执行此操作,否则将使用原始的无界坐标绘制精灵。