3x3 틱택토 게임
게임 설명 - 2인용 게임
게임 규칙 - 3 x 3 보드판에 대각선 직선으로 먼저 한줄을 채우는 쪽이 승리한다.
1~9까지의 딕셔너리 생성하기
index = {n:' ' for n in range(1,10)}
보드판 생성
3x3 의 보드판을 생성한다.
def game_board():
board = index[1] + ' | ' + index[2] + ' | ' + index[3] + '\\n------------\\n' + index[4] + ' | ' + index[5] + ' | ' + index[6] + '\\n------------\\n' + index[7] + ' | ' + index[8] + ' | ' + index[9]+'\\n'
print(board)
| |
------------
| |
------------
| |
빈 공간 확인하기
def check_empty(x):
# 빈공간이 아닐경우if index[x] != ' ' :
print("이미 말이 놓아져있습니다. 다시 선택해주세요.")
user = int(input('말을놓아주세요.'))
# 빈공간인지 다시 체크
check_empty(user)
# 빈 공간일 경우 말 놓기else :
index[x] = 'O'
컴퓨터 기능
사용자는 O의 말을 가지고 컴퓨터는 X의 말을 가진다.
컴퓨터는 1~9까지의 랜덤 숫자를 선택하여 빈 공간인지 확인 후 말을 놓는다.
def bot():
bot_think = random.randint(1,9)
if index[bot_think] == ' ' :
index[bot_think] = "X"
else :
bot()
게임 종료 조건
이 부분은 작성하면서 고심을 많이 했지만, 이런식으로 하드코딩하는 방법밖에 떠오르지 않았다.
def game_over():
if index[1] == "O" and index[2] == 'O' and index[3] == "O" :
return True
elif index[1] == "O" and index[5] == 'O' and index[9] == "O" :
return True
elif index[1] == "O" and index[4] == 'O' and index[7] == "O" :
return True
elif index[2] == "O" and index[5] == 'O' and index[8] == "O" :
return True
elif index[3] == "O" and index[5] == 'O' and index[7] == "O" :
return True
elif index[3] == "O" and index[6] == 'O' and index[9] == "O" :
return True
elif index[4] == "O" and index[5] == 'O' and index[6] == "O" :
return True
elif index[7] == "O" and index[8] == 'O' and index[9] == "O" :
return True
elif index[1] == "X" and index[2] == 'X' and index[3] == "X" :
return False
elif index[1] == "X" and index[5] == 'X' and index[9] == "X" :
return False
elif index[1] == "X" and index[4] == 'X' and index[7] == "X" :
return False
elif index[2] == "X" and index[5] == 'X' and index[8] == "X" :
return False
elif index[3] == "X" and index[5] == 'X' and index[7] == "X" :
return False
elif index[3] == "X" and index[6] == 'X' and index[9] == "X" :
return False
elif index[4] == "X" and index[5] == 'X' and index[6] == "X" :
return False
elif index[7] == "X" and index[8] == 'X' and index[9] == "X" :
return False
게임 시작 코드
# 게임 시작
game_on = True
# 보드 출력
game_board()
while game_on :
# 유저 턴
user = int(input('말을 놓아주세요'))
# 빈 공간 확인
check_empty(user)
# 보드 출력
game_board()
# 승리 조건 만족시 게임 종료if game_over() == True :
print("승리하였습니다.")
game_on = False
bot()
# 컴퓨터 승리 조건 만족시 게임 종료if game_over() == False :
print("패배하였습니다.")
game_on = False
game_board()