from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from tkinter import font
from random import randint
#---tujufunktsioonid-----
def suurviha(e): #-2 p
global reageering
button2.configure(text="NOH?", bg="darkred")
tahvel.create_image(250, 245, image=pilt2)
reageering -= 2
def viha(e): # -1 p
global reageering
button2.configure(text="Räägi välja!", bg="orangered")
tahvel.create_image(250, 245, image=pilt3)
reageering -= 1
def neutraalne(e): # 0 p
global reageering
button2.configure(text="Vasta mulle!", bg="#A2FF00")
tahvel.create_image(250, 245, image=pilt6)
#reageering += 0
def heaf(): # +1 p
global reageering
button2.configure(text="Vasta!", bg="springgreen")
tahvel.create_image(250, 245, image=pilt8)
reageering += 1
def väga_hea(e): # +2 p
global reageering
button2.configure(text="Kirjelda mind!", bg="green")
tahvel.create_image(250, 245, image=pilt7)
reageering += 2
def võit(e):
label1.configure(text="SA TÄITSID MU SOOVID!")
button2.configure(text="Võitsid!", bg="gold")
tahvel.create_image(250, 245, image=pilt1)
button2.bind('<Button-1>',stopProg)
def kaotus(e):
button2.configure(text="Kaotasid!!", bg="red")
label1.configure(text="SA AJASID MU TÄIESTI ENDAST VÄLJA!")
tahvel.create_image(250, 245, image=pilt2)
button2.bind('<Button-1>',lõpeta)
#---------------------------funktsioonid------------------------------------
def abi():
messagebox.showinfo(message="""Suutsid abi avada.
Kasuta huvitavaid erinevaid sõnu ning pikki lauseid.
Eeldame, et räägite eesti keeles ning teete normaalseid lauseid.
Omal vastutusel võib ka lühilauseid proovida.""")
button1.configure(bg="silver")
def solvangukontroll(vastus_setina):
for e in solvangud:
if e in vastus_setina:
return True
def loe_andmed(failinimi, järjend):
f = open(failinimi)
for e in f:
e = e.strip()
järjend.append(e)
f.close()
#Funktsioon, mis teeb sõnad vastuses hulgaks.
def vastus_set(vastus):
vastuse_set = set()
vastus = vastus.lower()
vastus = vastus.strip().split()
for e in vastus:
vastuse_set.add(e)
return vastuse_set
#selleks, et leida, kas on lühivastus või on tegemist pikema lausega.
def vastuse_pikkus(vastus):
järjend = []
vastus = vastus.lower()
vastus = vastus.strip().split()
pikkus = len(vastus)
return pikkus
def välju(e):
root.destroy()
def stopProg(e): #lõpetab tegumi
tahvel1=Canvas(root, width=500, height=490)
tahvel1.grid(column=0, row=0, columnspan=2, rowspan=4)
tahvel1.create_image(250, 245, image=pilt_võit)
messagebox.showinfo(message="""Suutsid naise tuju heaks teha!
Selleks kulus """ +str(vastamisi-1) +""" korda.""")
root.destroy()
def lõpeta(e):#kui inimene ajas naise täiesti närvi
tahvel1=Canvas(root, width=500, height=490)
tahvel1.grid(column=0, row=0, columnspan=2, rowspan=4)
tahvel1.create_image(250, 245, image=pilt_kaotus)
messagebox.showinfo(message="""Sa ei suuda mu tuju parandada! Asi on läbi!
""" + "Vastamisi: " + str(vastamisi))
root.destroy()
def transfertext(e): # saab tulla tekst vastusena
silt.configure(text="Aitäh!")#seesama LABEL1 või silt
def tuju(e): # vastab kordusega
silt.configure(text="Mis " + sisestus.get()+"?")
def kasutamine(ee, kasutatud):
if ee in kasutatud:
global reageering
messagebox.showinfo(message="SA OLED SEDA LAUSET KASUTANUD!")
reageering -= 1
return True
else:
kasutatud.append(ee)
return False
def vastamine(): #vastus vastavalt kirjutatule
global vastamisi
global reageering
global alampiir
global randint
global vastuse_pikkus
global kasutatud
vastamisi += 1
suva = randint(0, len(pahanduslaused)-1)
hea = randint(0, len(kiitmislaused)-1)
ee = sona.get()
ee = ee.lower()
if vastamisi > 12 or reageering <= -10:
kaotus(e)
return
elif reageering >= 5:
võit(e)
return
elif kasutamine(ee, kasutatud)==True: #FUNKTSIOON , mis kontrollid olemasolu
return
elif ee == '':
label1.configure(text='''Mida sa vaikid nüüd,
ma küsisisn sult midagi!''')
viha(e)
elif vastuse_pikkus(ee) == 1:
kontroll = 0
vastus_setina = vastus_set(ee)
if "ei" in vastus_setina:
kaotus(e)
if solvangukontroll(vastus_setina)==True:
kaotus(e)
return
for i in lühivastused:
if i in vastus_setina:
label1.configure(text="Nooh, "+ee+" pole piisav, pikenda mu komplimenti!")
heaf(e)
break
kontroll += 1
if kontroll == len(vastused):
label1.configure(text="""Kirjuta pikemalt! Kui sa siin hakkad
vastama ainult ühe sõnaga, siis
ma ei viitsi sinuga üldse rääkida.""")
neutraalne(e)
elif vastuse_pikkus(ee) == 2:
kontroll = 0
vastus_setina = vastus_set(ee)
if 'oled' in vastus_setina:
solvangukontroll(vastus_setina)
elif "küll" in vastus_setina or "jah" in vastus_setina or "ikka" in vastus_setina:
label1.configure(text="Nii tobe ja lühike vastus: " + ee+"""?
Aru ei saa, et ma tahan komplimenti?""", font=appHighlightFont)
viha(e)
else:
for e in vastused:
if e in vastus_setina:
label1.configure(text="Minust räägid vä? Mis ma olen?")
neutraalne(e)
break
kontroll += 1
if kontroll == len(vastused):
label1.configure(text=pahanduslaused[suva])
suurviha(e)
elif vastuse_pikkus(ee) == 3:
vastus_setina = vastus_set(ee)
if solvangukontroll(vastus_setina)==True:
kaotus(e)
return
elif "sa" in vastus_setina or "sina" in vastus_setina:
if "oled" in vastus_setina:
if "ilus" in vastus_setina or "kena" in vastus_setina or "ilusake" in vastus_setina:
label1.configure(text=ee +" ainult? Miks ma ilusam pole?", font=appHighlightFont)
heaf()
elif "küll" in vastus_setina or "jah" in vastus_setina or "ikka" in vastus_setina:
label1.configure(text="Nii hale vastus: " + ee+"??? Mida ma järeldama peaks?", font=appHighlightFont)
viha(e)
else:
for e in vastused:
if e in vastus_setina:
label1.configure(text=kiitmislaused[hea])
väga_hea(e)
break
else:
if "sa" in vastus_setina:
vastus_setina.remove("sa")
vastus_setina.remove("oled")
for e in vastus_setina:
label1.configure(text="Nii ma olen nüüd " + e + " vä?", font=appHighlightFont)
viha(e)
elif "sina" in vastus_setina:
vastus_setina.remove("sina")
vastus_setina.remove("oled")
for e in vastus_setina:
label1.configure(text="Nii ma olen nüüd " + e + " vä?", font=appHighlightFont)
viha(e)
else:
label1.configure(text="Mida tähendab " + ee +
"""??
Milline ma välja näen?""", font=appHighlightFont)
suurviha(e)
elif "sa" not in vastus_setina or "sina" not in vastus_setina:
kontroll = 0
for i in vastused:
if i in vastus_setina:
label1.configure(text="Tänan, aga natukene paremini oskad?")
neutraalne(e)
break
kontroll += 1
if kontroll == len(vastused):
label1.configure(text="Raske juhtum sinuga, räägi selgelt!")
viha(e)
elif vastuse_pikkus(ee) > 3:
k1 = 0
k2 = 0
vastus_setina = vastus_set(ee)
if "sa" in vastus_setina or "sina" in vastus_setina:
if "oled" in vastus_setina:
if solvangukontroll(vastus_setina)==True:
kaotus(e)
return
for e in vastused:
k1 += 1
if e in vastus_setina:
for a in omadussõnad:
k2 += 1
if a in vastus_setina:
label1.configure(text=kiitmislaused[hea])
väga_hea(e)
break
elif k2 == len(omadussõnad):
label1.configure(text="""Kas sa äkki oskaksid NORMAALSEID omadussõnu ka kasutada?""")
viha(e)
break
elif k1==len(vastused):
label1.configure(text="Ma olen siis täpsemalt mis asi sinu arust?")
suurviha(e)
else:
label1.configure(text="Mida tähendab " + ee +
"""??
Milline ma välja näen?""")
suurviha(e)
elif "sa" not in vastus_setina or "sina" not in vastus_setina:
lugeja = 0
if solvangukontroll(vastus_setina)==True:
kaotus(e)
return
for e in vastused:
if e in vastus_setina:
label1.configure(text="Mis mölajutt see on?")
viha(e)
break
elif not e in vastus_setina:
lugeja += 1
if lugeja == len(vastused):
label1.configure(text=pahanduslaused[suva])
suurviha(e)
# - --------------------andmete sisselugemine ---------------------------------
kasutatud = []
küsimused = []
vastused = []
lühivastused = []
pahanduslaused = []
omadussõnad = []
solvangud = []
kiitmislaused = []
reageering = 0
alampiir = 30 #mis väärtus peab olema, et mäng võitaˇ. mis me piiriks paneme?
vastamisi = 0 #vastamiste loendaja
#tekstifailist loetakse sisse igal real olev lause või sõna. Moodustatakse list,
#kus iga tekstifaili rida on ellemendiks
loe_andmed("pahanduslaused.txt", pahanduslaused)
loe_andmed("küsimused.txt", küsimused)
loe_andmed("vastused.txt", vastused)
loe_andmed("lühivastused.txt", lühivastused)
loe_andmed("omadussõnad.txt", omadussõnad)
loe_andmed("kiitmislaused.txt", kiitmislaused)
loe_andmed("solvangud.txt", solvangud)
#--------------------GUI genereerimine-------------------------
root=Tk() #root ise pandud
root.title("Naine vigiseb!")
# akna fikseerimiseks meetod geometry(800x600)
pilt = PhotoImage(file="tumblr_mr4ca3Dn6P1rpqa4xo1_500.gif")#algus
pilt1 = PhotoImage(file="happy-woman-gifs.gif")#hea lõpp
pilt2=PhotoImage(file="angry-woman-588-343_article_new.gif")#väga vihane
pilt3=PhotoImage(file="o-ANGRY-EMAIL-facebook.gif")#vihane
pilt4=PhotoImage(file="a-beautiful_woman-1447985.gif") #mõtleb
pilt5=PhotoImage(file="16165_Unhappy-woman.gif") #õnnetu
pilt6=PhotoImage(file="Angelina_Jolie_Cleopatra.gif") #kulmukortsutav
pilt_võit=PhotoImage(file="dodgedabullet.gif") # kuul
pilt7=PhotoImage(file="photo_products.gif") #veel hea
pilt8=PhotoImage(file="img_1399418229_397.gif") #natuke õnnelik
pilt_kaotus=PhotoImage(file="Passion_by_Imitjdesajn.gif") #kaotus, teine mees
pearaam = ttk.Frame(root, padding="20 20 20 20")
pearaam.grid(column=0, row=0, sticky=(N, W, E, S))
pearaam.columnconfigure(0, weight=1)
pearaam.rowconfigure(2, weight=1)
pearaam.rowconfigure(3, weight=10)
tahvel=Canvas(root, width=500, height=490)
tahvel.grid(column=4, row=0)
tahvel.create_image(250, 245, image=pilt)
appHighlightFont = font.Font(family='Helvetica', size=12, weight='bold')
silt = ttk.Label(pearaam, text="Kas ma olen ilus?")
silt.grid(column=1, row=0, columnspan=2) # rowspan=1, columnspan=1, # sticky=(N, W, E, S)
sona = StringVar()
koht = StringVar() #VARIAABLID
sisestus = ttk.Entry(pearaam, width=60, textvariable=sona)#VASTUS
sisestus.grid(column=1, row=1, columnspan=2)
button2=Button(pearaam,text="Vasta mulle!", bg="deeppink", cursor="heart", activebackground="deeppink", activeforeground="hotpink", pady=10, padx=40, command=vastamine)
button2.grid(column=1, row=2, columnspan=2) #, sticky=(N, W
#button2.bind('<Button-1>',)
label1=Label(pearaam,text="Vasta siis kenasti!", font=appHighlightFont) #ilmub kiri
label1.grid(column=1, row=3, columnspan=2)
button1=Button(pearaam,text="Abi", bg="silver", activebackground="black", pady=6, padx=20, command=abi)
button1.grid(column=1, row=4) #keskel sticky N W
#button1.bind('<Button-1>',abi)#kinniminemisefn
button1=Button(pearaam,text="Sule", pady=6, padx=20, bg="silver") #see võiks tulla kui mäng on läbi
button1.grid(column=2, row=4) #keskel sticky N W
button1.bind('<Button-1>', välju)
for child in pearaam.winfo_children(): child.grid_configure(padx=10, pady=10) #paigutuse element
root.mainloop()
Kommentaare ei ole:
Postita kommentaar