728x90
비 객체 지향 틱택토 게임 코드와 객체 지향 틱텍토 게임 코드 모두 같은 타일에 여러번 둘 수 있는 에러가 있습니다.
추가로 객체 지향 코드에서는 아예 틀린 부분이 존재해서 제보를 한 김에 정리합니다!
isValidSpace 함수의 return 문을 수정함으로써 해결이 가능합니다!
에러라고 하기엔 뭐하지만
비 객체 지향코드에서 게임 진행 자체는 되기는 합니다. 다만 같은 타일에 여러번 두는 것은 안되므로 해결해보았는데요!
비 객체 지향코드에서 게임 진행 자체는 되기는 합니다. 다만 같은 타일에 여러번 두는 것은 안되므로 해결해보았는데요!
[비 객체 지향 코드]
def isValidSpace(board, space):
"""board의 space가 유효한 칸 번호이며, 그 칸이 비어 있을 경우
True를 반환한다."""
# return 0 < int(space) < 10 and (space in ALL_SPACES or board[space] == BLANK)
return space in ALL_SPACES and board[space] == BLANK
책에 나와 있는 주석 부분을 위와 같이 수정해야 같은 타일에 중복으로 둘 수 있는 에러를 해결 할 수 있습니다.
추가로 에러는 아니지만, 부드러운 게임 진행을 위해 main문을 아래와 같이 수정하였습니다.
def main():
"""틱택토 게임을 실행한다."""
print("틱택토 게임에 오신 당신을 환영합니다!")
gameBoard = getBlankBoard() # 틱택토 말판 딕셔너리를 생성한다.
currentPlayer, nextPlayer = X, O # X가 선공, O가 후공
while True:
print(getBoardStr(gameBoard)) # 화면에 말판을 표시한다
# 플레이어가 1-9 사이 숫자를 입력할 때까지 계속해서 요청한다
move = 0
while not isValidSpace(gameBoard, move):
print(f"{currentPlayer}의 움직임은?(1-9)")
move = input()
if move in ALL_SPACES and gameBoard[move] != BLANK:
print("같은 타일을 선택할 수 없습니다!")
[객체 지향 코드]
객체 지향 버전 코드에서는 찐 에러가 있네요
def isValidSpace(self, space):
"""이 말판의 space가 칸을 가리키는 유효한 번호이며, 칸이 비어 있을 경우
True를 반환한다."""
# return 0 < int(space) < 10 and (space in ALL_SPACES or board[space] == BLANK)
return space in ALL_SPACES and self._spaces[space] == BLANK
class 내의 함수이기 때문에 애초에 int(space), board[space] 처럼 사용이 불가능한데, 책에 떡하니 적혀있습니다....
위 처럼 리턴문을 수정하면 같은 타일 중복 에러를 해결 가능합니다.
이번에도 매끄러운 게임 진행을 위해 main문을 아래와 같이 조금 손봤습니다.
def main():
"""틱택토 게임을 실행한다."""
print("틱택토 게임에 오신 당신을 환영합니다!")
gameBoard = TTTBoard() # TTTBoard 객체를 생성한다
currentPlayer, nextPlayer = X, O # X가 선공, O가 후공
while True:
print(gameBoard.getBoardStr()) # 화면에 말판을 표시한다
# 플레이어가 1-9 사이 숫자를 입력할 때까지 계속해서 요청한다
move = None
while not gameBoard.isValidSpace(move):
print(f"{currentPlayer}의 움직임은?(1-9)")
move = input()
if move in ALL_SPACES and not gameBoard.isValidSpace(move):
print("같은 타일을 선택할 수 없습니다.")
모두 즐코!
728x90
반응형
'Python' 카테고리의 다른 글
[Python] 파이썬다운 코드 작성하는 법 (2) | 2023.12.23 |
---|---|
[Python] 코딩 스타일 정립 & 포매팅 자동화 (0) | 2023.12.23 |
[Python] 경로 \ / 둘다 사용하는 법 (0) | 2023.12.22 |
[Python] 에러 메세지 파악과 질문 에티켓 (1) | 2023.12.22 |