川A2580 发表于 2021-2-26 23:36:22

课后作业37一部分

主要是这个计算是否超出边界的减法没看懂,求解一下

def move(self):
      # 随机计算方向并移动到新的位置(x, y)
      new_x = self.x + r.choice()
      new_y = self.y + r.choice()
      # 检查移动后是否超出场景x轴边界
      if new_x < legal_x:
            self.x = legal_x - (new_x - legal_x)
      elif new_x > legal_x:
            self.x = legal_x - (new_x - legal_x)
      else:
            self.x = new_x
      # 检查移动后是否超出场景y轴边界
      if new_y < legal_y:
            self.y = legal_y - (new_y - legal_y)
      elif new_y > legal_y:
            self.y = legal_y - (new_y - legal_y)
      else:
            self.y = new_y      

昨非 发表于 2021-2-26 23:48:35

举个例子:数轴上范围1~10
如果new_y=11>10,那么就让y=10-(new_y-10)= 9.
相当于镜面换了个方向,
以此来确保不出界

川A2580 发表于 2021-2-28 20:30:27

昨非 发表于 2021-2-26 23:48
举个例子:数轴上范围1~10
如果new_y=11>10,那么就让y=10-(new_y-10)= 9.
相当于镜面换了个方向,


不知这样理解是否正确:
self.y = legal_y - (new_y - legal_y)
#Y轴上现在的位置=Y轴上10的位置-(Y轴上乌龟移动到新的位置—Y轴上10的位置)
#如果是这样,那为什么legal是Y轴上10的位置呢?{:10_277:}
页: [1]
查看完整版本: 课后作业37一部分