|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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: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个格。
错误太多,检查起来好累。
|
|