鱼C论坛

 找回密码
 立即注册
查看: 2019|回复: 1

[已解决]小甲鱼作业题 乌龟吃鱼

[复制链接]
发表于 2021-1-27 21:16:32 | 显示全部楼层 |阅读模式

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

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

x
没什么别的意思,就想看乌龟赢一次,写了如下代码
  1. import random as r
  2. legal_x=[0,10]
  3. legal_y=[0,10]
  4. class Turtle :
  5.     def __init__(self):
  6.         self.power=100
  7.         self.x=r.randint(0,10)
  8.         self.y=r.randint(0,10)
  9.     def move(self):
  10.         new_x=self.x+r.choice([1,2,-1,-2])
  11.         new_y=self.y+r.choice([1,2,-1,-2])
  12.         if new_x>=legal_x[1]:
  13.             new_x=10-(new_x-10)
  14.         if new_x<=legal_x[0]:
  15.             new_x=0-new_x
  16.         self.x=new_x
  17.         self.y=new_y
  18.         self.power-=1
  19.         return(self.x,self.y)
  20.     def eat(self):
  21.         self.power+=20
  22. class Fish():
  23.     def __init__(self):
  24.         self.hp=1
  25.         self.x=r.randint(0,10)
  26.         self.y=r.randint(0,10)
  27.     def move(self):
  28.         if self.hp==0:
  29.             self.x=-1
  30.             self.y=-1
  31.             return(self.x,self.y)            
  32.         new_x=self.x+r.choice([1,-1])
  33.         new_y=self.y+r.choice([1,-1])
  34.         if new_x>=legal_x[1]:
  35.             new_x=10-(new_x-10)
  36.         if new_x<=legal_x[0]:
  37.             new_x=0-new_x
  38.         self.x=new_x
  39.         self.y=new_y
  40.         return(self.x,self.y)            
  41.     def beeat(self):
  42.         self.hp-=1

  43. turtle=Turtle()
  44. fish_list=[]
  45. for i in range(0,10):
  46.     new_fish=Fish()
  47.     fish_list.append(new_fish)
  48. fish_eat=0
  49. while 1:
  50.     if turtle.power==0:
  51.         print(fish_eat)
  52.         print('turtle die')
  53.         break
  54.     if len(fish_list)==0:
  55.         print('turtle became more powerful')
  56.         break
  57.     turtle.move()
  58.     for v in range(0,len(fish_list)):
  59.         fish_list[v].move()
  60.         if fish_list[v].x==turtle.x and fish_list[v].y ==turtle.y:
  61.             fish_list[v].beeat()
  62.             turtle.eat()
  63.             print('turtle eat')
  64.     for i in range(0,len(fish_list)):
  65.         if fish_list[i].x==-1 and fish_list[i].y==-1:
  66.             fish_eat+=1
  67.     if fish_eat==len(fish_list):
  68.         print(fish_eat)
  69.         print('turtle became more powerful')
  70.         break
复制代码

我个人认为问题出现在fish_eat上,或者前面的fish.move中的if hp==0里
最佳答案
2021-1-28 09:39:05


这个乌龟吃鱼游戏本身对乌龟就不友好哈,你将乌龟生命值调高些即可:

部分修改,参考代码:

  1. import random as r
  2. legal_x=[0,10]
  3. legal_y=[0,10]
  4. class Turtle :
  5.     def __init__(self):
  6.         self.power= 1000
  7.         self.x=r.randint(0,10)
  8.         self.y=r.randint(0,10)
  9.     def move(self):
  10.         new_x=self.x+r.choice([1,2,-1,-2])
  11.         new_y=self.y+r.choice([1,2,-1,-2])
  12.         if new_x>=legal_x[1]:
  13.             new_x=10-(new_x-10)
  14.         if new_x<=legal_x[0]:
  15.             new_x=0-new_x
  16.         self.x=new_x
  17.         self.y=new_y
  18.         self.power-=1
  19.         return(self.x,self.y)
  20.     def eat(self):
  21.         self.power+=1000
  22. class Fish():
  23.     def __init__(self):
  24.         self.hp=1
  25.         self.x=r.randint(0,10)
  26.         self.y=r.randint(0,10)
  27.     def move(self):
  28.         if self.hp==0:
  29.             self.x=-1
  30.             self.y=-1
  31.             return(self.x,self.y)            
  32.         new_x=self.x+r.choice([1,-1])
  33.         new_y=self.y+r.choice([1,-1])
  34.         if new_x>=legal_x[1]:
  35.             new_x=10-(new_x-10)
  36.         if new_x<=legal_x[0]:
  37.             new_x=0-new_x
  38.         self.x=new_x
  39.         self.y=new_y
  40.         return(self.x,self.y)            
  41.     def beeat(self):
  42.         self.hp-=1

  43. turtle=Turtle()
  44. fish_list=[]
  45. for i in range(0,10):
  46.     new_fish=Fish()
  47.     fish_list.append(new_fish)
  48. fish_eat=0
  49. while 1:
  50.      if turtle.power==0:
  51.         print('The turtle ate %d fish.'%fish_eat)
  52.         print('turtle die')
  53.         break
  54.      if len(fish_list)==0:
  55.         print('turtle became more powerful')
  56.         break
  57.      turtle.move()
  58.      for v in range(0,len(fish_list)):
  59.         fish_list[v].move()
  60.         if fish_list[v].x==turtle.x and fish_list[v].y ==turtle.y:
  61.           fish_list[v].beeat()
  62.           turtle.eat()
  63.           print('turtle ate a fish~')
  64.           fish_eat+=1
  65.      if fish_eat == len(fish_list):
  66.           print('The turtle ate up all the fish.')
  67.           print('turtle victory!')
  68.           break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-28 09:39:05 | 显示全部楼层    本楼为最佳答案   


这个乌龟吃鱼游戏本身对乌龟就不友好哈,你将乌龟生命值调高些即可:

部分修改,参考代码:

  1. import random as r
  2. legal_x=[0,10]
  3. legal_y=[0,10]
  4. class Turtle :
  5.     def __init__(self):
  6.         self.power= 1000
  7.         self.x=r.randint(0,10)
  8.         self.y=r.randint(0,10)
  9.     def move(self):
  10.         new_x=self.x+r.choice([1,2,-1,-2])
  11.         new_y=self.y+r.choice([1,2,-1,-2])
  12.         if new_x>=legal_x[1]:
  13.             new_x=10-(new_x-10)
  14.         if new_x<=legal_x[0]:
  15.             new_x=0-new_x
  16.         self.x=new_x
  17.         self.y=new_y
  18.         self.power-=1
  19.         return(self.x,self.y)
  20.     def eat(self):
  21.         self.power+=1000
  22. class Fish():
  23.     def __init__(self):
  24.         self.hp=1
  25.         self.x=r.randint(0,10)
  26.         self.y=r.randint(0,10)
  27.     def move(self):
  28.         if self.hp==0:
  29.             self.x=-1
  30.             self.y=-1
  31.             return(self.x,self.y)            
  32.         new_x=self.x+r.choice([1,-1])
  33.         new_y=self.y+r.choice([1,-1])
  34.         if new_x>=legal_x[1]:
  35.             new_x=10-(new_x-10)
  36.         if new_x<=legal_x[0]:
  37.             new_x=0-new_x
  38.         self.x=new_x
  39.         self.y=new_y
  40.         return(self.x,self.y)            
  41.     def beeat(self):
  42.         self.hp-=1

  43. turtle=Turtle()
  44. fish_list=[]
  45. for i in range(0,10):
  46.     new_fish=Fish()
  47.     fish_list.append(new_fish)
  48. fish_eat=0
  49. while 1:
  50.      if turtle.power==0:
  51.         print('The turtle ate %d fish.'%fish_eat)
  52.         print('turtle die')
  53.         break
  54.      if len(fish_list)==0:
  55.         print('turtle became more powerful')
  56.         break
  57.      turtle.move()
  58.      for v in range(0,len(fish_list)):
  59.         fish_list[v].move()
  60.         if fish_list[v].x==turtle.x and fish_list[v].y ==turtle.y:
  61.           fish_list[v].beeat()
  62.           turtle.eat()
  63.           print('turtle ate a fish~')
  64.           fish_eat+=1
  65.      if fish_eat == len(fish_list):
  66.           print('The turtle ate up all the fish.')
  67.           print('turtle victory!')
  68.           break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-28 15:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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