0

嗨,我正在制作游戏,但遇到了一个绊脚石,这是我下面代码的一部分:

class player(object):
    def __init__(self):
        self.x = 10
        self.y = 10
        self.amount = 5
        self.answer = 0

     def move(self):
        self.x += self.amount
        self.y += self.amount


while True:
    player().move()
    print player().x

这可能是一个非常基本的错误,但无论 move() 函数做什么,它似乎都不会改变 self.x 或 self.y 的值,有人可以请我朝正确的方向戳!谢谢,我意识到我可能缺少一些非常基本的东西,我对 OO 没有太多经验

4

2 回答 2

4
player().move()    # create a player and move it
print player().x   # create another player and print its x

你的意思是:

aplayer = player()
aplayer.move()
print aplayer.x

 

PS:常见的做法是类名大写:

class Player(object):
    def __init__(self):
        self.x = 10
        self.y = 10
        self.amount = 5
        self.answer = 0

     def move(self):
        self.x += self.amount
        self.y += self.amount


player = Player()
player.move()
print player.x

这样就很容易区分类和对象。

于 2013-04-06T20:20:33.267 回答
0

好的。对方说的是需要把“玩家”设置为George这样的变量,然后调用George.move()

所以

class Player(object):
    def __init__(self):
        self.x = 10
        self.y = 10
        self.amount = 5
        self.answer = 0

    def move(self):
        self.x += self.amount
        self.y += self.amount

While True:
    george = Player()
    george.move()
    print george.x

那应该工作。您可以将“george”更改为您想要的任何内容,只要确保它是一致的。

于 2013-04-07T02:32:56.333 回答