鱼C论坛

 找回密码
 立即注册
查看: 1921|回复: 2

37.1小乌龟吃鱼小游戏

[复制链接]
发表于 2021-2-11 00:24:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. from random import *
  2. step_turtle = [-2, -1, 1, 2]
  3. step_fish = [-1, 1]

  4. legal_x = [0,10]
  5. legal_y = [0,10]


  6. class Fish:
  7.     def __init__(self):
  8.    
  9.         self.x = randint(legal_x[0], legal_x[1])
  10.         self.y = randint(legal_y[0], legal_y[1])

  11.     def move(self, step):
  12.         new_x = self.x + choice(step)
  13.         new_y = self.y + choice(step)

  14.         if new_x < legal_x[0]:
  15.             self.x = legal_x[0] - (new_x - legal_x[0])
  16.         elif new_x > legal_x[1]:
  17.             self.x = legal_x[1] -(new_x - legal_x[1])
  18.         else:
  19.             self.x = new_x

  20.         if new_y < legal_y[0]:
  21.             self.y = legal_y[0] - (new_y - legal_y[0])
  22.         elif new_y > legal_y[1]:
  23.             self.y = legal_y[1] - (new_y - legal_y[1])
  24.         else:
  25.             self.y = new_y
  26.         return (self.x, self.y)

  27. class Turtle(Fish):
  28.     def __init__(self):
  29.         super().__init__()
  30.         self.power = 100
  31.     def move(self, step):
  32.         super().move(step)
  33.         new_x = self.x + choice(step)
  34.         new_y = self.y + choice(step)
  35.         self.power -=1
  36.     def eat(self):
  37.         self.power += 20
  38.         if self.pwoer >100:
  39.             self.power = 100

  40. turtle = Turtle()
  41. fish = []
  42. for i in range(10):
  43.     new_fish = Fish()
  44.     fish.append(new_fish)

  45. while True:
  46.     if not len(fish):
  47.         print('鱼儿都吃完了,游戏结束!')
  48.         break
  49.     if not turtle.power:
  50.         print('乌龟体力耗尽,挂掉了!%d' %len(fish))
  51.         break

  52.     pos = turtle.move(step_turtle)

  53.     for each_fish in fish[:]:
  54.         if each_fish.move(step_fish) == pos:
  55.             turtle.eat()
  56.             fish.remove(each_fish)
  57.             print('有一条鱼儿被吃掉了... 还剩%d条鱼' %len(fish))
  58.         '''else:
  59.             print('乌龟在(%d, %d),鱼儿在(%d, %d)' %(turtle.x, turtle.y, each_fish.x, each_fish.y))'''
复制代码


这个是对原答案进行小小的改变,就是用类对象的继承省了些代码
但是却发现一个问题,乌龟始终吃不到鱼
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-2-11 08:18:22 | 显示全部楼层
  1.     def move(self, step):
  2.         new_x = self.x + choice(step)
  3.         new_y = self.y + choice(step)
  4.         self.power -=1
  5.         return super().move(step)
复制代码


第45行power拼写错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-11 14:39:13 | 显示全部楼层
洋洋痒 发表于 2021-2-11 08:18
第45行power拼写错误

谢谢,找到根本原因了,38行没有返回参数(导致pos没有参数)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-28 00:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表