You are on page 1of 8

import random

from tkinter import *

class Welcome():

def __init__(self,master):

self.master = master

master.title("Electronics Entertainment")

master.geometry("425x550+100+50")

master.configure(bg = "black")

self.label1 = Label(self.master, text = "\"Welcome to Electronics \nTic Tac Toe Game!\"",

font = ("Times New Roman", 25), bg = "black", fg = "yellow")

self.label1.pack(pady = 15)

self.label2 = Label(self.master, text = "Play and have fun!", font = ("Comic sans ms", 18),

bg = "black", fg = "white")

self.label2.pack(pady = 15)

self.b_play = Button(self.master, text = "Play", font = ("Times New Roman", 16), width = 10,

bg = "white", fg = "black", command = self.new_window)

self.b_play.pack(pady = 10)

self.b_exit = Button(self.master, text = "Exit", font = ("Times New Roman", 16), width = 10,

bg = "white", fg = "black", command = self.finish)

self.b_exit.pack(pady = 15)

self.qoute = Label(self.master, text = "Find your Happiness and \nGo Beat the Computer! :)",

font = ("Comic sans ms", 16), bg = "black", fg = "white")

self.qoute.pack(pady = 20)
self.by = Label(self.master, text = "Improved by:", font = ("Comic sans ms", 16),

bg = "black", fg = "white")

self.by.pack(pady = 5)

self.creator = Label(self.master, text = "JOBELYN | CYRILLE | JUN LEE", font = ("Comic sans ms", 18),

bg = "black", fg = "white")

self.creator.pack(pady = 10)

self.site = Label(self.master, text = "@ElectronicsEntertainment.com", font = ("Comic sans ms", 12),

bg = "black", fg = "white")

self.site.pack()

def new_window(self):

root2 = Toplevel(self.master)

myGame = startGame(root2)

def finish(self):

self.master.destroy()

class startGame():

def __init__(self, master):

self.master = master

master.title("Electronics Tic Tac Toe Game")

master.geometry("425x550+100+50")

master.configure(bg = "black")

self.fr = Frame(self.master)

self.player_button = Button(self.master, text="Player", command=lambda: self.do_start(TRUE),


font=("Helvetica", 16))

self.computer_button = Button(self.master, text="Computer", command=lambda:


self.do_start(FALSE),

font=("Helvetica", 16))

self.exit_button = Button(self.master, text="QUIT", command=self.do_exit, font=("Helvetica", 16))

self.again_button = Button(self.master, text="Try Again", command=self.do_again, state=DISABLED,

font=("Helvetica", 16))

self.myLabel = Label(self.master, text="Who starts?", font=("Helvetica", 16), bg="black", fg="white")

self.bList = [0,1,2,3,4,5,6,7,8,9]

for i in range(1,10):

self.bList[i] = Button(self.master, text="---", command=lambda j=i: self.do_button(j),

state=DISABLED, relief=RAISED, height=3, width=7, font=("Helvetica", 24))

self.fr.grid()

self.myLabel.grid(row=0, columnspan=4, pady=5)

self.player_button.grid(row=1, column=0, pady=5)

self.computer_button.grid(row=1, column=2, pady=5)

self.exit_button.grid(row=5, column=0, pady=5)

self.again_button.grid(row=5, column=2, pady=5)

myL = [ [1,4,0], [2,4,1], [3,4,2],

[4,3,0], [5,3,1], [6,3,2],

[7,2,0], [8,2,1], [9,2,2]]

for i in myL:

self.bList[i[0]].grid(row=i[1], column=i[2])
def do_start(self,player):

self.player_button.config(state=DISABLED)

self.computer_button.config(state=DISABLED)

self.again_button.config(state=DISABLED)

self.bState = [10,0,0,0,0,0,0,0,0,0]

self.mySums = [0,0,0,0,0,0,0,0]

self.gameDone = FALSE

self.specialDefense = FALSE

for i in range(1,10):

self.bList[i].config(state=NORMAL)

self.myLabel.config(text="You are X, make a move")

if player:

self.turn = FALSE

else:

self.turn = TRUE

self.do_move()

def do_button(self, i):

if self.turn:

myText = "O"

self.turn = FALSE

self.bState[i] = -1

else:

myText = "X"

self.turn = TRUE
self.bState[i] = 1

self.bList[i].config(text=myText, state=DISABLED)

self.test_done()

if (self.turn) and (not self.gameDone):

self.do_move()

def test_done(self):

if not (0 in self.bState):

self.myLabel.config(text="Draw, Try Again?")

self.gameDone = TRUE

self.again_button.config(state=NORMAL)

self.do_sums()

if 3 in self.mySums:

self.myLabel.config(text="Congratulations! You won!")

self.gameDone = TRUE

self.again_button.config(state=NORMAL)

elif -3 in self.mySums:

self.myLabel.config(text="Sorry! Computer won!")

self.gameDone = TRUE

self.again_button.config(state=NORMAL)

def do_sums(self):

triples = [[1,2,3], [4,5,6], [7,8,9],

[1,4,7], [2,5,8], [3,6,9],

[1,5,9], [3,5,7]]
count = 0

for i in triples:

self.mySums[count] = 0

for j in i:

self.mySums[count] += self.bState[j]

count += 1

def do_move(self):

if (not 1 in self.bState) and (not -1 in self.bState):

if random.random() < 0.20:

self.do_button(5)

return

if (1 in self.bState) and (not -1 in self.bState):

if self.bState.index(1) in [1,3,7,9]:

self.do_button(5)

self.specialDefense = TRUE

return

for i in range(1,10):

if self.bState[i] == 0:

self.bState[i] = -1

self.do_sums()

if -3 in self.mySums:

self.do_button(i)

return

else:

self.bState[i] = 0
for i in range(1,10):

if self.bState[i] == 0:

self.bState[i] = 1

self.do_sums()

if 3 in self.mySums:

self.do_button(i)

self.specialDefense = FALSE

return

else:

self.bState[i] = 0

if self.specialDefense:

self.specialDefense = FALSE

sides = [2,4,6,8]

random.shuffle(sides)

for i in sides:

if self.bState[i] == 0:

self.do_button(i)

return

corners = [1,3,7,9]

random.shuffle(corners)

for i in corners:

if self.bState[i] == 0:

self.do_button(i)

return

if self.bState[5] == 0:

self.do_button(5)
return

sides = [2,4,6,8]

random.shuffle(sides)

for i in sides:

if self.bState[i] == 0:

self.do_button(i)

return

def do_again(self):

self.player_button.config(state=NORMAL)

self.computer_button.config(state=NORMAL)

self.myLabel.config(text="Who starts?")

for i in range(1,10):

self.bList[i].config(text="---", state=DISABLED)

def do_exit(self):

self.master.destroy()

def main():

root = Tk()

myGame = Welcome(root)

root.mainloop()

if __name__ == '__main__':

main()

You might also like