PYTHON: Noughts and Crosses
16:57 12 Jan 2017

I have created a multiplayer game of Noughts and Crosses using Python 3. I have got all of my code to work except for the check loop.

The check loop will each time a new symbol is entered if it is a winning move or if the board is full. Currently, my code does not finish after one player inputs 3 symbols in a row or the board becomes full.

This is my code so far:

import random

def start_player():

    startplayer = random.randint(1,2)
    if startplayer == 1:
        turn = 'X'
        print("Player One (X) will start the game.")
    else:
        startplayer == 2
        turn = 'O'
        print("Player Two (O) will start the game.")
    return turn

def getmove():

    row = int(input("Please enter a number between 0 and 2: "))
    column = int(input("Please enter a number between 0 and 2: "))
    while grid[row][column] != "":
        print("Invalid move.")
        row = int(input("Please enter a number between 0 and 2: "))
        column = int(input("Please enter a number between 0 and 2: ")) 
    return row, column

def mainturn(row, column):

    global countmove
    countmove = countmove + 1
    global symbol
    grid[row][column] = symbol

    for y in range(0,(len(grid))):
        print(grid[y])
    if symbol == 'X':
        symbol = 'O'
    elif symbol == 'O':
        symbol = 'X'
    return countmove

def check_win(row, column, symbol):    

    if (grid[0][0] and grid[0][1] and grid[0][2] == symbol) or (grid[1][0] and grid[1][1] and grid[1][2] == symbol) or (grid[2][0] and grid[2][1] and grid[2][2] == symbol) or (grid[0][0] and grid[1][0] and grid[2][0] == symbol) or (grid[0][1] and grid[1][1] and grid[2][1] == symbol)or (grid[0][2] and grid[1][2] and grid[2][2] == symbol)or (grid[0][0] and grid[1][1] and grid[2][2] == symbol) or (grid[2][0] and grid[1][1] and grid[0][2] == symbol):
        print("Well done!",symbol," won the game.")
        return true
    elif countmove == 9:
        print("Board Full. Game over.")


#main program
grid = [["","",""],["","",""],["","",""]]

countmove = 0
win = 'false'

for y in range(0,(len(grid))):

    print(grid[y])

symbol = start_player()

while countmove != 9 or win == 'false':

    countmove = 0
    row, column = getmove()
    mainturn(row,column)
    win = check_win(row,column, symbol)
python loops