2015-05-26 229 views
1

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. 当图像停在点时,它会停下来,如果有人开始按下按钮将它们朝向那个方向,它仍然会这样,除非你必须只需保持按钮混合,你就可以以这种方式离开屏幕。

我试过找到这个问题的答案,但是我找不到任何信息。

+0

请发布一些额外的信息,例如与控制和移动图片相关的源代码。您提供的代码与上下文无关,并未提供该问题的清晰画面。 – bcdan

回答

-1

DisplayHeight = 0 
DisplayWidth = 0 

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

一个总是在Python

-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 

一般情况下,当您发布的问题,请更详细的源代码,这样其他用户可能能够准确,高效地回答你的问题,并想尽可能少。

我希望这会有所帮助。

1

你的变量DisplayHeightDisplayWidth都设置为0,使你的代码

if imgx <= DisplayWidth: 
    Right = False 
    Left = False 

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

只是检查是否imgximgy0小。


另外,代替

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

你可能想用

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

因为set_mode是一个函数。


如果你想阻止一个移动物体离开画面,可以考虑使用clampclamp_ip功能:

夹()
移动内部另一
矩形clamp(Rect) -> Rect Returns
一个新的矩形被移动到完全在参数内Rect。如果矩形太大而无法放入内部,它会在参数Rect中居中 ,但其大小不会更改。

所以像

your_rect.clamp_ip(the_rect_of_the_screen) 

一行就足以确保your_rect从未离开the_rect_of_the_screen

+0

那么,如何在屏幕上播放与我自己不同的尺寸? –