Python_春树 发表于 2020-12-31 11:30:16

python第37讲 课后习题1 【乌龟吃鱼】 哪位大佬可以拯救一下我的代码‼

本帖最后由 Python_春树 于 2020-12-31 14:56 编辑

import random

class Tortoise:
    tortoise_coor =
    hp = 100

    def move(self):
      self.hp -= 1
      orientation = random.randint(1, 4)
      speed = random.randint(1, 2)
      if orientation == 1:
            self.tortoise_coor += speed
      elif orientation == 2:
            self.tortoise_coor += speed
      elif orientation == 3:
            self.tortoise_coor -= speed
      else:
            self.tortoise_coor -= speed

      if self.tortoise_coor < 0 or self.tortoise_coor < 0:
            self.tortoise_coor = abs(self.tortoise_coor)
            self.tortoise_coor = abs(self.tortoise_coor)
      elif self.tortoise_coor > 10:
            self.tortoise_coor = 20 - self.tortoise_coor
      elif self.tortoise_coor > 10:
            self.tortoise_coor = 20 - self.tortoise_coor
      print('乌龟', self.tortoise_coor, '小乌龟体力剩余:', self.hp)
      return self.tortoise_coor


class Fish:
    fish_coor =
    sums = 10

    def move(self):
      orientation = random.randint(1, 4)
      if orientation == 1:
            self.fish_coor += 1
      elif orientation == 2:
            self.fish_coor += 1
      elif orientation == 3:
            self.fish_coor -= 1
      else:
            self.fish_coor -= 1

      if self.fish_coor < 0 or self.fish_coor < 0:
            self.fish_coor = abs(self.fish_coor)
            self.fish_coor = abs(self.fish_coor)
      elif self.fish_coor > 10:
            self.fish_coor = 20 - self.fish_coor
      elif self.fish_coor > 10:
            self.fish_coor = 20 - self.fish_coor
      print('小鱼', self.fish_coor)
      return self.fish_coor

tortoise = Tortoise()
fish = Fish()
while True:
    if Tortoise.hp == 0:
      print('乌龟的体力耗尽了,游戏结束!')
      break
    if Fish.sums == 0:
      print('小鱼被吃光了,游戏结束!')
      break

    if tortoise.move() == fish.move():
      Fish.sums -= 1
      print('小鱼和龟相遇了, 小鱼被吃掉一只')
      fish_coor =
      Tortoise.hp += 20
      if Tortoise.hp > 100:
            Tortoise.hp = 100








如题, 一顿操作以后 都不知道自己写的什么东西了
每次都会把鱼吃光???

Python_春树 发表于 2020-12-31 14:01:56

{:10_249:}{:10_249:}{:10_249:}

小伤口 发表于 2020-12-31 14:43:21

你的位置设置的有问题
我也没改出来,我要出去了,下次写个注释吧。
不然很难懂你的思路的{:10_266:}
import random

class Tortoise:
    tortoise_coor =
    hp = 100

    def move(self):
      orientation = random.randint(1, 4)
      speed = random.randint(1, 2)
      if orientation == 1:
            self.tortoise_coor += speed
      elif orientation == 2:
            self.tortoise_coor += speed
      elif orientation == 3:
            self.tortoise_coor -= speed
      else:
            self.tortoise_coor -= speed

      if self.tortoise_coor < 0 or self.tortoise_coor < 0:
            self.tortoise_coor = abs(self.tortoise_coor)
            self.tortoise_coor = self.tortoise_coor
      elif self.tortoise_coor > 10:
            self.tortoise_coor = 20 - self.tortoise_coor
      elif self.tortoise_coor > 10:
            self.tortoise_coor = 20 - self.tortoise_coor
      self.hp -= 1
      return self.tortoise_coor

class Fish:
    fish_coor =
    sums = 9

    def move(self):
      orientation = random.randint(1, 4)
      if orientation == 1:
            self.fish_coor += 1
      elif orientation == 2:
            self.fish_coor += 1
      elif orientation == 3:
            self.fish_coor -= 1
      else:
            self.fish_coor -= 1

      if self.fish_coor < 0 or self.fish_coor < 0:
            self.fish_coor = abs(self.fish_coor)
      elif self.fish_coor > 10:
            self.fish_coor = 20 - self.fish_coor
      elif self.fish_coor > 10:
            self.fish_coor = 20 - self.fish_coor
      return self.fish_coor
while True:
    if Tortoise.hp < 0:
      print('乌龟的体力耗尽了,游戏结束!')
      break
    if Fish.sums < 0:
      print('小鱼被吃光了,游戏结束!')
      break
    tortoise = Tortoise()
    fish = Fish()
    if tortoise.move() == fish.move():
      Fish.sums -= 1
      print('小鱼和龟相遇了, 小鱼被吃掉一只')
      print('龟龟坐标:',tortoise.move())
      print('鱼儿坐标:',fish.move())
      fish_coor =
      Tortoise.hp += 20
      if Tortoise.hp > 100:
            Tortoise.hp = 100

=
小鱼和龟相遇了, 小鱼被吃掉一只
龟龟坐标:
鱼儿坐标:
小鱼和龟相遇了, 小鱼被吃掉一只
龟龟坐标:
鱼儿坐标:
小鱼和龟相遇了, 小鱼被吃掉一只
龟龟坐标:
鱼儿坐标:
小鱼和龟相遇了, 小鱼被吃掉一只
龟龟坐标:
鱼儿坐标:
小鱼和龟相遇了, 小鱼被吃掉一只
龟龟坐标:
鱼儿坐标:
小鱼和龟相遇了, 小鱼被吃掉一只
龟龟坐标:
鱼儿坐标:
小鱼和龟相遇了, 小鱼被吃掉一只
龟龟坐标:
鱼儿坐标:
小鱼和龟相遇了, 小鱼被吃掉一只
龟龟坐标:
鱼儿坐标:
小鱼和龟相遇了, 小鱼被吃掉一只
龟龟坐标:
鱼儿坐标:
小鱼和龟相遇了, 小鱼被吃掉一只
龟龟坐标:
鱼儿坐标:
小鱼被吃光了,游戏结束!
>>>

Python_春树 发表于 2020-12-31 14:55:41

小伤口 发表于 2020-12-31 14:43
你的位置设置的有问题
我也没改出来,我要出去了,下次写个注释吧。
不然很难懂你的思路的


咳咳我刚才已经发现问题了

Python_春树 发表于 2020-12-31 14:58:23

Python_春树 发表于 2020-12-31 14:55
咳咳我刚才已经发现问题了

然后我修改了一下 发现变成了 无限体力龟龟

小伤口 发表于 2020-12-31 16:22:38

Python_春树 发表于 2020-12-31 14:58
然后我修改了一下 发现变成了 无限体力龟龟

要不把乌龟的体力再创一个实例方法?

tryhi 发表于 2020-12-31 17:08:08

不懂帮顶

Python_春树 发表于 2021-1-1 17:09:29

小伤口 发表于 2020-12-31 16:22
要不把乌龟的体力再创一个实例方法?

是的解决了 重新添加一个体力的实例,之前体力放在那里每次读取都是100 所以 会无限体力{:10_266:}{:10_266:}
页: [1]
查看完整版本: python第37讲 课后习题1 【乌龟吃鱼】 哪位大佬可以拯救一下我的代码&#8252;