ai와 겨루는 3*3 틱텍토 게임 구현 코드를 짜는 중에 오류가 생겼습니다.
조회수 216회
안녕하세요. 인공지능을 처음 공부하고 있는 대학생입니다. 인공지능 프로그래밍을 공부하는 도중에 파이썬 프로그램을 통해서 ai와 겨루는 3*3 틱텍토 게임을 만들어보는 실습을 진행해 보았습니다. 실습은 코드를 따라하는 방식으로 진행되었는데요, 이 코드가 완전하지 않은 코드라고 합니다. 그런데 무엇이 빠졌는지 잘 모르겠어요. 그리고 일단 책에 나와있는 코드를 빠짐없이 다 써보고 구동시켜본 결과 choosePlayer, drawingBoard, putPlayerStone, checkWinner, putAIStone 등 이런 변수가 정의되지 않았다는 오류가 뜹니다. 이럴 때는 어떻게 해결해야 하나요? 알려주신다면 정말 감사하겠습니다!!
if __name__ == "__main__":
while True:
gameScreen = [",",",",",",",",""]
player, AI = choosePlayer()
drawingBoard(gameScreen)
if player == 'X':
while True:
putPlayerStone(gameScreen, player)
checkWinner(gameScreen, player, AI)
drawingBoard(gameScreen)
putAIStone(gameScreen, player, AI)
checkWinner(gameScreen, player, AI)
drawingBoard(gameScreen)
def choosePlayer():
print('대문자 영문자 X 또는 O 입력')
while True:
chosen = input('대문자 영문자 X 또는 O 입력') #
if chosen!='O' and chosen !='X':
print('영문자 O 또는 X를 다시 입력하세요.')
continue
elif chosen == 'O':
return 'O','X'
elif chosen == 'X':
return 'X','O'
def drawingBoard(screen):
print()
print('____________________________________________')
print(' '+screen[6]+' '+'|'+' '+screen[7]+' '+'|'+' '+screen[8])
print('____________________________________________')
print(' '+screen[3]+' '+'|'+' '+screen[4]+' '+'|'+' '+screen[5])
print('____________________________________________')
print(' '+screen[0]+' '+'|'+' '+screen[1]+' '+'|'+' '+screen[2])
print('____________________________________________')
print()
def putPlayerStone(screen, mark):
while True:
print('>>돌 위치 선택: ',end='') #end=''는 하나의 명령어이다
position = input()
if position not in ['1','2','3','4','5','6','7','8','9']:
continue
if screen[int(position)-1]!= '':
continue
else:
break
screen[int(position)-1] = mark
return position, screen
def putAIStone (screen, player, AI):
AI_willPut_here=[]
Put_player = [0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(0,9):
if player == screen[i]:
Put_player[i] = True
Put_AI = [0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(0,9):
if AI == screen[i]:
Put_AI[i] = True
hldx = 8
while hldx >= 2:
if Put_AI[hldx -1]==True:
if Put_AI [hldx -1-1]==True:
AI_willPut_here.append(hldx -1+1)
elif Put_player[hldx-1+1] == True:
AI_willPut_here.append(hldx -1-1)
elif Put_AI[hldx -1-1] == True and Put_AI[hldx -1+1] == True:
AI_willPut_here.append(hldx -1)
hldx -= 3
vldx = 4
while vldx <= 6:
if Put_AIr[vldx -1] == True:
if Put_AI[vldx-1+3] == True:
AI_willPut_here.append(vldx -1-3)
elif Put_AI[vldx -1-3] == True:
AI_willPut_here.append(vldx -1+3)
elif Put_AI[vldx -1+3] == True and Put_AI[vldx -1-3] == True:
AI_willPut_here.append(vldx -1)
vldx += 1
if Put_AI[5-1] == True:
if Put_AI[7-1] == True:
AI_willPut_here.append(3-1)
elif Put_AI[7-1] == True:
AI_willPut_here.append(3-1)
elif Put_AI[7-1] == True:
AI_willPut_here.append(3-1)
elif Put_AI[7-1] == True:
AI_willPut_here.append(3-1)
if Put_AI[7-1] == True and Put_AI[3-1] == True:
AI_willPut_here.append(5-1)
if Put_AI[9-1] == True and Put_AI[1-1] == True:
AI_willPut_here.append(5-1)
for i in range(0,len(AI_willPut_here)):
if screen[AI_willPut_here[i]] == '':
available.append(AI_willPut_here[i])
available = random.choice(available)
screen[int(available)] = AI
return screen
def checkWinner(screen,player,AI):
playerPut = [0, 0, 0, 0, 0, 0, 0, 0, 0]
for i in range(0.9):
if player == screen[i]:
playerPut[i] = True
vldx = 7
while vldx <= 9:
if playerPut[vldx-1] == True and playerPut[vldx-1-3] == True and playerPut[vldx-1-6] == True:
playerWin(screen)
return True
vldx += 1
hldx = 7
while hldx >= 1:
if playerPut[hldx-1] == True and playerPut[hldx-1+1] == True and playerPut[hldx-1+2] == True:
playerWin(screen)
return True
hldx -= 3
if playerPut[7-1]==True and playerPut[5-1]==True and playerPut[3-1]==True:
playerWin(screen)
return True
elif playerPut[9-1]==True and playerPut[5-1]==True and playerPut[1-1]==True:
playerWin(screen)
return True
for i in range(0,9):
if screen[i]=='':
break
elif i==8:
drawingGameScreen(screen)
print('무승부')
return True
'''
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
일단 중간에
Put_AIr
오타가 있구요.random.choice(available)
를 하려면 먼저 randome 모듈을 import 해야 합니다.그리고 가장 처음의:
if __name__ == "__main__": while True: gameScreen = [",", ",", ",", ",", ""] player, AI = choosePlayer() drawingBoard(gameScreen) if player == 'X': while True: putPlayerStone(gameScreen, player) checkWinner(gameScreen, player, AI) drawingBoard(gameScreen) putAIStone(gameScreen, player, AI) checkWinner(gameScreen, player, AI) drawingBoard(gameScreen)
이 부분은 함수 정의 다음, 그러니까 맨 아래로 내려가야 합니다.
하지만 그래도 문제가 해결되지 않습니다.
playerWin()
,drawingGameScreen()
함수가 없거든요. 책에 이 함수 정의가 없는지 찾아보세요.
댓글 입력