Welcome to HBH! If you had an account on hellboundhacker.org you will need to reset your password using the Lost Password system before you will be able to login.

Simple text-based Tic Tac Toe - Python Code Bank


Simple text-based Tic Tac Toe
A simple tic tac toe game. The code might not be the most elegant but it's readable.
                X = 1
O = 2

X_input = 0
O_input = 0

#########
# 0 1 2 #
# 3 4 5 #
# 6 7 8 #
#########

board = \
{
    0:".", 1:".", 2:".",
    3:".", 4:".", 5:".",
    6:".", 7:".", 8:"."
}

def winner(arg):
    if arg == X:
        print "X wins!"
    if arg == O:
        print "O wins!"
    if arg == 0:
		print "Draw!"

def draw_board():
    print board[0], board[1], board[2]
    print board[3], board[4], board[5]
    print board[6], board[7], board[8]

def check_if_won(arg):
    if arg == X:
        # Horizontals
        if board[0] == "X" and board[1] == "X" and board[2] == "X":
            winner(X)
            return 1
        if board[3] == "X" and board[4] == "X" and board[5] == "X":
            winner(X)
            return 1
        if board[6] == "X" and board[7] == "X" and board[8] == "X":
            winner(X)
            return 1
        # Diagonals
        if board[0] == "X" and board[4] == "X" and board[8] == "X":
            winner(X)
            return 1
        if board[2] == "X" and board[4] == "X" and board[6] == "X":
            winner(X)
            return 1
        # Verticals
        if board[0] == "X" and board[3] == "X" and board[6] == "X":
            winner(X)
            return 1
        if board[1] == "X" and board[4] == "X" and board[7] == "X":
            winner(X)
            return 1
        if board[2] == "X" and board[5] == "X" and board[8] == "X":
            winner(X)
            return 1
            
    if arg == O:
        # Horizontals
        if board[0] == "O" and board[1] == "O" and board[2] == "O":
            winner(O)
            return 1
        if board[3] == "O" and board[4] == "O" and board[5] == "O":
            winner(O)
            return 1
        if board[6] == "O" and board[7] == "O" and board[8] == "O":
            winner(O)
            return 1
        # Diagonals
        if board[0] == "O" and board[4] == "O" and board[8] == "O":
            winner(O)
            return 1
        if board[2] == "O" and board[4] == "O" and board[6] == "O":
            winner(O)
            return 1
        # Verticals
        if board[0] == "O" and board[3] == "O" and board[6] == "O":
            winner(O)
            return 1
        if board[1] == "O" and board[4] == "O" and board[7] == "O":
            winner(O)
            return 1
        if board[2] == "O" and board[5] == "O" and board[8] == "O":
            winner(O)
            return 1
        if board[0] != "." and board[1] != "." and board[2] != "."\
        and board[3] != "." and board[4] != "." and board[5] != "."\
        and board[6] != "." and board[1] != "." and board[1] != ".":
			winner(0)
			return 1

def game_loop():
    draw_board()
    while True:
        X_input = raw_input("X: ")
        if int(X_input) > 8:
            return 1
        if board[int(X_input)] != X and board[int(X_input)] != O:
            board[int(X_input)] = "X"
            if check_if_won(X) == 1:
                return 1
            break
    draw_board()
    while True:
        O_input = raw_input("O: ")
        if int(O_input) > 8:
            return 1
        if board[int(O_input)] != X and board[int(O_input)] != O:
            board[int(O_input)] = "O"
            if check_if_won(O) == 1:
                return 1
            break
            
while 1:
    if game_loop() == 1:
        break

            
Comments
Sorry but there are no comments to display