D10d3 icon

Tic-Tac-Toe.py for Python 2.7

D10d3 | PRO | 09/28/14 07:02:56 PM UTC | 0 ⭐ | 642 👁️ | Never ⏰ | []
Python |

6.34 KB

|

None

|

0 👍

/

0 👎

# Python Tic-Tac-Toe by D10d3
# Goals:
#   play tic tac toe with computer
# Optional future goals
#   ask to play again
#   keep score of games
#   ask player if X or O
#   ask player if they want to go first
#   Better Computer Logic
#**********************************************************************************************
 
# SETUP
import os
os.system('cls') #Clears the screen on windows machines
import random
board = [' ',' ',' ',' ',' ',' ',' ',' ',' ']
 
#Sub Routines
def ClearScreen():
    os.system('cls') #Clears the screen on windows machines
    
def ClearBoard():# assign board variables using a list numbered 0-8 for the 9 slots, defaulting to ' ' as empty
    board = [' ',' ',' ',' ',' ',' ',' ',' ',' ']
 
def PrintExampleBoard (): #Example board to for player move selection
    print "-------------"
    print "| 1 | 2 | 3 |"
    print "-------------"
    print "| 4 | 5 | 6 |"
    print "-------------"
    print "| 7 | 8 | 9 |"
    print "-------------\n"
    
def PrintBoard (): #Prints the current board
    print "Current Board Positions:"
    print "-------------"
    print "|", board[0] , "|" , board[1] , "|" , board[2] , "|"
    print "-------------"
    print "|", board[3] , "|" , board[4] , "|" , board[5] , "|"
    print "-------------"
    print "|", board[6] , "|" , board[7] , "|" , board[8] , "|"
    print "-------------\n"
 
def PlayerTurn(board): #player selects move and it checks if it's valid and applies it to the board
    valid = False
    while not valid:
        print "Select a square to mark (1-9):"
        p_choice = raw_input('>')
        if p_choice == '1' or '2' or '3' or '4' or '5' or '6' or '7' or '8' or '9':
            valid = True
        else:
            print '"' , p_choice , 'is not a valid move'
            valid = False
        if p_choice == "1" and board[0] == " ":
            board[0] = "X"
        elif p_choice == "2" and board[1] == " ":
            board[1] = "X"
        elif p_choice == "3" and board[2] == " ":
            board[2] = "X"
        elif p_choice == "4" and board[3] == " ":
            board[3] = "X"
        elif p_choice == "5" and board[4] == " ":
            board[4] = "X"
        elif p_choice == "6" and board[5] == " ":
            board[5] = "X"
        elif p_choice == "7" and board[6] == " ":
            board[6] = "X"
        elif p_choice == "8" and board[7] == " ":
            board[7] = "X"
        elif p_choice == "9" and board[8] == " ":
            board[8] = "X"
        else:
            print '"' , p_choice , '" is not a valid move'
            valid = False
    return board
 
def ComputerTurn(board): #Computer selects move and it checks if it's valid and applies it to the board
    valid = False
    while not valid:
        ComputerOptions = ['1','2','3','4','5','6','7','8','9']
        p_choice = random.choice(ComputerOptions)
        valid = True
        if p_choice == "1" and board[0] == " ":
            board[0] = "O"
        elif p_choice == "2" and board[1] == " ":
            board[1] = "O"
        elif p_choice == "3" and board[2] == " ":
            board[2] = "O"
        elif p_choice == "4" and board[3] == " ":
            board[3] = "O"
        elif p_choice == "5" and board[4] == " ":
            board[4] = "O"
        elif p_choice == "6" and board[5] == " ":
            board[5] = "O"
        elif p_choice == "7" and board[6] == " ":
            board[6] = "O"
        elif p_choice == "8" and board[7] == " ":
            board[7] = "O"
        elif p_choice == "9" and board[8] == " ":
            board[8] = "O"
        else:
            valid = False
    return board
 
def DidPlayerWin(board,Playing):
    # 3 Across Wins
    if board[0] == "X" and board [1] == "X" and board[2] == "X":
        ClearScreen()
        PrintBoard()
        print "You Win!"
        quit()
    elif board[3] == "X" and board [4] == "X" and board[5] == "X":
        ClearScreen()
        PrintBoard()
        print "You Win!"
        quit()
    elif board[6] == "X" and board [7] == "X" and board[8] == "X":
        ClearScreen()
        PrintBoard()
        print "You Win!"
        quit()
    # 3 Down Wins
    elif board[0] == "X" and board [3] == "X" and board[6] == "X":
        ClearScreen()
        PrintBoard()
        print "You Win!"
        quit()
    elif board[1] == "X" and board [4] == "X" and board[7] == "X":
        ClearScreen()
        PrintBoard()
        print "You Win!"
        quit()
    elif board[2] == "X" and board [5] == "X" and board[8] == "X":
        ClearScreen()
        PrintBoard()
        print "You Win!"
        quit()
    # Diagonal Wins
    elif board[0] == "X" and board [4] == "X" and board[8] == "X":
        ClearScreen()
        PrintBoard()
        print "You Win!"
        quit()
    elif board[2] == "X" and board [4] == "X" and board[6] == "X":
        ClearScreen()
        PrintBoard()
        print "You Win!"
        quit()
    # No Win
    else:
        Playing = True
    return Playing
    
def DidComputerWin(board,Playing):
    # 3 Across Wins
    if board[0] == "O" and board [1] == "O" and board[2] == "O":
        ClearScreen()
        PrintBoard()
        print "The Computer Wins"
        quit()
    elif board[3] == "O" and board [4] == "O" and board[5] == "O":
        ClearScreen()
        PrintBoard()
        print "The Computer Wins"
        quit()
    elif board[6] == "O" and board [7] == "O" and board[8] == "O":
        ClearScreen()
        PrintBoard()
        print "The Computer Wins"
        quit()
    # 3 Down Wins
    elif board[0] == "O" and board [3] == "O" and board[6] == "O":
        ClearScreen()
        PrintBoard()
        print "The Computer Wins"
        quit()
    elif board[1] == "O" and board [4] == "O" and board[7] == "O":
        ClearScreen()
        PrintBoard()
        print "The Computer Wins"
        quit()
    elif board[2] == "O" and board [5] == "O" and board[8] == "O":
        ClearScreen()
        PrintBoard()
        print "The Computer Wins"
        quit()
    # Diagonal Wins
    elif board[0] == "O" and board [4] == "O" and board[8] == "O":
        ClearScreen()
        PrintBoard()
        print "The Computer Wins"
        quit()
    elif board[2] == "O" and board [4] == "O" and board[6] == "O":
        ClearScreen()
        PrintBoard()
        print "The Computer Wins"
        quit()
    # No Win
    else:
        Playing = True
    return Playing
 
def IsDraw(board,Playing):#Determines if the game ended in a draw
    if board[0] != " " and board[1] != " " and board[2] != " " and board[3] != " " and board[4] != " " and board[5] != " " and board[6] != " " and board[7] != " " and board[8] != " ":
        ClearScreen()
        PrintBoard()
        print "The Game Ended in a Draw"
        quit()
    else:
        Playing = True
    return Playing
    
#Introduction
print "lets play Tic-Tac-Toe"
print "You are X's and get to go first\n"
raw_input ("Press Any Key To Begin")
 
#Game Loop  
Playing = True
while Playing == True:
    ClearScreen()
    PrintBoard()
    PrintExampleBoard()
    board = PlayerTurn(board)
    Playing = DidPlayerWin(board,Playing)
    Playing = IsDraw(board,Playing)
    board = ComputerTurn(board)
    Playing = DidComputerWin(board,Playing)
    Playing = IsDraw(board,Playing)

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎