2016-11-06 18 views
0

練習はゲームをやり直すことですブレークスルー Pythonで;それはn行とp行のボードを持つドラフトのようなゲームです。ゲームボードは常に初期状態のPythonにリセットされます

私は、この機能で自分のゲームボードを開始:

def NewBoard(n,p): 
    board = [["."] * p for i in range(n)] 

    for i in range(0, 2): 
     for j in range(0, p): 
      board[i][j] = 'o' 

    for k in range(n - 2, n): 
     for l in range(0, p): 
      board[k][l] = 'x' 

    return board 

しかし、この機能は、ゲームの初期状態であるので、これは常に、ボードをリセットします。

私がメインのゲーム機能を実行しようと、毎回プレーヤーの変更、ボード自体をresetingさ:

def Breaktrough(n, p): 
    DisplayBoard(NewBoard(n,p)) 
    DisplayBoard(Where(NewBoard(n, p), 1, *SelectPawn(1))) 
    DisplayBoard(Where(NewBoard(n, p), 2, *SelectPawn(2))) 

私は良かったではないと思っていたいくつかの解決策を試してみました。

+0

あなたはどのような解決策を試しましたか、なぜ彼らは良くないのですか? –

+0

ひどい英語のため申し訳ありません、私の母国語ではありません。 私は、ボードがNewBoardによって返されたargとして受け取り、再びそれを返す関数を実行しようとしました。しかし、それはうまくいきませんでした、私はちょうどボード上で修正を加えていない関数を作成したああ。 しかし、John Colemanのおかげで私は私の答えを得た!どうもありがとう。とてもシンプルで、私はそれについても考えていませんでした。 :) – Nayuru

答えて

0

ボードを変数に割り当てる必要があります。そのため、同じボードを時間の経過とともに参照し、移動しようとするたびに新しいボードを繰り返し作成することはできません。主な機能には、ライン

board = NewBoard(n,p) 

を持ってそれは(あなたが再びNewBoard()を呼び出さない限り)自動的に「リセット」されません。その他のコードでは、​​ではなくboardを参照してください。

+0

ありがとう!だからシンプルだけど、私はそれを考えなかった。私の悪いああ。 – Nayuru

関連する問題