<p>在我看来,你所拥有的是完美的Python。你知道吗</p>
<p>因为你使用的是小于和大于的比较,我们不能通过使用字典或我能想到的任何其他技巧来真正改善这一点。你知道吗</p>
<p>我想你可以把它分解成一个函数,然后调用这个函数:</p>
<pre><code>def clean_up_joystick(x, y, xbound, ybound, on_value):
if x > xbound:
x = on_value
elif x < -xbound:
x = -on_value
else:
x = 0
if y > ybound:
y = on_value
elif y < -ybound:
y = -on_value
else:
y = 0
return (x, y)
</code></pre>
<p>对于一个实际的程序,我建议您应该创建一个管理操纵杆的类,并使用希望用于任何特定操纵杆的边界值初始化该类。你知道吗</p>
<p>可能是这样的:</p>
<pre><code>class Joystick(object):
def __init__(self,
x_low=-50, x_high=50,
y_low=-50, y_high=50,
on_value=100):
self.x_low = x_low
self.x_high = x_high
self.y_low = y_low
self.y_high = y_high
self.on_value = on_value
def read(self):
# do something here that reads the joystick value
# joystick value saved in x, y variables
x, y = 0,0 # dummy init for example
if x > self.x_high:
x = self.on_value
elif x < -self.x_low:
x = -self.on_value
else:
x = 0
if y > self.x_high:
y = self.on_value
elif y < self.x_low:
y = -self.on_value
else:
y = 0
return (x, y)
j = Joystick()
x, y = j.read()
</code></pre>
<p>然后在实际程序中,只需使用<code>j.read()</code>读取操纵杆并清除输入数据。如果你需要改变它的工作方式,你有一个地方(班级)。只要确保每个实际的操纵杆都有一个不同的类实例,这样如果有不同的操纵杆,就可以清理不同的操纵杆。你知道吗</p>