鱼C论坛

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

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

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

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

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

x
没什么别的意思,就想看乌龟赢一次,写了如下代码
import random as r
legal_x=[0,10]
legal_y=[0,10]
class Turtle :
    def __init__(self):
        self.power=100
        self.x=r.randint(0,10)
        self.y=r.randint(0,10)
    def move(self):
        new_x=self.x+r.choice([1,2,-1,-2])
        new_y=self.y+r.choice([1,2,-1,-2])
        if new_x>=legal_x[1]:
            new_x=10-(new_x-10)
        if new_x<=legal_x[0]:
            new_x=0-new_x
        self.x=new_x
        self.y=new_y
        self.power-=1
        return(self.x,self.y)
    def eat(self):
        self.power+=20
class Fish():
    def __init__(self):
        self.hp=1
        self.x=r.randint(0,10)
        self.y=r.randint(0,10)
    def move(self):
        if self.hp==0:
            self.x=-1
            self.y=-1
            return(self.x,self.y)            
        new_x=self.x+r.choice([1,-1])
        new_y=self.y+r.choice([1,-1])
        if new_x>=legal_x[1]:
            new_x=10-(new_x-10)
        if new_x<=legal_x[0]:
            new_x=0-new_x
        self.x=new_x
        self.y=new_y
        return(self.x,self.y)            
    def beeat(self):
        self.hp-=1

turtle=Turtle()
fish_list=[]
for i in range(0,10):
    new_fish=Fish()
    fish_list.append(new_fish)
fish_eat=0
while 1:
    if turtle.power==0:
        print(fish_eat)
        print('turtle die')
        break
    if len(fish_list)==0:
        print('turtle became more powerful')
        break
    turtle.move()
    for v in range(0,len(fish_list)):
        fish_list[v].move()
        if fish_list[v].x==turtle.x and fish_list[v].y ==turtle.y:
            fish_list[v].beeat()
            turtle.eat()
            print('turtle eat')
    for i in range(0,len(fish_list)):
        if fish_list[i].x==-1 and fish_list[i].y==-1:
            fish_eat+=1
    if fish_eat==len(fish_list):
        print(fish_eat)
        print('turtle became more powerful')
        break
我个人认为问题出现在fish_eat上,或者前面的fish.move中的if hp==0里
最佳答案
2021-1-28 09:39:05


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

部分修改,参考代码:
import random as r
legal_x=[0,10]
legal_y=[0,10]
class Turtle :
    def __init__(self):
        self.power= 1000
        self.x=r.randint(0,10)
        self.y=r.randint(0,10)
    def move(self):
        new_x=self.x+r.choice([1,2,-1,-2])
        new_y=self.y+r.choice([1,2,-1,-2])
        if new_x>=legal_x[1]:
            new_x=10-(new_x-10)
        if new_x<=legal_x[0]:
            new_x=0-new_x
        self.x=new_x
        self.y=new_y
        self.power-=1
        return(self.x,self.y)
    def eat(self):
        self.power+=1000
class Fish():
    def __init__(self):
        self.hp=1
        self.x=r.randint(0,10)
        self.y=r.randint(0,10)
    def move(self):
        if self.hp==0:
            self.x=-1
            self.y=-1
            return(self.x,self.y)            
        new_x=self.x+r.choice([1,-1])
        new_y=self.y+r.choice([1,-1])
        if new_x>=legal_x[1]:
            new_x=10-(new_x-10)
        if new_x<=legal_x[0]:
            new_x=0-new_x
        self.x=new_x
        self.y=new_y
        return(self.x,self.y)            
    def beeat(self):
        self.hp-=1

turtle=Turtle()
fish_list=[]
for i in range(0,10):
    new_fish=Fish()
    fish_list.append(new_fish)
fish_eat=0
while 1:
     if turtle.power==0:
        print('The turtle ate %d fish.'%fish_eat)
        print('turtle die')
        break
     if len(fish_list)==0:
        print('turtle became more powerful')
        break
     turtle.move()
     for v in range(0,len(fish_list)):
        fish_list[v].move()
        if fish_list[v].x==turtle.x and fish_list[v].y ==turtle.y:
          fish_list[v].beeat()
          turtle.eat()
          print('turtle ate a fish~')
          fish_eat+=1
     if fish_eat == len(fish_list):
          print('The turtle ate up all the fish.')
          print('turtle victory!')
          break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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


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

部分修改,参考代码:
import random as r
legal_x=[0,10]
legal_y=[0,10]
class Turtle :
    def __init__(self):
        self.power= 1000
        self.x=r.randint(0,10)
        self.y=r.randint(0,10)
    def move(self):
        new_x=self.x+r.choice([1,2,-1,-2])
        new_y=self.y+r.choice([1,2,-1,-2])
        if new_x>=legal_x[1]:
            new_x=10-(new_x-10)
        if new_x<=legal_x[0]:
            new_x=0-new_x
        self.x=new_x
        self.y=new_y
        self.power-=1
        return(self.x,self.y)
    def eat(self):
        self.power+=1000
class Fish():
    def __init__(self):
        self.hp=1
        self.x=r.randint(0,10)
        self.y=r.randint(0,10)
    def move(self):
        if self.hp==0:
            self.x=-1
            self.y=-1
            return(self.x,self.y)            
        new_x=self.x+r.choice([1,-1])
        new_y=self.y+r.choice([1,-1])
        if new_x>=legal_x[1]:
            new_x=10-(new_x-10)
        if new_x<=legal_x[0]:
            new_x=0-new_x
        self.x=new_x
        self.y=new_y
        return(self.x,self.y)            
    def beeat(self):
        self.hp-=1

turtle=Turtle()
fish_list=[]
for i in range(0,10):
    new_fish=Fish()
    fish_list.append(new_fish)
fish_eat=0
while 1:
     if turtle.power==0:
        print('The turtle ate %d fish.'%fish_eat)
        print('turtle die')
        break
     if len(fish_list)==0:
        print('turtle became more powerful')
        break
     turtle.move()
     for v in range(0,len(fish_list)):
        fish_list[v].move()
        if fish_list[v].x==turtle.x and fish_list[v].y ==turtle.y:
          fish_list[v].beeat()
          turtle.eat()
          print('turtle ate a fish~')
          fish_eat+=1
     if fish_eat == len(fish_list):
          print('The turtle ate up all the fish.')
          print('turtle victory!')
          break
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 18:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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