鱼C论坛

 找回密码
 立即注册
查看: 1465|回复: 3

37节 乌龟吃鱼的作业题

[复制链接]
发表于 2018-2-12 17:06:37 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 heywilliam 于 2018-2-12 17:07 编辑

想求大神帮我看一下我自己写的代码有没有可以改进的地方,尽管能跑成功~感激不尽~~

题目: (题目跑到帖子最下方了)


我自己写的代码,其实我只写出了乌龟和鱼的类,剩下的乌龟吃鱼我不会写,是抄的答案.

我的代码:

  1. import random
  2. class Turtle:

  3.     energy = 100

  4.     def turtlemove(self):

  5.         tx = random.randint(0, 11)  # 乌龟初始位置x
  6.         ty = random.randint(0, 11)  # 乌龟初始位置y
  7.         tmove = random.randint(1, 3)  # 乌龟可移动距离
  8.         tdirection = random.choice(['tx', 'ty'])

  9.         #乌龟移动
  10.         if tdirection == 'tx':
  11.             tx += tmove
  12.         else:
  13.             ty += tmove

  14.         #判断出界
  15.         if tx > 10:
  16.             tx = 10 - ( tx - 10 )
  17.         if tx < 0:
  18.             tx = 0 - tx
  19.         if ty > 10:
  20.             ty = 10 - ( ty - 10 )
  21.         if ty < 0:
  22.             ty = 0 - ty

  23.             self.energy -= 1

  24.         return (tx, ty)

  25.     def eat(self):

  26.         self.energy += 20
  27.         if self.energy > 100:
  28.             self.energy = 100


  29. class Fish:

  30.     def fishmove(self):
  31.         fx = random.randint(0, 11)  # 鱼初始位置x
  32.         fy = random.randint(0, 11)  # 鱼初始位置y
  33.         fmove = 1
  34.         fdirection = random.choice(['fx','fy'])

  35.         #鱼移动
  36.         if fdirection == 'fx':
  37.             fx += fmove
  38.         else:
  39.             fy += fmove

  40.         # 判断出界
  41.         if fx > 10:
  42.             fx = 10 - (fx - 10)
  43.         if fx < 0:
  44.             fx = 0 - fx
  45.         if fy > 10:
  46.             fy = 10 - (fy - 10)
  47.         if fy < 0:
  48.             fy = 0 - fy

  49.         return (fx, fy)

  50. ###############以下代码跟参考答案一样了############

  51. turtle = Turtle() #生成乌龟一只

  52. #生成鱼10只
  53. fish = []

  54. for i in range(10):
  55.     new_fish = Fish()
  56.     fish.append(new_fish)

  57. #游戏开始
  58. while True:
  59.     if not len(fish):
  60.         print("鱼都吃完了,游戏结束!")
  61.         break
  62.     if not turtle.energy:
  63.         print("乌龟没力气了,游戏结束!")
  64.         break

  65.     pos = turtle.turtlemove()

  66.     for each_fish in fish[:]:
  67.         if each_fish.fishmove() == pos:
  68.             #鱼儿被吃掉了
  69.             turtle.eat()
  70.             fish.remove(each_fish)
  71.             print("有一条鱼儿被吃掉了...")
复制代码
Snipaste_2018-02-12_17-02-15.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-2-12 17:10:46 | 显示全部楼层
我发现我的代码每次都是鱼被全吃掉,乌龟死不了..
这里面一定有错
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-12 17:23:30 | 显示全部楼层
你对鱼有意见。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-12 17:24:00 | 显示全部楼层
啊我知道了...缩进问题

29行多了个缩进
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-27 23:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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