2016-05-01 19 views
0

私はcandycrushのようなゲームのために何かをバックトラッキングしています...もちろんバックトラックのために私はいつも私の初期のボードを変更する必要があります... しかし最後に変更しない変数を保存する方法

def return_original_board(board): 
    original_board = [] 
    for i in board: 
     original_board.append(i) 
    return original_board 

そして、私のバックトラック機能で、私はこの機能を格納された変数を作ったが、私:ゲームは、それは私が

私は機能をしようとしたことを変更することができますどのように.. old_boardを返しません。まだすべてを変更します コピー()機能を使用できません

+0

は、2次元配列/ネストされたリストボードですか? – schwobaseggl

+0

はい、それはランダム変数を使ってその方法を持っていれば、 – Merksem09

+0

std libの** copy.deepcopy **を参照してください。 –

答えて

3

ボードは2次元のlistなので、コードのilistです。その後、あなたはまだゲーム中にそれらのリストを突然変異させています。変更し、次のように:

for i in board: # if board is a nested list, i is a list 
    original_board.append(i[:]) # use a copy of the list 

、あるいは短くする(変数名を伝えるlist comprehensionなどを使用して):

def return_original_board(board): 
    return [row[:] for row in board] 
+0

あなたは、キャンディークラッシュのようなゲームをバックトラックして残りの動きを最大限に引き出す方法についても説明することができます – Merksem09

+1

これはこのコメントセクションの範囲外です(これに答えるには十分な情報がありません)。あなたが試したことを別の質問に投稿し、そこに助けを求めるのはなぜですか? – schwobaseggl

関連する問題