tic tac toe python

Solutions on MaxInterview for tic tac toe python by the best coders in the world

showing results for - "tic tac toe python"
Mellina
08 Jun 2017
1#Tic Tac Toe game in python by techwithtim
2
3board = [' ' for x in range(10)]
4
5def insertLetter(letter, pos):
6    board[pos] = letter
7
8def spaceIsFree(pos):
9    return board[pos] == ' '
10
11def printBoard(board):
12    print('   |   |')
13    print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
14    print('   |   |')
15    print('-----------')
16    print('   |   |')
17    print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
18    print('   |   |')
19    print('-----------')
20    print('   |   |')
21    print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
22    print('   |   |')
23    
24def isWinner(bo, le):
25    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[1] == le and bo[4] == le and bo[7] == le) or(bo[2] == le and bo[5] == le and bo[8] == le) or(bo[3] == le and bo[6] == le and bo[9] == le) or(bo[1] == le and bo[5] == le and bo[9] == le) or(bo[3] == le and bo[5] == le and bo[7] == le)
26
27def playerMove():
28    run = True
29    while run:
30        move = input('Please select a position to place an \'X\' (1-9): ')
31        try:
32            move = int(move)
33            if move > 0 and move < 10:
34                if spaceIsFree(move):
35                    run = False
36                    insertLetter('X', move)
37                else:
38                    print('Sorry, this space is occupied!')
39            else:
40                print('Please type a number within the range!')
41        except:
42            print('Please type a number!')
43            
44
45def compMove():
46    possibleMoves = [x for x, letter in enumerate(board) if letter == ' ' and x != 0]
47    move = 0
48
49    for let in ['O', 'X']:
50        for i in possibleMoves:
51            boardCopy = board[:]
52            boardCopy[i] = let
53            if isWinner(boardCopy, let):
54                move = i
55                return move
56
57    cornersOpen = []
58    for i in possibleMoves:
59        if i in [1,3,7,9]:
60            cornersOpen.append(i)
61            
62    if len(cornersOpen) > 0:
63        move = selectRandom(cornersOpen)
64        return move
65
66    if 5 in possibleMoves:
67        move = 5
68        return move
69
70    edgesOpen = []
71    for i in possibleMoves:
72        if i in [2,4,6,8]:
73            edgesOpen.append(i)
74            
75    if len(edgesOpen) > 0:
76        move = selectRandom(edgesOpen)
77        
78    return move
79
80def selectRandom(li):
81    import random
82    ln = len(li)
83    r = random.randrange(0,ln)
84    return li[r]
85    
86
87def isBoardFull(board):
88    if board.count(' ') > 1:
89        return False
90    else:
91        return True
92
93def main():
94    print('Welcome to Tic Tac Toe!')
95    printBoard(board)
96
97    while not(isBoardFull(board)):
98        if not(isWinner(board, 'O')):
99            playerMove()
100            printBoard(board)
101        else:
102            print('Sorry, O\'s won this time!')
103            break
104
105        if not(isWinner(board, 'X')):
106            move = compMove()
107            if move == 0:
108                print('Tie Game!')
109            else:
110                insertLetter('O', move)
111                print('Computer placed an \'O\' in position', move , ':')
112                printBoard(board)
113        else:
114            print('X\'s won this time! Good Job!')
115            break
116
117    if isBoardFull(board):
118        print('Tie Game!')
119
120while True:
121    answer = input('Do you want to play again? (Y/N)')
122    if answer.lower() == 'y' or answer.lower == 'yes':
123        board = [' ' for x in range(10)]
124        print('-----------------------------------')
125        main()
126    else:
127        break
Mailys
18 Oct 2019
1def tic_tac_toe():
2    board = [1, 2, 3, 4, 5, 6, 7, 8, 9]
3    end = False
4    win_commbinations = ((0, 1, 2), (3, 4, 5), (6, 7, 8), (0, 3, 6), (1, 4, 7), (2, 5, 8), (0, 4, 8), (2, 4, 6))
5
6    def draw():
7        print(board[0], board[1], board[2])
8        print(board[3], board[4], board[5])
9        print(board[6], board[7], board[8])
10        print()
11
12    def p1():
13        n = choose_number()
14        if board[n] == "X" or board[n] == "O":
15            print("\nYou can't go there. Try again")
16            p1()
17        else:
18
19             board[n] = "X"
20           
21    def p2():
22        n = choose_number()
23        if board[n] == "X" or board[n] == "O":
24            print("\nYou can't go there. Try again")
25            p2()
26        else:
27            board[n] = "O"
28
29    def choose_number():
30        while True:
31            while True:
32                a = input()
33                try:
34                    a  = int(a)
35                    a -= 1
36                    if a in range(0, 9):
37                        return a
38                    else:
39                        print("\nThat's not on the board. Try again")
40                        continue
41                except ValueError:
42                   print("\nThat's not a number. Try again")
43                   continue
44
45    def check_board():
46        count = 0
47        for a in win_commbinations:
48            if board[a[0]] == board[a[1]] == board[a[2]] == "X":
49                print("Player 1 Wins!\n")
50                print("Congratulations!\n")
51                return True
52
53            if board[a[0]] == board[a[1]] == board[a[2]] == "O":
54                print("Player 2 Wins!\n")
55                print("Congratulations!\n")
56                return True
57        for a in range(9):
58            if board[a] == "X" or board[a] == "O":
59                count += 1
60            if count == 9:
61                print("The game ends in a Tie\n")
62                return True
63
64    while not end:
65        draw()
66        end = check_board()
67        if end == True:
68            break
69        print("Player 1 choose where to place a cross")
70        p1()
71        print()
72        draw()
73        end = check_board()
74        if end == True:
75            break
76        print("Player 2 choose where to place a nought")
77        p2()
78        print()
79
80    if input("Play again (y/n)\n") == "y":
81        print()
82        tic_tac_toe()
83
84tic_tac_toe()
85
Irene
04 Jan 2017
1board = ['-', '-', '-',
2         '-', '-', '-',
3         '-', '-', '-']
4gameplay = [1, 0, 1, 0, 1, 0, 1, 0, 1]
5def display_board():
6    print(board[0] + '|' + board[1] + '|' + board[2])
7    print(board[3] + '|' + board[4] + '|' + board[5])
8    print(board[6] + '|' + board[7] + '|' + board[8])
9
10def win_check():
11    # Row Check
12    for col in range(7):
13        if board[col] is board[col+1] is board[col+2] == 'X':
14            print('You win')
15            return True
16        if board[col] is board[col+1] is board[col+2] == 'O':
17            print('You win')
18            return True
19
20    # Column Check
21    for row in range(3):
22        if board[row] is board[row+3] is board[row+6] == 'X':
23            print('You win')
24            return True
25        if board[row] is board[row+3] is board[row+6] == 'O':
26            print('You win')
27            return True
28
29    # Diagonal Check
30    dia = 0
31    if board[dia] is board[dia+4] is board[dia+8] == 'X':
32        print('You win')
33        display_board()
34        return True
35    elif board[dia] is board[dia+4] is board[dia+8] == 'O':
36        print('You win')
37        display_board()
38        return True
39    dia = 2
40    if board[dia] is board[dia+2] is board[dia+4] == 'X':
41        print('You win')
42        display_board()
43        return True
44    elif board[dia] is board[dia+2] is board[dia+4] == 'O':
45        print('You win')
46        display_board()
47        return True
48
49def play_game():
50    i = 0
51    if gameplay[i] == 1:
52        board[val] = 'X'
53        gameplay.pop(i)
54        res = win_check()
55        if res is True:
56            return True
57        else:
58            display_board()
59            inval()
60    else:
61        board[val] = 'O'
62        gameplay.pop(i)
63        res = win_check()
64        if res is True:
65            return True
66        else:
67            display_board()
68            inval()
69
70
71def inval():
72    global val
73    val = int(input('Choose the values from 0 to 8'))
74    try:
75        if val<=8 and val>=0:
76            for item in range(9):
77                if item == val:
78                    res = play_game()
79                    if res is True:
80                        break
81                    break
82        else:
83            print('Enter Valid Input!!!!')
84            inval()
85
86    except TypeError:
87        print('Enter Valid Input!!!!')
88        inval()
89
90
91
92display_board()
93inval()
Veronica
15 Nov 2019
1import time
2import sys
3
4TITLES = "    A   B   C\n"
5INIT_BOARD = "| / | / | / |\n"
6A, B, C = 4, 8, 12
7# creates the game board
8board = [f"{x} {INIT_BOARD}" for x in range(3)]
9user_turn = ""
10taken = True
11winner = False
12turn_number = 0
13# keeps the score and determines what symbols will be used
14SYMBOLS = ["x", "o"]
15winner_save = [list(x * 3) for x in SYMBOLS]
16score = {symbol: 0 for symbol in SYMBOLS}
17
18# does all the logic to the game
19class logic:
20    def __init__(self, ctx, turn, win_template):
21        self.ctx = ctx
22        self.turn = turn
23        self.template = win_template
24
25    # check if 3 of the same symbols are in a line
26    def winner_check(self):
27        # initializes the list containing the rows. rows 0, 1, and 2 are created
28        win_check = [
29            [board[c][x] for x in range(4, len(board[c])) if x % 4 == 0]
30            for c in range(3)
31        ]
32        # adds the values for every possible row to the list
33        for x in range(3):
34            win_check.append([win_check[c][x] for c in range(3)])
35        win_check.append([win_check[x][x] for x in range(3)])
36        win_check.append([win_check[x][c] for x, c in zip(range(3)[::-1], range(3))])
37        # determines if someone has won
38        for x in win_check:
39            if x in self.template:
40                print(f"{self.turn} wins!")
41                keep = True
42                break
43            keep = False
44        return keep
45
46    # updates the spot value of the given input. ex: input = A1, spot A1 will be occupied by the player
47    def take_spot(self):
48        append_board = board[int(user[1])]
49        append_board = "".join(
50            [
51                append_board[x] if x != eval(user[0]) else self.turn
52                for x in range(len(append_board))
53            ]
54        )
55        return append_board
56
57    # checks to see if a spot on the board is already occupied
58    def spot_taken(self):
59        board_ctx = board[int(self.ctx[1])][eval(self.ctx[0])]
60        check_spot = True if board_ctx in ["o", "x"] else False
61        if check_spot == True:
62            print("spot already taken :/ try again")
63        return check_spot
64
65
66# takes the location input and checks if it exists
67def input_check():
68    slow_print("location- \n")
69    ctx = input().upper()
70    all_input = [x + str(c) for x in ["A", "B", "C"] for c in range(3)]
71    if ctx in all_input:
72        pass
73    else:
74        while ctx not in all_input:
75            slow_print("invalid location, try again\n")
76            slow_print("location- \n")
77            ctx = input().upper()
78    return list(ctx)
79
80
81# takes an input and prints it smoothly to the console
82def slow_print(inpt):
83    for x in inpt:
84        sys.stdout.write(x)
85        time.sleep(0.01)
86
87
88slow_print(TITLES + "".join(board))
89
90# determines what symbol will go first
91while True:
92    slow_print(f"{SYMBOLS[0]}'s or {SYMBOLS[1]}'s?- \n")
93    user_turn = input()
94    if user_turn in [SYMBOLS[0], SYMBOLS[1]]:
95        slow_print(f"{user_turn}'s first!\n")
96        break
97    else:
98        slow_print("incorrent input try again!")
99
100# brings all the functions and logic together
101while True:
102    outcome = "None"
103    while winner == False:
104        # keeps track of the amount of turns to determine if the outcome is a tie
105        turn_number += 1
106        if turn_number == 10:
107            slow_print("Tie!\n")
108            outcome = None
109            break
110        # takes spot input and brings the spot_taken logic together to determines==
111        # whether a spot is already occupied
112        while taken == True:
113            user = input_check()
114            init = logic(user, user_turn, winner_save)
115            taken = init.spot_taken()
116        ctx_board = init.take_spot()
117        board[int(user[1])] = ctx_board
118        slow_print(TITLES + "".join(board))
119        user_turn = SYMBOLS[0] if user_turn != SYMBOLS[0] else SYMBOLS[1]
120        taken = True
121        winner = init.winner_check()
122    # makes sure the point is given to the winner by inverting the current user_turn
123    if outcome == None:
124        pass
125    else:
126        score[SYMBOLS[0] if user_turn == SYMBOLS[1] else SYMBOLS[1]] += 1
127    slow_print(
128        f"Scores: {SYMBOLS[0]}-{score[SYMBOLS[0]]}, {SYMBOLS[1]}-{score[SYMBOLS[1]]}\n"
129    )
130    slow_print("Would you like to play another (Y/N)?- \n")
131    repeat = input().upper()
132    if repeat == "Y":
133        winner = False
134        board = [f"{x} {INIT_BOARD}" for x in range(3)]
135        turn_number = 0
136        continue
137    else:
138        break
139
Gianluca
24 May 2019
1def slant_check(matrix,P1,P2):
2    empty_lst1 = []
3    empty_lst2= []
4    lst1 = []
5    lst2 = []
6    x = len(matrix)
7    v = len(matrix) - 1
8    t = 0 
9    g = 0
10    n = True
11    while n:
12        for i in range(x):
13            if matrix[i][i] == P1 or matrix[t][i] == P1:
14                empty_lst1.append(matrix[i][i])
15            if matrix[i][i] == P2 or matrix[t][i] == P2:
16                empty_lst2.append(matrix[i][i])
17        while v >= g:
18            if matrix[g][v] == P1:
19                lst1.append(matrix[g][v]) 
20            if matrix[g][v] == P2:
21                lst2.append(matrix[g][v])
22            t -= 1
23            v -= 1
24            g += 1
25        if len(empty_lst1) == x:
26            return True
27        if len(empty_lst2) == x:
28            return True
29        if len(lst1) == x:
30            return True
31        if len(lst2) == x:
32            return True
33        return False
34def vertical_check(lst,P1,P2):
35    for i in range(len(lst) - 2):
36        for j in range(len(lst)):
37            if lst[i][j] == P1 and lst[i + 1][j] == P1 and lst[i + 2][j] == P1:
38                return True
39            if lst[i][j] == P2 and lst[i + 1][j] == P2 and lst[i + 2][j] == P2:
40                return True
41            
42    return False
43def horizontal_check(lst,P1,P2):
44    for i in range(len(lst)):
45        for j in range(len(lst) - 2):
46            if lst[i][j]== P1 and lst[i][j + 1]== P1 and lst[i][j + 2]== P1 :
47                return True
48            if lst[i][j]== P2 and lst[i][j + 1]== P2 and lst[i][j + 2]== P2 :
49                return True
50    return False
51def find_grid2(place,lst):
52    for i in range(len(lst)):
53        for j in range(len(lst[i])):
54            if place == lst[i][j]:
55                return lst.index(lst[i])
56
57def find_grid1(place,lst):
58    for i in range(len(lst)):
59        for j in range(len(lst[i])):
60            if place == lst[i][j]:
61                return lst[i].index(place)
62            
63def print_lst(lst):
64    for i in range(len(lst)):
65        for j in range(len(lst[i]) - 2):
66            print(lst[i][j],'|', lst[i][j + 1],'|', lst[i][j + 2])
67            print('----------')
68def tic_tac_toe():
69    lst = [[1,2,3],
70           [4,5,6],
71           [7,8,9]]
72    P1 = 0
73    P2 = 0
74    counter_loop = 0
75    _ = 0 
76    new_lst = [1,2]
77    while True:
78        P1 = input('Player1 select "x" or "o" ? (Type in x or o):\n').lower()
79        if P1 == 'x':
80            print('Player2 is now "o"!\n')
81            P2 = 'o'
82            break
83        if P1 == 'o':
84            print('Player2 is now "x"!\n')
85            P2 = 'x'
86            break
87        else:
88            print('Try Again\n')
89    print_lst(lst)
90    while _ < len(lst): 
91        for i in range(len(lst[_])):
92            if counter_loop == 9:
93                print("Tie!")
94                break
95            place_grid1 = input('Where would Player 1 like to place? : ')
96            if int(place_grid1) >= 10 or int(place_grid1) <= 0:
97                print('Try Again')
98                place_grid1 = input('Where would Player 1 like to place? : ')
99                break
100            place_grid = int(place_grid1)
101            counter_loop += 1
102            inner_index1 = find_grid1(place_grid,lst)
103            outer_index1 = find_grid2(place_grid,lst)
104            lst[outer_index1][inner_index1] = P1
105            print_lst(lst)
106            if horizontal_check(lst,P1,P2) == True:
107                print("Player 1 wins!!")
108                counter_loop = 9 
109                break
110            if vertical_check(lst,P1,P2) == True:
111                print("Player 1 wins!!")
112                counter_loop = 9 
113                break
114            if slant_check(lst,P1,P2) == True:
115                print("Player 1 wins!!")
116                counter_loop = 9 
117                break
118            if counter_loop == 9:
119                print("Tie!")
120                break
121            place_grid2 = input('Where would Player 2 like to place? : ')
122            if int(place_grid2) >= 10 or int(place_grid2) <=0:
123                print('Try Again')
124                place_grid2 = input('Where would Player 2 like to place? : ')
125                break
126            place_gridy = int(place_grid2)
127            counter_loop += 1
128            inner_index2 = find_grid1(place_gridy,lst)
129            outer_index2 = find_grid2(place_gridy,lst)
130            lst[outer_index2][inner_index2] = P2
131            print_lst(lst)
132            if horizontal_check(lst,P1,P2) == True:
133                print("Player 2 wins!!")
134                counter_loop = 9 
135                break
136            if vertical_check(lst,P1,P2) == True:
137                print("Player 2 wins!!")
138                counter_loop = 9 
139                break
140            if slant_check(lst,P1,P2) == True:
141                print("Player 2 wins!!")
142                counter_loop = 9 
143                break
144            if counter_loop == 9:
145                print("Tie!")
146                break        
147        if counter_loop == 9:
148            break
149        
150        _ += 1
151
152    
153tic_tac_toe()
154
155
Isabell
03 Apr 2019
1class Grid:
2
3    def __init__(self):
4        self.__grid = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
5        self.__score = 0
6        self.turn = 1
7
8    def check_location(self, x_index, y_index):
9        if self.__grid[int(x_index) - 1][int(y_index) - 1] == 1 or\
10           self.__grid[int(x_index) - 1][int(y_index) - 1] == 2:
11            return False
12        else:
13            return True
14
15    def display(self):
16        lineVal: int = 0
17        print("0 1 2 3")
18        for i in self.__grid:
19            lineVal += 1
20            print(str(lineVal), end=" ")
21            for k in i:
22                print(str(k), end=" ")
23
24            print()
25
26    def place_counter(self, x_index, y_index):
27        if self.turn == 1:
28            self.__grid[int(x_index) - 1][int(y_index) - 1] = 1
29            self.turn = -1
30        else:
31            self.__grid[int(x_index) - 1][int(y_index) - 1] = 2
32            self.turn = 1
33
34    def reset_grid(self):
35        for i in range(len(self.__grid)):
36            for k in range((len(self.__grid[i]))):
37                self.__grid[i][k] = 0
38
39    def victory_check(self):
40        for l in range(1, 2):
41
42            for i in range(len(self.__grid)):
43                if self.__grid[i][0] == l and self.__grid[i][1] == l and self.__grid[i][2] == l:
44                    return True
45                if self.__grid[0][i] == l and self.__grid[1][i] == l and self.__grid[2][i] == l:
46                    return True
47                if self.__grid[0][0] == l and self.__grid[1][1] == l and self.__grid[2][2] == l:
48                    return True
49                if self.__grid[0][2] == l and self.__grid[1][1] == l and self.__grid[2][0] == l:
50                    return True
51
52
53def collect_place():
54    return input("Please enter a location: ")
55
56
57placingGrid = Grid()
58while True:
59    placingGrid.display()
60    x_pos = collect_place()
61    y_pos = collect_place()
62    if placingGrid.check_location(x_pos, y_pos):
63        placingGrid.place_counter(x_pos, y_pos)
64    else:
65        print("Invalid location")
66
67    if placingGrid.victory_check():
68        print("Well done")
69        placingGrid.reset_grid()
70
queries leading to this page
how to make a tic tac toe game using pythonpython tic tac toe scripttic tac toe gui design pythonmake tic tac toe in python with ai opponenttic tac toe with computer python codetic tac toe py codetic tac toe python with aiprogram for tic tac toe in pythonai tic tac toe pythontic tac toe 2 player python codehow to make tic tack toe with pythontic tac toe project python full codeminimax tic tac toe pythonpython tic tac toe game codestic tak toe python codeai python tik tac toetic tac toe python codetic tac toe python aipython tic tac toe downloadcoding a tic tac toe board game pythontic tac toe with python the most advanced best codepython ai tic tac toehow to code tic tac toe game in pythn tkinerpython check tic tac toe how to add a computer player in my tic tac toe with pythontic tac toe in python tic tac toe in pythontic tac toe python codetic tac toe pythontic tac toe board in pythoncode tic tac toe pythonhow to make a tic tac toe in pythonpython simple tic tac toecode for tic tac toe game in pythonsimple tic tac toe game in pythonmaking an ai in python that can learn to play tic tac toehow to create an interactive tic tac toe game in pythonhow to display tic tac toe in pythoncode for tic tac toe in pythontic tac toe python implimentationtic tac toe pythontic tac toe gam in pyhton is it ahrd to codepython x o gamepython tic tac ai code3d tic tac toe pythontic tac toe written in pythontic toc tiae logic pythontic tac toe pyhtontic tac toe source code in pythontic tac toe board layout pythonhow to create python tic tac toe boardtic tac toe python programtic tac toe python source codetic tac to pythontic tac toe phytontic tac toe board pythonhow we can make tic tac toe against computer in pythonpython tic tac toetic tac toe python terminaltic tac toe game ai pythontic tac toe bot pythontic tac toe game source code in pythonai for tic tac toe pythonwrite a program to implement tic tac toe game using pythontic tac toe game in python pseudocodehow to make a tic toc in pythontic tac toe code pythonhow to make a tik tac toe easy game in pythontic tac toe algorithm in pythontic tac toe python iatic tac toe python winningpython tic tac toe programtic tac to game scripte pythoncoding ai for tic tac toe in pythontic tac toe python freehow to make tic tac toe in pythonhow can i make a tic tac toe game in pythonpython tic tac toe gametic tac toe program in python using tkinterimplementation of tic tac toe using game playing algorithm pythontic tac toe python full codepython puzzle 3a tic tac toetictactoe pythontic tac toe python guiprint tic tac toe pythontic tac toe python user vs computer tic tac toe python 2 playerstic tac toe program in pythonhow to make tic tac toe game in pythonpython tic tac toe project source codehow to make a tic tac toe game in pythontictac toe pythonpython tic toe gamepython tic tac toe object orientedhow to create simple tic tac toe game using pythongame playing 2c minmax on tictactoe python codetic tac toe code pythobnpython tictac toepython tic tac toe codecreate xo pythonpython console tic tac toetic tac toe game in python for beginnershow to code tic tac toe in pythontic tac toe ai pythontic tac toe game in pythontic tac toe python projecttic tac toe game project using pythoon tkintrepythin tic tac toe gamepython tic tac toe board codetic tac toe game in pythonpython simple tic tac toe gamepython tic tac toe gameplaytic tac toe python 3ftic tac ote pythontic tac toe pythpjpython3 tic tac toewhat all you need to know to build tic tac toe in pythontic tac toe cade pythontic tac toe project in pythonhow to make tic tac toe pythontic tac toe game pythonmake a python tic tac toetic tac game in pythonpython tic tac toe projectpython program for tic tac toe gametic tac toe in pythonhow to program a tik tak toe on pythonmin max algorithm tic tac toe pythonpython game code tic tac toetic tac toe python 2 playerhow to make tic tac toe with pythontic tac toe python with guitic tac toe python