0

卓球ゲームでボールの動きを作成しようとしているときに、最も厄介な問題に遭遇しました。x 座標と y 座標の値は変更したくありません (適切な言葉がないため)。おそらくこれは、Python の文字列の不変の性質、または Python が変数を処理する方法についての私の誤解によるものです。どんな助けでも大歓迎です:)

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]
4

1 に答える 1

0

ここでの問題は、あなたが言うとき

NORTH_EAST = [x_coordinate + 1, y_coordinate - 1]

その時点で計算および保存される 2 つの値のリストを作成します。x_coordinateおよびの値に基づいて更新されることはありませんy_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の値を一緒に格納し、ディクショナリを使用して方向データを格納します。これは、コードの繰り返しが少ないことを意味します。

于 2013-04-13T20:53:07.483 に答える