|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
小甲鱼第37讲课后习题有道关于乌龟和鱼的游戏代码。
下面是小甲鱼答案里的部分代码:
class Turtle:
def __init__(self):
# 初始体力
self.power = 100
# 初始位置随机
self.x = r.randint(legal_x[0], legal_x[1])
self.y = r.randint(legal_y[0], legal_y[1])
def move(self):
# 随机计算方向并移动到新的位置(x, y)
new_x = self.x + r.choice([1, 2, -1, -2])
new_y = self.y + r.choice([1, 2, -1, -2])
# 检查移动后是否超出场景x轴边界
if new_x < legal_x[0]:
self.x = legal_x[0] - (new_x - legal_x[0])
elif new_x > legal_x[1]:
self.x = legal_x[1] - (new_x - legal_x[1])
else:
self.x = new_x
# 检查移动后是否超出场景y轴边界
if new_y < legal_y[0]:
self.y = legal_y[0] - (new_y - legal_y[0])
elif new_y > legal_y[1]:
self.y = legal_y[1] - (new_y - legal_y[1])
else:
self.y = new_y
# 体力消耗
self.power -= 1
# 返回移动后的新位置
return (self.x, self.y)
然后下面是我写的部分代码:
class Turtle:
def __init__(self):
self.power = 100
self.x = r.randint(legal_x[0],legal_x[1])
self.y = r.randint(legal_y[0],legal_y[1])
def move(self):
new.x = self.x + r.choice([1,2,-1,-2])
new.y = self.y + r.choice([1,2,-1,-2])
self.power -= 1
if new.x < legal_x[0]:
new.x = legal_x[0] - (new_x - legal_x[0])
elif new.x > legal_x[1]:
new.x = legal_x[1] - (new_x - legal_x[1])
else:
new.x = new.x
if new.y < legal_y[0]:
new.y = legal_y[0] - (new_y - legal_y[0])
elif new.y > legal_y[1]:
new.y = legal_y[1] - (new_y - legal_y[1])
else:
new.y = new.y
return (new.x,new.y)
为什么小甲鱼的代码没问题,而我的代码却出现了下面的问题:
Traceback (most recent call last):
File "C:\Users\Glassy Sky\Desktop\text.py", line 74, in <module>
pos = turtle.move()
File "C:\Users\Glassy Sky\Desktop\text.py", line 13, in move
new.x = self.x + r.choice([1,2,-1,-2])
NameError: name 'new' is not defined
他说我的new.x 没有被定义,但程序里明明是给他赋予了函数表达式。还有这里面的self.x是单纯的一个变量还是一个含有对象的量,如果是单纯的变量的话直接把我这代码里的new.x 换成self.x不就和小甲鱼的一样了吗?
求大神讲解一下我的问题,蟹蟹
|
|