2013-03-26 7 views
0

이것은 tic tac toe 게임에 관한 이전 질문의 연속입니다. 나는 tic tac toe 보드의 빈 그리드 타일을 모두 모으고 함수를 목록에 반환하는 함수를 만들고 있습니다. 이 함수는 이동에 인접한 빈 격자 타일을 계속 찾고 있다는 점에서 재귀 적입니다. 이런 식으로 뭔가 :Tic Tac Toe - 빈 격자 타일 찾기

<-------> 
< X O - > 
< - - X > 
< O X - > 
<-------> 

그래서 (또는이 경우에는, 나는 컴퓨터에 대한 재생 컴퓨터에 대해 쓴 코드) 타일을 따기에 의해 비어있는 무엇을 격자 타일 알고 싶어하는 사용자를 말할 수 있습니다. 위의 예를 들어, 타일

0 1 2 
3 4 5 
6 7 8 

을 번호 등 컴퓨터가 타일 1 선택했다 말할 수 것 - 그것은 (이 경우, 위, 왼쪽, 오른쪽, 그리고 하단에) 인접한 타일을 검색 할 참조 그것이 움직일 수 있다면. 인접한 타일이 비어있는 것으로 판명되면, 모든 가능성을 다 소모 할 때까지 해당 타일의 인접한 타일을 찾습니다. 따라서 현재 보드와 playerMove로 함수를 호출하고 비어있는 인접한 타일을 찾아서 목록에 추가 할 수 있기를 원합니다. 어떤 팁?

def whatIsEmpty(moveList,move): 
    emptyTiles = [] 
    #something that allows you to find the adjacent tiles of the move 
    #something that allows you to find the adjacent tiles of the tiles found above, until all are found 

나는 이것을 위해 몇 개의 루프가 필요하다는 것을 알고 있지만 시작하는 방법을 모르겠다. 내가 아는 것은 가상의 3x3 그리드 가운데에서 움직이고 싶고 인접한 타일이 비어 있는지 확인하는 것입니다. 그래서 2D 목록에서, I는 다음과 같이 사용합니다 : 그 대응의 각 상단으로

moveList[x-1][y] 
moveList[x][y+1] 
moveList[x+1][y] 
moveList[x][y+1] 

이, 오른쪽, 왼쪽, 아래를,이 반복적으로 사용됩니다. 모든 팁을 크게 주시면 감사하겠습니다.

답변

1

이 시나리오에서는 재귀 전략이 적합하지 않을 수 있습니다. 자신이 제공 한 예를 생각해보십시오.

<-------> 
< X O - > 
< - - X > 
< O X - > 
<-------> 

다음 타일이 중간 타일에서 만들어진 것으로 가정합니다. 재귀 함수가 인접한 네 개의 타일 만 검사하는 경우 나머지 타일 ("오른쪽 하단")에서 "잘라낸"타일을 놓치게됩니다. 그리고 만약 당신이 8 개의 인접한 타일 (대각선으로 인접한 것을 포함하여)을 검사하는 함수를 작성한다면 반복적으로 쓸 수도 있습니다.

for i in range(3): 
    for j in range(3): 
     pass # Replace with code to add empty tile to list 
+0

그래도 난 그것을 설정하기 위해 노력하고있어 방법은, 그것은 이동을 위해 인접한 타일을 발견하면, 그것은 등등 모든 타일의 인접한 타일을 찾아 내고,이다, 그래서 결국 얻을 것이다 하나. 거기에 도움을 줄 수 있습니까? 그리고 고마워! – user3455764