Python 2游戏坐标类

时间:2015-03-31 02:28:32

标签: python python-2.7 coordinates

我想创建一个x-y坐标系,即使这应该是一个文本RPG,以便跟踪所有内容。所以,我正在尝试制作一个函数并测试该函数,让角色在x-y网格上移动,但是,无论我尝试什么,我都无法使它工作。这是代码:     class Player:

    def movement(charactor_movement):
        proceed = 0
        if charactor_movement == "left":
            character.position_x = character.position_x - 1
            proceed = 1
        elif charactor_movement == "right":
            character.position_x = character.position_x + 1
            proceed = 1
        elif charactor_movement == "forward":
            character.position_y = character.position_y + 1
            proceed = 1
        elif charactor_movement == "backward" or charactor_movement == "back":
            character.position_y = character.position_y - 1
            proceed = 1
charactor = Player()
charactor.position_x = 0
charactor.position_y = 0
proceed = 0
while proceed == 0:
    print "You are at",
    print charactor.position_x,
    print"x and",
    print charactor.position_y,
    print"y."
    global charactor_movement
    charactor_movement = raw_input("Where are you going?")
    charactor.movement()

此时,它完成了更改坐标的操作,因为无论我键入什么,它都会打印"You are at 0 x and 0 y""Where are you going?"。我尝试将else添加到默认的函数中,无论我输入什么并给我"Sorry, I cannot understand you."任何关于修复或一般改进代码的评论都会受到赞赏。(注意:对于测试我故意没有添加退出的方法。这个类是我需要修复的。)

1 个答案:

答案 0 :(得分:0)

每次迭代都会获得相同的坐标,因为while循环中的值不会发生变化。在character.position_x内增加movement永远不会更改character.position_x循环中while的值,因为它超出了您的global scope。如果您希望当前逻辑保持不变,则必须在 movement函数中使用charactor_movement关键字为您要更改的每个变量。此外,为什么不将movement作为参数传递给global函数,而不是像现在这样使用def somefunct(x): mycode = x mycode = 'no codez' while True: print mycode codez = raw_input('gimme teh codez: ') somefunct(codez)


最小的例子:

请考虑以下事项:

>>>[evaluate untitled-1.py]
no codez
gimme teh codez: codez!
no codez

输出

mycode

在函数中将global声明为while会将 置于 分配的def somefunct(x): global mycode #make variable global here mycode = x mycode = 'no codez' while True: print mycode codez = raw_input('gimme teh codez: ') somefunct(codez) 循环范围内,因此< / p>

>>>[evaluate untitled-1.py]
no codez
gimme teh codez: codez!
codez!

导致输出

{{1}}