Python 不让角色移出窗口
我尝试使用这种代码:Python 不让角色移出窗口,python,pygame,Python,Pygame,我尝试使用这种代码: if circleX - 16 == 0: circleX = 16 elif circleY - 16 == 0: circleY = 16 elif circleY + 16 == 500: circleY = 484 elif circleX + 16 == 500: circleX = 484 elif circleY - 16 == 0 and circleX - 16 == 0: circleY = 16 circ
if circleX - 16 == 0:
circleX = 16
elif circleY - 16 == 0:
circleY = 16
elif circleY + 16 == 500:
circleY = 484
elif circleX + 16 == 500:
circleX = 484
elif circleY - 16 == 0 and circleX - 16 == 0:
circleY = 16
circleX = 16
elif circleY + 16 == 500 and circleX + 16 == 500:
circleX = 484
circleY = 484
elif circleY + 16 == 500 and circleX - 16 == 0:
circleY = 484
circleX = 16
elif circleY - 16 == 0 and circleX + 16 == 500:
circleX = 484
circleY = 16
但它似乎不起作用,我做错了什么?您可以避免对边界进行相同关系比较。我使用
=
来比较边界
我不知道您的代码和上下文,但我想,circleX
,circleY
已在其他方法中更改
如果将变量更改为circleX+=20
,则可以传递all If条件。或者,如果线程环境中的某些事件调用它太快,我们就不能信任circleX
的值
我建议进行以下比较:
如果circleX-16=500:#正确
circleX=484
elif circleY-16=500:#右下角
circleX=484
circleY=484
如果circleY+16>=500和circleX-16您可以避免对边界进行相同关系比较。我使用=
来比较边界
我不知道您的代码和上下文,但我想,circleX
,circleY
已在其他方法中更改
如果将变量更改为circleX+=20
,则可以传递all If条件。或者,如果线程环境中的某些事件调用它太快,我们就不能信任circleX
的值
我建议进行以下比较:
如果circleX-16=500:#正确
circleX=484
elif circleY-16=500:#右下角
circleX=484
circleY=484
elif circleY+16>=500和circleX-16我建议使用一个对象将a圆限制在以下窗口中的窗口边界内,该窗口是显示表面:
radius=16
clampRect=window.get_rect().充气(-radius*2,-radius*2)
circleX=最大值(clampRect.left,最小值(clampRect.right,circleX))
圆环=最大值(夹钳顶部,最小值(夹钳底部,圆环))
说明:
生成一个pygame.Rect
,其大小与显示关联。生成一个新的矩形,其大小由圆的直径更改,其中矩形仍以其当前中心为中心。
在下面的示例中,min
和max
用于在矩形定义的区域中夹紧圆的中心。我建议使用一个对象将圆限制在窗口的边界内,在下面的窗口
是显示面:
radius=16
clampRect=window.get_rect().充气(-radius*2,-radius*2)
circleX=最大值(clampRect.left,最小值(clampRect.right,circleX))
圆环=最大值(夹钳顶部,最小值(夹钳底部,圆环))
说明:
生成一个pygame.Rect
,其大小与显示关联。生成一个新的矩形,其大小由圆的直径更改,其中矩形仍以其当前中心为中心。
在下面的示例中,min
和max
用于在矩形定义的区域中夹紧圆心