Pygame设置屏幕大小的边界

时间:2015-05-26 21:49:45

标签: python pygame

我的屏幕设置使用:

DisplayHeight = 0
DisplayWidth = 0

pygame.display.set_mode = ((DisplayWidth, DisplayHeight), pygame.FULLSCREEN)

然后我尝试使用:

设置边界
if imgx <= DisplayWidth:
    Right = False
    Left = False

if imgy <= DisplayHeight:
    Up = False
    Down = False

这导致两个问题。 1.当我点击屏幕左侧或顶部时,图像才会停止。任何其他方式,它只是继续前进。

  1. 当图像停留在斑点时它会停在那里,如果有人开始按下按钮将它们朝那个方向移动它仍然会那样,除了你必须继续捣碎按钮你可以去屏幕那样。
  2. 我试过找到这个问题的答案,但我找不到任何相关信息。

3 个答案:

答案 0 :(得分:1)

您的变量DisplayWidth0都设置为if imgx <= DisplayWidth: Right = False Left = False if imgy <= DisplayHeight: Up = False Down = False ,因此您的代码

imgx

只检查imgy0是否小于pygame.display.set_mode = ((DisplayWidth, DisplayHeight), pygame.FULLSCREEN)

此外,而不是

pygame.display.set_mode((DisplayWidth, DisplayHeight), pygame.FULLSCREEN)
你可能想用

set_mode

因为clamp(Rect) -> Rect Returns是一个函数。

如果您想阻止移动物体离开屏幕,请考虑使用clampclamp_ip功能:

  

<强>夹具()
  将矩形移到另一个中   your_rect.clamp_ip(the_rect_of_the_screen)
  一个新的矩形,它被移动到完全在参数内   矩形。如果矩形太大而无法放入内部,则它居中   在参数Rect内部,但其大小不会改变。

这样的单行
your_rect

足以确保the_rect_of_the_screen永不离开{{1}}。

答案 1 :(得分:-1)

DisplayHeight = 0
DisplayWidth = 0

pygame.display.set_mode = ((DisplayWidth, DisplayHeight), pygame.FULLSCRE

在任何版本的python

中,一个总能为我工作

答案 2 :(得分:-1)

以下是一些可能为您的问题提供帮助的代码。您似乎没有对图像的运动进行适当限制。一定要有0 <= current_pos + image_dimension +/- increment <= display_size等约束。

DisplayHeight = 500
DisplayWidth = 800

vertical_increment = 10
horizontal_increment = 10

img = pygame.image.load('image/path')
imgx = 0
imgy = 0
imgw = image.get_width()
imgh = image.get_height()

while 1:
  key = function to get key
  if key == 'up':
    if imgy - vertical_increment >= 0:
      move_image('up')
  elif key == 'down':
    if imgy + imgh + vertical_increment <= DisplayHeight:
      move_image('down')
  #corresponding code for horizontal

一般情况下,当您发布问题时,请提供更详细的源代码,以便其他用户可以准确有效地回答您的问题,并尽可能少地猜测。

我希望这会有所帮助。