Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 不让角色移出窗口_Python_Pygame - Fatal编程技术网

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
用于在矩形定义的区域中夹紧圆心