Python 2游戏坐标类

Python 2游戏坐标类,python,python-2.7,coordinates,Python,Python 2.7,Coordinates,我想创建一个x-y坐标系,尽管这应该是一个文本RPG,以便跟踪所有东西的位置。所以,我在做一个函数的实验,并测试这个函数,它可以让角色在x-y网格上移动,但是,不管我怎么做,我都无法让它工作。代码如下: 职业球员: def movement(charactor_movement): proceed = 0 if charactor_movement == "left": character.position_x = characte

我想创建一个x-y坐标系,尽管这应该是一个文本RPG,以便跟踪所有东西的位置。所以,我在做一个函数的实验,并测试这个函数,它可以让角色在x-y网格上移动,但是,不管我怎么做,我都无法让它工作。代码如下: 职业球员:

    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()

在这一点上,它做它应该做的事情,直到改变坐标,当它打印出你在0 x和0 y,你要去哪里?不管我打什么。我已经尝试过在函数中添加一个else,不管我输入了什么,它都默认为else。对不起,我无法理解您的意思。如果您对修复或改进代码有任何意见,我们将不胜感激。注意:对于测试,我特意没有添加退出方法。类是我需要修复的。

每次迭代都会得到相同的坐标,因为while循环中的值没有改变。在移动中递增character.position_x永远不会改变while循环中character.position_x的值,因为它不在函数的范围内。如果希望当前逻辑保持不变,则必须在移动函数中为要更改的每个变量使用全局关键字。此外,为什么不将character_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声明为全局代码时,会在赋值时将其置于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)
输出结果

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