티스토리 뷰
+ 2021-11-14 내용 추가
네이버 코딩 커뮤니티인 코뮤니티라는 카페에서
TIC-TAC-TOE 게임에 대해 참고자료로 이 포스팅을 추천해주신 것을 보았습니다.
보잘 것 없는 포스팅이지만 추천해주셔서 감사드립니다.
조금이라도 도움이 되었으면 좋겠습니다.
이해가 잘 안가는 부분이 있거나 추가로 궁금한 부분을 댓글로 달아주시면
제가 열심히 답변드리겠습니다. 댓글은 항시 확인하고 있습니다.
그럼 본론으로 들어가보죠!
TIC-TAC-TOE 게임이란
3행 3열의 판에서
가로, 세로, 대각선 중
동일한 심볼을 먼저 만들면
승리하는 게임이다.
이를 파이썬으로 만들어보자.
1. 먼저 게임판의 내부 값들을 공백으로 초기화한다.
1
|
board = [[" " for x in range(3)] for y in range(3)]
|
cs |
리스트 함축 방법을 사용하여,
3 X 3 형태로 만들었다.
0 | 1 | 2 | |
0 | " " | " " | " " |
1 | " " | " " | " " |
2 | " " | " " | " " |
2. 게임판을 그려보자.
실질적으로 눈에 보이는
게임판의 형식을 만든다.
1
2
3
4
|
for r in range(3):
print(" ", board[r][0], "| ", board[r][1], "| ", board[r][2])
if (r != 2):
print("----|----|----")
|
cs |
첫 번째 행일 때,
이렇게 그려주고 난 후
행 인덱스가 2가 아니면(셋째 행이 아니면)
이렇게 그린다.
의 형태가 된다.
두 번째 행일 때,
를 추가,
를 추가하여
의 형태가 된다.
세 번째 행일 때는,
r == 2가 돼버리므로
만 추가하여
최종적으로
의 모양이 된다.
- 와 | 의 개수를 조정하여
보기 좋게 만드는 과정이
필요했다.
3. 사용자로부터 좌표 입력받기
1
2
|
x = int(input("다음 수의 x 좌표를 입력하시오 : "))
y = int(input("다음 수의 y 좌표를 입력하시오 : "))
|
cs |
4. 사용자가 입력한 좌표 검사
1
2
3
4
5
|
if board[x][y] != " ":
print("잘못된 위치입니다.")
continue
else:
board[x][y] = "X"
|
cs |
게임판의 심볼이
비워져 있어야
X, O 표시가 가능하다.
이미 있는 자리에
또 심볼을 둘 수 없기 때문이다.
그러므로,
심볼이 공백이 아니면
둘 수 없도록
잘못된 위치라는 내용을 출력하고
다시 게임판을 출력한다.
표시가 없는 자리인 경우
"X"를 표시하여
사용자가 선점한다.
5. 컴퓨터가 놓을 위치 정하기
1
2
3
4
5
6
7
8
|
done = False
for i in range(3):
for j in range(3):
if board[i][j] == " " and not done:
board[i][j] = "O"
done = True
break
|
cs |
3행 3열을
순차적으로 반복하여
가능한 자리를 찾는다.
빈 자리이고
done = False이면
"O"를 표시하고
그 자리는 컴퓨터의 심볼이 차지한다.
이후 다시 사용자가
자리를 고르도록 한다.
가장 먼저 존재하는
빈 자리를 찾는 것이다.
1번의 초기화 작업을 제외하고
모든 코드를
while True: 안에
포함시켜주면 게임이 완성된다.
- TIC-TAC-TOE 게임 최종 결과
- 한마디
컴퓨터가 좀 더
지능적으로 심볼을 두지 못한다는 점에서
아쉽다는 생각이 든다.
칸을 보기좋게 그리는 것은
여러 번의 시도가 필요했다.
차후에는 가로, 세로, 대각선이
먼저 선점되면
WIN, LOSE 등의 결과를
출력해보고 싶다.
'Programming Language > Python basic' 카테고리의 다른 글
[Python] 2차원 리스트 출력, 리스트 안에 다른 리스트 내장 (0) | 2021.04.02 |
---|---|
[Python] 2차원 리스트를 동적으로 생성하고 초기값 부여하기 (0) | 2021.04.02 |
[Python] 연락처 관리 프로그램 (친구 리스트 관리) (0) | 2021.04.02 |
[Python] 선택 정렬 알고리즘을 대체하는 제자리 정렬 구현 (in-place sort) (0) | 2021.04.02 |
[Python] 순차 탐색 구현 + 조건을 만족하는 항목 모두 찾기 (0) | 2021.04.02 |
- Thanks for comming.
- 오늘은
- 명이 방문했어요
- 어제는
- 명이 방문했어요