Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tic Tac Toe
#1
So, I was working on this for a few days, and i was finally able to make a simple tic tac toe game. It's pretty fun and I personally enjoyed making it Big Grin . Here's the code:

from __future__ import print_function
import random
import os
import sys 
clear = lambda : os.system('cls')
def display_board(board):
    clear()
    print('   |   |')
    print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
    print('   |   |')
    print('-----------')
    print('   |   |')
    print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
    print('   |   |')
    print('-----------')
    print('   |   |')
    print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
    print('   |   |')
def player_input():
    marker = ' '
    while not (marker == 'X' or marker == 'O'):    
        marker = input('Choose O or X to play! ').upper()
    if marker == 'X':
        return ('X','O')
    else:
        return ('O','X')
def place_marker(board,marker,postion):
    board[position] = marker
def win_check (board,mark):
    return ((board[7] == mark and board[8] == mark and board[9] == mark) or 
    (board[4] == mark and board[5] == mark and board[6] == mark) or 
    (board[1] == mark and board[2] == mark and board[3] == mark) or 
    (board[7] == mark and board[4] == mark and board[1] == mark) or 
    (board[8] == mark and board[5] == mark and board[2] == mark) or 
    (board[9] == mark and board[6] == mark and board[3] == mark) or 
    (board[7] == mark and board[5] == mark and board[3] == mark) or 
    (board[9] == mark and board[5] == mark and board[1] == mark)) 
def choose_first():
    if random.randint(0,1) == 0:
        return 'Player 1'
    else:
        return 'Player 2'
def check_space(board,position):
    return board[position] == ' ' 
def full_board_check (board):
    for i in range (1,10):
        if check_space(board,i):
            return False
    return True
def player_choice (board):
    position = ' '
    while position not in '1 2 3 4 5 6 7 8 9'.split() or not check_space(board, int(position)):
        position = input('Choose number input 1-9 : ')
    return int(position)
def replay():

    return input('Do you want to play again? Enter Yes or No: ').lower().startswith('y')
print('Welcome to Tic Tac Toe Game!')

while True:
    theBoard = [' '] * 10
    player1_marker, player2_marker = player_input()
    turn = choose_first()
    print(turn + ' will go first.')
    game_on = True

    while game_on:
        if turn == 'Player 1':
            display_board(theBoard)
            position = player_choice(theBoard)
            place_marker(theBoard, player1_marker, position)

            if win_check(theBoard, player1_marker):
                display_board(theBoard)
                print('Congratulations! You have won the game!')
                game_on = False
            else:
                if full_board_check(theBoard):
                    display_board(theBoard)
                    print('The game is a draw!')
                    break
                else:
                    turn = 'Player 2'
        else:
            display_board(theBoard)
            position = player_choice(theBoard)
            place_marker(theBoard, player2_marker, position)

            if win_check(theBoard, player2_marker):
                display_board(theBoard)
                print('Player 2 has won!')
                game_on = False
            else:
                if full_board_check(theBoard):
                    display_board(theBoard)
                    print('The game is a tie!')
                    break
                else:
                    turn = 'Player 1'
    if not replay():
        break
And the output:
Output:
Choose O or X to play! X Player 1 will go first. sh: cls: command not found | | | | | | ----------- | | | | | | ----------- | | | | | | Choose number input 1-9 : 5 sh: cls: command not found | | | | | | ----------- | | | X | | | ----------- | | | | | | Choose number input 1-9 : 7 sh: cls: command not found | | O | | | | ----------- | | | X | | | ----------- | | | | | | Choose number input 1-9 : 8 sh: cls: command not found | | O | X | | | ----------- | | | X | | | ----------- | | | | | | Choose number input 1-9 : 2 sh: cls: command not found | | O | X | | | ----------- | | | X | | | ----------- | | | O | | | Choose number input 1-9 : 4 sh: cls: command not found | | O | X | | | ----------- | | X | X | | | ----------- | | | O | | | Choose number input 1-9 : 6 sh: cls: command not found | | O | X | | | ----------- | | X | X | O | | ----------- | | | O | | | Choose number input 1-9 : 1 sh: cls: command not found | | O | X | | | ----------- | | X | X | O | | ----------- | | X | O | | | Choose number input 1-9 : 9 sh: cls: command not found | | O | X | O | | ----------- | | X | X | O | | ----------- | | X | O | | | Choose number input 1-9 : 3 sh: cls: command not found | | O | X | O | | ----------- | | X | X | O | | ----------- | | X | O | X | |
pyzyx3qwerty
"The greatest glory in living lies not in never falling, but in rising every time we fall." - Nelson Mandela
Need help on the forum? Visit help @ python forum
For learning more and more about python, visit Python docs
Reply
#2
nice congratulation
Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020