鱼C论坛

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

[已解决]第37的乌龟吃鱼 最后出问题了

[复制链接]
发表于 2018-1-6 23:28:04 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 jinfeng775 于 2018-1-6 23:33 编辑

import  random as r

x=[0,10]
y=[0,10]

class Turtle:
    def __init__(self):
        #初始体力
        self.power = 100
        #初始位置
        self.x1=r.randint(x[0],x[1])#x[0],x[1]其实就1到10 随机出来1到10个数
        self.y1=r.randint(y[0],y[1])#这样x,y就有了一X,Y的平面坐标了假设随机出来个2,4说明乌龟在X,2Y4的位置

        def move(self):
            #随机计算方向并移动新的位置(x,y)
            new_x=self.x1+r.choice([1,2,-1,-2]) #随机出来后的数 假设随机移动左右一步两步 加上初始位置  就是新的位置
            new_y=self.y1+r.choice([1,2,-1,-2])
            #检查移动后是否超出场景x轴边界
            if new_x < x[0]:        #判断移动的后的位置不能小于0  如果小于0了 说明出界了
                self.x1=x[0]-(new_x-x[0])   # x1=0-(-2-0)#这样就等于0--2负负得正 就变成正2了
            elif new_x> x[1]:
                self.x1=x[1]-(new_x-x[1])  
            else :
                self.x1=new_x
            #检查是否超过Y
            if new_y < y[0]:
                self.y1=y[0]-(new_y-y[0])
            elif new_y> y[1]:
                self.y1=y[1]-(new_y-y[1])
            else :
                self.y1=new_y
            # 体力耗尽
            self.power-=1
            #返回移动后的新位置
            return (self.x1,self.y1)

        def eat(self):
            self.power+=20
            if self.power>100:
                self.power=100
class Fish:
    def __in__(self):
        self.x1=r.randint(x[0],x[1])
        self.y1=r.randint(y[0],y[1])
    def move(self):
        new_x=self.x1+r.choice([1,-1])
        new_y=self.y1+r.choice([1,-1])
        if new_x < x[0]:
            self.x1=x[0]-(new_x-x[0])
        elif new_x> x[1]:
            self.x1=y[1]-(new_x-x[1])
        else :
            self.x1=new_x

        if new_y<y[0]:
            self.y1=y[0]-(new_y-y[0])
        elif new_y>yp[1]:
            self.y1=y[1]-(new_y-y[1])
        else :
            self.y1=new_y
        return (self.x1,self,y1)
turtle=Turtle()
fish= []
for i in range(10):
    new_fish=fish()
    fish.append(new_fish)
while True:
    if not len(fish):
        print('鱼儿都被吃完了')
        break
    if not turtle.power:
        print('乌龟体力耗尽')
        break
    pos=turtle.move()
    for e in fish[:]:
        if e.move()==pos:
            turtle.eat()
   
   
        
Traceback (most recent call last):
  File "F:/新建文件夹/对象乌龟吃鱼.py", line 65, in <module>
    new_fish=fish()
TypeError: 'list' object is not callable

说是类型错误:“list”对象不可调用 我完全是差不多抄的  也没看出来哪里错了
   
   
最佳答案
2018-1-7 02:08:54
本帖最后由 冰封雪舞 于 2018-1-7 02:24 编辑

new_fish=fish()后边fish第一个f应该是大写,然后很多缩进都不对,错误太多,抄的太不认真。
class Fish:
    def __in__(self):这里应该是def __init__(self):

return (self.x1,self,y1)这句里边self,y1那个,应该是.不是逗号


def move(self):
            #随机计算方向并移动新的位置(x,y)
这个方法一直到下边Fish类前的方法缩进都不对。需要向前整体挪4个格。
错误太多,检查起来好累。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-7 02:08:54 | 显示全部楼层    本楼为最佳答案   
本帖最后由 冰封雪舞 于 2018-1-7 02:24 编辑

new_fish=fish()后边fish第一个f应该是大写,然后很多缩进都不对,错误太多,抄的太不认真。
class Fish:
    def __in__(self):这里应该是def __init__(self):

return (self.x1,self,y1)这句里边self,y1那个,应该是.不是逗号


def move(self):
            #随机计算方向并移动新的位置(x,y)
这个方法一直到下边Fish类前的方法缩进都不对。需要向前整体挪4个格。
错误太多,检查起来好累。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-1-7 21:24:49 | 显示全部楼层
冰封雪舞 发表于 2018-1-7 02:08
new_fish=fish()后边fish第一个f应该是大写,然后很多缩进都不对,错误太多,抄的太不认真。
class Fish:
...

大神 谢谢你啊 我也检查出来了 但是那个符号是,我才看到  谢谢   我抄的时候完全是凭记忆写的  所以错误有点多 不好意思哈 真的太谢谢你了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 15:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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