代码有1处可以优化,另外用对象进行改写。拙作附上。
def get_pos(logic_pos, legal):
"""
判断逻辑位置是否超出边界,如果超出则后退,返回实际的位置
:param logic_pos: 走位后的逻辑位置
:param legal: 列表,包含两个值,画面的边界
:return: 返回实际的位置
"""
true_pos = 0
if logic_pos < legal[0]:
true_pos = legal[0] - (logic_pos - legal[0])
elif logic_pos > legal[1]:
true_pos = legal[1] - (logic_pos - legal[1])
else:
true_pos = logic_pos
return true_pos
class Create:
def __init__(self, origin=[0, 0]):
self.pos_x = origin[0]
self.pos_y = origin[1]
def moving(self, direction, step):
legal_x = [-100, 100]
legal_y = [-100, 100]
self.pos_x = direction[0] * step + self.pos_x
self.pos_y = direction[1] * step + self.pos_y
self.pos_x = get_pos(self.pos_x, legal_x)
self.pos_y = get_pos(self.pos_y, legal_y)
return self.pos_x, self.pos_y
new_create = Create()
print(f"向右移动10步后,位置是:{new_create.moving([1,0], 10)} ")
print(f"向上移动130步后,位置是:{new_create.moving([0,1],130)}")
print(f"向左移动10步后,位置是:{new_create.moving([-1,0],10)}")
|