2013-04-13 72 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

相關問題