New submission from HAYDEN NGUYEN <1071...@lcps.org>:

Here is my code:
import random
def drawBoard(board):
    print(board[7] + '|' + board[8] + '|' + board[9])
    print('-+-+-')
    print(board[4] + '|' + board[5] + '|' + board[6])
    print('-+-+-')
    print(board[1] + '|' + board[2] + '|' + board[3])

def inputPlayerLetter():
    letter=''
    while not (letter=="X" or letter=="O"):
        print('Do you want to be X or O?')
        letter=input.upper()
        if letter =='X':
            return['X','O']
        else:
            return['O','X']

def whoGoesFirst():
    if random.randint(0,1) == 0:
        return 'computer'
    else:
        return 'player'

def makeMove(board,letter,move):
    board[move]=letter

def isWinner(bo,le):
     return ((bo[7] == le and bo[8] == le and bo[9] == le) or
            ((bo[4] == le and bo[5] == le and bo[6] == le) or
            ((bo[1] == le and bo[2] == le and bo[3] == le) or
            ((bo[7] == le and bo[4] == le and bo[1] == le) or
            ((bo[8] == le and bo[5] == le and bo[2] == le) or
            ((bo[9] == le and bo[6] == le and bo[3] == le) or
            ((bo[7] == le and bo[5] == le and bo[3] == le) or
            ((bo[9] == le and bo[5] == le and bo[1] == le))
def getBoardCopy(board):
    boardCopy=[]
    for i in board:
        boardCopy.append(i)
    return boardCopy

def isSpaceFree(board,move):
    return board[move] == ''

def getPlayerMove(board):
    move=''
    while move not in '1 2 3 4 5 6 7 8 9'.split() or not
      isSpaceFree(board,int(move)):
        print('What is your next move? (1-9)')
        move=input()
    return int(move)

def chooseRandomMoveFromList(board,movesList):
    possibleMoves=[]
    for i in movesList:
        if isSpaceFree(board,i):
            possibleMoves.append(i)

    if len(possibleMoves) != 0:
        return random.choice(possibleMoves)
    else:
        return None

def getComputerMove(board,computerLetter):
    if computerLetter=='X':
        playerLetter=='O'
    else:
        playerLetter=='X'

    for i in range(1,10):
        boardCopy=getBoardCopy(board)
        if isSpaceFree(boardCopy,i):
            makeMove(boardCopy,computerLetter,i)
            if isWinner(boardCopy,playerLetter):
                return i

    move=chooseRandomMoveFromList(board, [1,3,7,9])
    if move!=None:
        return move

    if isSpaceFree(board,5):
        return 5

    return chooseRandomMoveFromList(board, [2,4,6,8])

def isBoardFull(board):
    for i in range(1,10):
        if isSpaceFree(board,i):
            return False 
        for i in range(1,10):
            if isSpaceFree(board,i):
                return False
        return True
    print('Welcome to Tic-Tac-Toe')

while True:
    theBoard=[''] * 10
    playerLetter, computerLetter=inputPlayerLetter()
    turn=whoGoesFirst()
    print('The ' + turn + ' will go first.')
    gameIsPlaying=True

    while gameIsPlaying:
        if turn=='player':
            drawBoard(theBoard)
            move=getPlayerMove(theBoard)
            makeMove(theBoard,playerLetter,move)

            if isWinner(theBoard,playerLetter):
                drawBoard(theBoard)
                print('Hooray! You have won the game!')
                gameIsPlaying=False
            else:
                if isBoardFull(theBoard):
                    drawBoard(theBoard)
                    print('The game is a tie!')
                    break
                else:
                    turn='computer'

    else:
        move=getComputerMove(theBoard, computerLetter)
        makeMove(theBoard,computerLetter,move)

        if isWinner(theBoard,computerLetter):
            drawBoard(theBoard)
            print('The computer has beat you! You lose.')
            gameIsPlaying=False
        else:
            if isBoardFull(theBoard):
                drawBoard(theBoard)
                print('The game is a tie!')
                break
            else:
                turn='player'
    print('Do you want to play again! (yes or no)')
    if not input().lower().startswith('y'):
        break
On def getBoardCopy(board):, it says "SyntaxError:invalid syntax". I looked 
through the code and found nothing wrong. Why is this?

----------
assignee: terry.reedy
components: IDLE
files: tic_tac_toe.py
messages: 410720
nosy: 1071754, terry.reedy
priority: normal
severity: normal
status: open
title: SyntaxError for no reason
versions: Python 3.9
Added file: https://bugs.python.org/file50565/tic_tac_toe.py

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue46403>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to