2016-11-06 2 views
0

연습은 게임을 다시 실행하는 것입니다. 파이썬에서 획기적인; 이것은 초안 같은 게임이며, 보드는 n 라인이고 p 행입니다.게임 보드는 항상 초기 상태로 리셋됩니다. 파이썬

나는이 기능을 내 게임 보드를 시작 :

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 

그러나이 기능은 게임의 초기 상태이기 때문에이 항상 보드를 재설정합니다.

내가 주요 게임 기능, 때마다 플레이어 변경을하려고

, 보드 자체를 다시 설정하라는된다
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()를 호출하지 않은 경우) 자동으로 "재설정"되지 않습니다. 나머지 코드에서는 NewBoard(n,p) 대신 board을 참조하십시오.

+0

고마워요! 그렇게 간단하면서도 나는 그것에 대해 생각하지 않았습니다. 내 나쁜 아. – Nayuru

관련 문제