2016-04-22 55 views
-1

我已经开始在pygame中使用python制作游戏3.2.2 我有一个新游戏按钮的标题屏幕,当按下空间背景时会出现一个UFO,您可以使用方向键控制 但我的UFO可以在任何方向离开屏幕,我想让它停在屏幕的边框上。而且我希望它能够在未来的每一个屏幕上做到这一点,而这些屏幕将会在游戏后期出现。停止我的控制对象在pygame中关闭屏幕

我不知道这样做的原则......以及它应该在代码中的位置。我读了一些关于矩形的东西。我需要定义一个矩形,然后拿到UFO来检测这个矩形并停止当它检测到

任何帮助赞赏

即时通讯相当不错的工作的东西了矩形,因此,在正确的方向推进会赞赏。

谢谢

+0

问题寻求帮助调试(“?为什么不是这个代码工作”)必须包括所期望的行为,一个具体问题或错误,在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者无益。请参阅:[如何创建最小,完整和可验证示例。](http://stackoverflow.com/help/mcve) – rsjaffe

回答

0

你需要的是碰撞检测。这里是一些Python样品AABB碰撞检测代码:

def collide(A_top, A_bot, A_left, A_right, B_top, B_bot, B_left, B_right): 
    if B_left < A_right and B_top < A_bot and B_right > A_left and B_bot > A_top: 
     return True #IS colliding 
    return False #IS NOT colliding 

现在只是在屏幕上,或者其他任何东西,正好是在屏幕上的边界冲突。

其他的解决办法:

只是检查像这样:

if ufo.x < 0 or ufo.y < 0 or ufo.x + ufo.width > screen.width or ufo.y + ufo.height > screen.height: 
    #Do collide code