|
发表于 2022-8-8 17:58:48
|
显示全部楼层
代码有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)}")
复制代码 |
|