小马哥mfc 发表于 2021-3-21 12:34:12

面相对象编程,课后题

class Fish:
    def __init__(self):
      self.x = r.randint(legal_x, legal_x)
      self.y = r.randint(legal_y, legal_y)
      
    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
      # 返回移动后的新位置
      return (self.x, self.y)

turtle = Turtle()
fish = []
for i in range(10):
    new_fish = Fish() 这个小鱼的数量是一条一条被调用的吗?还是按照列表遍历的?
    fish.append(new_fish)

逃兵 发表于 2021-3-21 12:46:42

小鱼是通过循环遍历一条一条生成的,每生成的小鱼都加入到new_fish中

小马哥mfc 发表于 2021-3-21 13:04:40

但是i元素fori in range (10):
不应该是0-10吗?有点困惑

小马哥mfc 发表于 2021-3-21 13:06:15

是不是i提供数量,然后再在new_fish中一条一条进

逃兵 发表于 2021-3-21 13:09:56

小马哥mfc 发表于 2021-3-21 13:04
但是i元素fori in range (10):
不应该是0-10吗?有点困惑

0-9,一共十个元素

逃兵 发表于 2021-3-21 13:14:06

小马哥mfc 发表于 2021-3-21 13:06
是不是i提供数量,然后再在new_fish中一条一条进

i只是个临时使用的变量,没有实质的意义,只是为了完成十次循环

小马哥mfc 发表于 2021-3-21 13:14:09

对,发错了,

小马哥mfc 发表于 2021-3-21 13:16:17

明白了,谢谢
页: [1]
查看完整版本: 面相对象编程,课后题