2013-04-13 32 views
0

在尝试为乒乓球游戏中的球创造某种动作时,我遇到了一个令人讨厌的问题。 x和y坐标的值不想改变(缺少更好的单词)。也许这是由于python中字符串的不可变性质,或者是我对Python处理变量的方式的误解。任何帮助将是最欢迎:)如何更改int的值,并恢复并使用新值?

x_coordinate = 100 
y_coordinate = 100 

NORTH_EAST = [x_coordinate + 1, y_coordinate - 1] 
NORTH_WEST = [x_coordinate - 1, y_coordinate - 1] 
SOUTH_EAST = [x_coordinate + 1, y_coordinate + 1] 
SOUTH_WEST = [x_coordinate - 1, y_coordinate + 1] 
direction = NORTH_EAST 

while True: 

    print (direction) 
    x_coordinate = direction[0] 
    y_coordinate = direction[1] 
+0

预期结果是什么?代码现在在做什么,这是不正确的? – Axarydax

+0

预计:[101] [99],[102] [98],[103] [97] – user2278282

+0

现在正在处理[101] [99],[101] [99],[101] [99] ... – user2278282

回答

0

这里的问题是,当你说

NORTH_EAST = [x_coordinate + 1, y_coordinate - 1] 

您构建两个值,其计算和存储在时间的列表。它们不会根据x_coordinatey_coordinate的值更新而更新。

您将需要重新计算每个循环上的值以获得您期望的行为。要做到这一点,最简单的方法是使用一个功能:

directions = { 
    "north east": (+1, -1), 
    "north west": (-1, -1), 
    "south east": (+1, +1), 
    "south west": (-1, +1), 
} 

def new_position(old, direction): 
    x, y = old 
    dx, dy = directions[direction] 
    return x + dx, y + dy 

position = 100, 100 
direction = "north east" 

while True: 
    print(position) 
    position = new_position(position, direction) 

注意,那里有链接的数据块,最好将它们存储在数据结构中。在这里,我使用一个元组将xy值存储在一起,并为方向数据存储字典。这意味着你的代码重复性较低。

+0

所以这是我思考中的一个缺陷,多么尴尬。^ O ^非常感谢。 – user2278282

相关问题