1
- import tkinter as tk
2
- from tkinter import messagebox
1
+ import tkinter as tk #provides a library of basic elements of GUI widgets
2
+ from tkinter import messagebox #provides a different set of dialogues that are used to display message boxes
3
3
import random
4
4
5
5
def check_winner (board , player ):
@@ -19,30 +19,31 @@ def minimax(board, depth, is_maximizing):
19
19
return - 1
20
20
if check_winner (board , 'O' ):
21
21
return 1
22
- if is_board_full (board ):
22
+ if is_board_full (board ): #if game is full, terminate
23
23
return 0
24
24
25
- if is_maximizing :
25
+ if is_maximizing : #recursive approach that fills board with Os
26
26
max_eval = float ('-inf' )
27
27
for i in range (3 ):
28
28
for j in range (3 ):
29
29
if board [i ][j ] == ' ' :
30
30
board [i ][j ] = 'O'
31
- eval = minimax (board , depth + 1 , False )
31
+ eval = minimax (board , depth + 1 , False ) #recursion
32
32
board [i ][j ] = ' '
33
33
max_eval = max (max_eval , eval )
34
34
return max_eval
35
- else :
35
+ else : #recursive approach that fills board with Xs
36
36
min_eval = float ('inf' )
37
37
for i in range (3 ):
38
38
for j in range (3 ):
39
39
if board [i ][j ] == ' ' :
40
40
board [i ][j ] = 'X'
41
- eval = minimax (board , depth + 1 , True )
41
+ eval = minimax (board , depth + 1 , True ) #recursion
42
42
board [i ][j ] = ' '
43
43
min_eval = min (min_eval , eval )
44
44
return min_eval
45
45
46
+ #determines the best move for the current player and returns a tuple representing the position
46
47
def best_move (board ):
47
48
best_val = float ('-inf' )
48
49
best_move = None
@@ -74,6 +75,7 @@ def make_move(row, col):
74
75
else :
75
76
messagebox .showerror ("Error" , "Invalid move" )
76
77
78
+ #AI's turn to play
77
79
def ai_move ():
78
80
row , col = best_move (board )
79
81
board [row ][col ] = 'O'
@@ -88,7 +90,7 @@ def ai_move():
88
90
root = tk .Tk ()
89
91
root .title ("Tic-Tac-Toe" )
90
92
91
- board = [[' ' for _ in range (3 )] for _ in range (3 ]
93
+ board = [[' ' for _ in range (3 )] for _ in range (3 ) ]
92
94
buttons = []
93
95
94
96
for i in range (3 ):
0 commit comments