You are on page 1of 13

import tkinter as tk

from tkinter import messagebox, Canvas


import time
from random import randint

window=tk.Tk()
window.geometry("800x600")
window.title("Krestiki Noliki")

#Переменные:
click_number=0
field=[0,0,0,0,0,0,0,0,0,0]
end=0
a1_clicked=0
a2_clicked=0
a3_clicked=0
a4_clicked=0
a5_clicked=0
a6_clicked=0
a7_clicked=0
a8_clicked=0
a9_clicked=0
player1_wins=0
player2_wins=0
max_wins=0
schetchik=0

def on_func():
global schetchik
schet.config(text=f"{player1_wins} : {player2_wins}")
schetchik=1

def off_func():
global schetchik
global player1_wins
global player2_wins
player1_wins=0
player2_wins=0
schet.config(text="")
schetchik=0
def randomclick():
global field
global click_number
global a1_clicked
global a2_clicked
global a3_clicked
global a4_clicked
global a5_clicked
global a6_clicked
global a7_clicked
global a8_clicked
global a9_clicked
global end
if end==0:
if click_number==9:
check_win()
check_end()

randomnumber=randint(1,9)
if randomnumber==1:
if a1_clicked==1:
randomclick()
else:
a1.config(text="O",bg="lime")
click_number=click_number+1
field[1]="O"
a1_clicked=1

elif randomnumber==2:
if a2_clicked==1:
randomclick()
else:
a2.config(text="O",bg="lime")
click_number=click_number+1
field[2]="O"
a2_clicked=1
elif randomnumber==3:
if a3_clicked==1:
randomclick()
else:
a3.config(text="O",bg="lime")
click_number=click_number+1
field[3]="O"
a3_clicked=1
elif randomnumber==4:
if a4_clicked==1:
randomclick()
else:
a4.config(text="O",bg="lime")
click_number=click_number+1
field[4]="O"
a4_clicked=1
elif randomnumber==5:
if a5_clicked==1:
randomclick()
else:
a5.config(text="O",bg="lime")
click_number=click_number+1
field[5]="O"
a5_clicked=1
elif randomnumber==6:
if a6_clicked==1:
randomclick()
else:
a6.config(text="O",bg="lime")
click_number=click_number+1
field[6]="O"
a6_clicked=1
elif randomnumber==7:
if a7_clicked==1:
randomclick()
else:
a7.config(text="O",bg="lime")
click_number=click_number+1
field[7]="O"
a7_clicked=1
elif randomnumber==8:
if a8_clicked==1:
randomclick()
else:
a8.config(text="O",bg="lime")
click_number=click_number+1
field[8]="O"
a8_clicked=1
elif randomnumber==9:
if a9_clicked==1:
randomclick()
else:
a9.config(text="O",bg="lime")
click_number=click_number+1
field[9]="O"
a9_clicked=1
check_win()
check_end()
else:
check_end()

def check_end():
global end
if end==1:
restart()
def info_show():
console.config(text="Первый игрок-Х, второй-О. При окончании игры
автоматически начинается следующая. Удачи!")

#functions:
def restart():
global field
global click_number
global a1_clicked
global a2_clicked
global a3_clicked
global a4_clicked
global a5_clicked
global a6_clicked
global a7_clicked
global a8_clicked
global a9_clicked
global end
global player1_wins
global player2_wins

field=[0,0,0,0,0,0,0,0,0,0]
click_number=0
end=0
a1_clicked=0
a2_clicked=0
a3_clicked=0
a4_clicked=0
a5_clicked=0
a6_clicked=0
a7_clicked=0
a8_clicked=0
a9_clicked=0
a1.config(bg="yellow",text="")
a2.config(bg="yellow",text="")
a3.config(bg="yellow",text="")
a4.config(bg="yellow",text="")
a5.config(bg="yellow",text="")
a6.config(bg="yellow",text="")
a7.config(bg="yellow",text="")
a8.config(bg="yellow",text="")
a9.config(bg="yellow",text="")
console.config(text="")
def full_restart():
restart()
off_func()

def a1_func():
global click_number
global a1_clicked

if a1_clicked==0:
console.config(text="")
a1_clicked=1

a1.config(text="X",bg="green")
click_number=click_number+1
field[1]="X"
check_win()
if end==1: check_end()
else: randomclick()
check_win()
check_end()

else:
console.config(text="Вы не можете нажать на данную кнопку.")

check_win()
def a2_func():
global click_number
global a2_clicked
if a2_clicked==0:
console.config(text="")
a2_clicked=1
if click_number%2==0:
a2.config(text="X",bg="green")
click_number=click_number+1
field[2]="X"
check_win()
if end==1:
check_end()
else:
randomclick()
check_win()
check_end()
else:
console.config(text="Вы не можете нажать на данную кнопку.")
check_win()
def a3_func():
global click_number
global a3_clicked
if a3_clicked==0:
console.config(text="")
a3_clicked=1
if click_number%2==0:
a3.config(text="X",bg="green")
click_number=click_number+1
field[3]="X"
check_win()
if end==1:
check_end()
else:
randomclick()
check_win()
check_end()

else:
console.config(text="Вы не можете нажать на данную кнопку.")
check_win()
def a4_func():
global click_number
global a4_clicked
if a4_clicked==0:
console.config(text="")
a4_clicked=1
if click_number%2==0:
a4.config(text="X",bg="green")
click_number=click_number+1
field[4]="X"
check_win()
if end==1:
check_end()
else:
randomclick()
check_win()
check_end()

else:
console.config(text="Вы не можете нажать на данную кнопку.")
check_win()
def a5_func():
global click_number
global a5_clicked
if a5_clicked==0:
console.config(text="")
a5_clicked=1
if click_number%2==0:
a5.config(text="X",bg="green")
click_number=click_number+1
field[5]="X"
check_win()
if end==1:
check_end()
else:
randomclick()
check_win()
check_end()

else:
console.config(text="Вы не можете нажать на данную кнопку.")
check_win()
def a6_func():
global click_number
global a6_clicked
if a6_clicked==0:
console.config(text="")
a6_clicked=1
if click_number%2==0:
a6.config(text="X",bg="green")
click_number=click_number+1
field[6]="X"
check_win()
if end==1:
check_end()
else:
randomclick()
check_win()
check_end()

else:
console.config(text="Вы не можете нажать на данную кнопку.")
check_win()
def a7_func():
global click_number
global a7_clicked
if a7_clicked==0:
console.config(text="")
a7_clicked=1
if click_number%2==0:
a7.config(text="X",bg="green")
click_number=click_number+1
field[7]="X"
check_win()
if end==1:
check_end()
else:
randomclick()
check_win()
check_end()

else:
console.config(text="Вы не можете нажать на данную кнопку.")
check_win()
def a8_func():
global click_number
global a8_clicked
if a8_clicked==0:
console.config(text="")
a8_clicked=1
if click_number%2==0:
a8.config(text="X",bg="green")
click_number=click_number+1
field[8]="X"
check_win()
if end==1:
check_end()
else:
randomclick()
check_win()
check_end()

else:
console.config(text="Вы не можете нажать на данную кнопку.")
check_win()
def a9_func():
global click_number
global a9_clicked
if a9_clicked==0:
console.config(text="")
a9_clicked=1
if click_number%2==0:
a9.config(text="X",bg="green")
click_number=click_number+1
field[9]="X"
check_win()
if end==1:
check_end()
else:
randomclick()

else:
console.config(text="Вы не можете нажать на данную кнопку.")
check_win()
#tkinter:
console=tk.Label()
console.place(x=0,y=400)

a1=tk.Button(window,width=4,height=2, bg="yellow",font=('Verdana', 20,


'bold'),command=a1_func)
a1.grid(column=0,row=0)
a2=tk.Button(window,width=4,height=2, bg="yellow",font=('Verdana', 20,
'bold'),command=a2_func)
a2.grid(column=1,row=0)
a3=tk.Button(window,width=4,height=2, bg="yellow",font=('Verdana', 20,
'bold'),command=a3_func)
a3.grid(column=2,row=0)
a4=tk.Button(window,width=4,height=2, bg="yellow",font=('Verdana', 20,
'bold'),command=a4_func)
a4.grid(column=0,row=1)
a5=tk.Button(window,width=4,height=2, bg="yellow",font=('Verdana', 20,
'bold'),command=a5_func)
a5.grid(column=1,row=1)
a6=tk.Button(window,width=4,height=2, bg="yellow",font=('Verdana', 20,
'bold'),command=a6_func)
a6.grid(column=2,row=1)
a7=tk.Button(window,width=4,height=2, bg="yellow",font=('Verdana', 20,
'bold'),command=a7_func)
a7.grid(column=0,row=2)
a8=tk.Button(window,width=4,height=2, bg="yellow",font=('Verdana', 20,
'bold'),command=a8_func)
a8.grid(column=1,row=2)
a9=tk.Button(window,width=4,height=2, bg="yellow",font=('Verdana', 20,
'bold'),command=a9_func)
a9.grid(column=2,row=2)
restart_button=tk.Button(window,bg="gray",command=full_restart,text="Restart")
restart_button.grid(column=7,row=1)
sl=tk.Label(window,text="Счетчик",font=('Verdana', 15, 'bold'))
sl.grid(column=7,row=4)
on_button=tk.Button(window,width=4,height=2,text="ON",
bg="lightblue",font=('Verdana', 10, 'bold'),command=on_func)
on_button.grid(column=6,row=5)
off_button=tk.Button(window,width=4,height=2,text="OFF",
bg="lightblue",font=('Verdana', 10, 'bold'),command=off_func)
off_button.grid(column=8,row=5)
info_button=tk.Button(window,bg="gray",command=info_show, text="Info")
info_button.grid(column=7,row=2)
schet=tk.Label(window, font=('Verdana', 30, 'bold'))
schet.grid(column=7,row=0)
def check_win():
global click_number
global end
global player1_wins
global player2_wins
global schetchik

if field[1]==field[2] and field[2]==field[3] and field[1]!=0:


end=1

if field[1]=="X":
messagebox.showinfo("The end", "Первый игрок одержал
победу")
if schetchik==1:
player1_wins=player1_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")
else:
messagebox.showinfo("The end", "Второй игрок одержал
победу")
if schetchik==1:
player2_wins=player2_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")

elif field[4]==field[5] and field[5]==field[6] and field[4]!=0:


end=1
if field[4]=="X":
messagebox.showinfo("The end", "Первый игрок одержал
победу")
if schetchik==1:
player1_wins=player1_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")

else:
messagebox.showinfo("The end", "Второй игрок одержал
победу")
if schetchik==1:
player2_wins=player2_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")

elif field[7]==field[8] and field[8]==field[9] and field[7]!=0:


end=1
if field[7]=="X":
messagebox.showinfo("The end", "Первый игрок одержал
победу")
if schetchik==1:
player1_wins=player1_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")
else:
messagebox.showinfo("The end", "Второй игрок одержал
победу")
if schetchik==1:
player2_wins=player2_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")

elif field[1]==field[4] and field[4]==field[7] and field[1]!=0:


end=1
if field[1]=="X":
messagebox.showinfo("The end", "Первый игрок одержал
победу")
if schetchik==1:
player1_wins=player1_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")
else:
messagebox.showinfo("The end", "Второй игрок одержал
победу")
if schetchik==1:
player2_wins=player2_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")

elif field[2]==field[5] and field[5]==field[8] and field[2]!=0:


end=1
if field[2]=="X":
messagebox.showinfo("The end", "Первый игрок одержал
победу")
if schetchik==1:
player1_wins=player1_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")
else:
messagebox.showinfo("The end", "Второй игрок одержал
победу")
if schetchik==1:
player2_wins=player2_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")

elif field[3]==field[6] and field[6]==field[9] and field[3]!=0:


end=1
if field[3]=="X":
messagebox.showinfo("The end", "Первый игрок одержал
победу")
if schetchik==1:
player1_wins=player1_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")
else:
messagebox.showinfo("The end", "Второй игрок одержал
победу")
if schetchik==1:
player2_wins=player2_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")

elif field[1]==field[5] and field[5]==field[9] and field[1]!=0:


end=1
if field[1]=="X":
messagebox.showinfo("The end", "Первый игрок одержал
победу")
if schetchik==1:
player1_wins=player1_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")
else:
messagebox.showinfo("The end", "Второй игрок одержал
победу")
if schetchik==1:
player2_wins=player2_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")

elif field[3]==field[5] and field[5]==field[7] and field[3]!=0:


end=1
if field[3]=="X":
messagebox.showinfo("The end", "Первый игрок одержал
победу")
if schetchik==1:
player1_wins=player1_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")
else:
messagebox.showinfo("The end", "Второй игрок одержал
победу")
if schetchik==1:
player2_wins=player2_wins+1
schet.config(text=f"{player1_wins}:
{player2_wins}")

elif click_number==9:
end=1
messagebox.showinfo("The end", "Ничья")

window.mainloop()

You might also like