|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位大佬,我在学习面向对象编程第二节课时,做了小甲鱼的课后题乌龟与鱼的游戏题,我只是在类的定义里加入了继承的东西,主函数没想好于是按照答案写的,可是就死循环了,希望大佬帮我看看问题出在哪里,谢谢
import random as r
class Site:
def __init__(self):
self.x=r.randint(0,10)
self.y=r.randint(0,10)#构造函数
def is_in(self):
if (0<=self.x<=10) and (0<=self.y<=10):
return 1
else:
return 0
def move(self):
a=r.randint(-2,2)
b=r.randinr(-2,2)
if (self.x+a<=10) and (self.y+b<=10):
self.x=abs(self.x+a)
self.y=abs(self.y+b)
elif (self.x+a<=10) and (self.y+b>10):
self.x=abs(self.x+a)
self.y=10-(self.y+b-10)
elif (self.x>10) and (self.y<=10):
self.y=abs(self.y+b)
self.x=10-(self.x+a-10)
else:
self.x=10-(self.x+a-10)
self.y=10-(self.y+b-10)
return (self.x,self.y)
class Fish(Site):
def __init__(self):
super().__init__()
self.count=10
def move(self):
super().move()
a=r.randint(-1,1)
b=r.randinr(-1,1)
def getSite(self):
print("当前鱼儿位置是(%d,%d)"%(self.x,self.y))
return (self.x,self.y)
class Turtle(Site):
def __init__(self):
super().__init__()
self.amount=1
self.power=100
self.hunger=False
def the_power(self,hunger=False):
if self.hunger:
self.power+=20
else:
self.power-=1
def alive(self):
if self.power<0:
return 0
else:
return 1
def getSite(self):
print("当前乌龟位置是(%d,%d)"%(self.x,self.y))
return (self.x,self.y)
turtle=Turtle()
fish=[]
for i in range(0,10):
f=Fish()
fish.append(f)
while 1:
if not len(fish):
print("鱼死光了,gg")
break
if not turtle.alive():
print("得意什么?乌龟死了也gg")
break
pos=turtle.getSite()
for each in fish:
if each.getSite()==pos:
turtule.the_power(hunger=True)
fish.remove(each)
print("一条鱼被吃掉了!")
本帖最后由 Charles未晞 于 2018-3-19 20:21 编辑
代码好乱、、、看在头像比较萌的份上怒答一波。。。
我没看过小甲鱼的课后题,不知道题目是什么。但是首先:
这个肯定不对,目测楼主打错了,这个错误有两处。
其次倒数第三行应该是这个,你打错了。
- turtle.the_power(hunger=True)
复制代码
最后,鱼好歹要move吧。
也就是最后一行应该有:
缩进同if。
死循环估计是鱼一直保持不动的原因。。。。。。。
代码惨不忍睹,我不想仔细分析,也没啥萌点的配图,我觉得这差不多了。。。
|
|