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