0

정의되지 않은 :나가서 설명하자면 NameError : 전역 이름 'Player1_row은'나는 AI에 대해이 콩알 만 발가락 게임 (나는 지금 AI를 개선하고) 쓴

Matrix = [[0, 0, 0], 
      [0, 0, 0], 
      [0, 0, 0]] 
Matrix_2 = [[" ", " ", " "], 
      [" ", " ", " "], 
      [" ", " ", " "]] 
def turnX(): 
    Player1_row = int(raw_input("P1 What row do you want?")) 
    Player1_row = Player1_row - 1 
    Player1_column = int(raw_input("P1 What column do you want?")) 
    Player1_column = Player1_column - 1 
    if Player1_row > Matrix: 
     turnX() 
    if Player1_column > Matrix: 
     turnX() 
    if (1 == Matrix[Player1_column][Player1_row] or 500 == Matrix[Player1_column][Player1_row]): 
     print "This is an invaild move!" 
     turnX() 
    else: 
     Matrix[Player1_column][Player1_row] = 1 
     Matrix_2[Player1_column][Player1_row] = "X" 

def turnY(): 
     global Player1_row 
     Player2_row = int(random.randint(1, boardX)) 
     Player2_row = Player2_row - 1 
     Player2_column = int(random.randint(Player1_row, boardY)) 
     Player2_column = Player2_column - 1 
     if (1 == Matrix[Player2_column][Player2_row] or 500 == Matrix[Player2_column][Player2_row]): 
      turnY() 
     else: 
      print "AI Turn:" 
      Matrix[Player2_column][Player2_row] = 500 
      Matrix_2[Player2_column][Player2_row] = "O" 

을하지만이 오류가 점점 오전 :

NameError: global name 'Player1_row' is not defined`. 

저는 AI가 플레이어의 마지막 움직임을 차단하려고합니다.

+0

함수'turnX()'의 변수'Player1_row'는 로컬입니다. 'turnX()'가 리턴하자마자 파괴되고,'turnY()'에서는 접근 할 수 없다. 'global Player1_row'를'turnX()'에 추가 할 수 있습니다. – DyZ

+0

파이썬은 어떤 줄에 문제가 있었는지 보여주는 스택 추적을 제공했습니다. 전체 추적을 게시하십시오. 파이썬은 당신에게 말했지만, 문제가있는 곳을 찾기 위해 코드를 파헤 치기를 기대합니다! – tdelaney

답변

0

Player1_row는 전역 변수가 아니고 turn_X 함수의 지역 변수입니다.

이 문제를 해결하려면 Player1_row를 차례대로 전역 변수로 설정하십시오.