from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from tkinter import font
from random import randint
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#---tujufunktsioonid-----
def suurviha(): #-2 p
global reageering
button2.configure(text="NOH?", bg="darkred")
tahvel.create_image(250, 245, image=pilt2)
reageering -= 2
def viha(): # -1 p
global reageering
button2.configure(text="Räägi välja!", bg="orangered")
tahvel.create_image(250, 245, image=pilt3)
reageering -= 1
def neutraalne(): # 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(): # +2 p
global reageering
button2.configure(text="Kirjelda mind!", bg="green")
tahvel.create_image(250, 245, image=pilt7)
reageering += 2
def võit():
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():
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 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: #MUUDETAVAD raskused
kaotus()
return
elif reageering > 5:
võit()
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()
elif len(vastus_set(ee)) == 1:
kontroll = 0
vastus_setina = vastus_set(ee)
if "ei" in vastus_setina:
kaotus()
if solvangukontroll(vastus_setina)==True:
kaotus()
return
for i in lühivastused:
if i in vastus_setina:
label1.configure(text="Nooh, "+ee+" pole piisav, pikenda mu komplimenti!")
heaf()
break
kontroll += 1
if kontroll == len(lühivastused):
label1.configure(text="""Kirjuta pikemalt! Kui sa siin hakkad
vastama ainult ühe sõnaga, siis
ma ei viitsi sinuga üldse rääkida.""")
neutraalne()
elif vastuse_pikkus(ee) == 2:
kontroll = 0
vastus_setina = vastus_set(ee)
if 'oled' in vastus_setina:
if solvangukontroll(vastus_setina)==True:
kaotus()
return
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)
neutraalne()
else:
for e in vastused:
if e in vastus_setina:
label1.configure(text="Sa kasutad nii vähe sõnu minu iseloomustamiseks!")
neutraalne()
break
kontroll += 1
if kontroll == len(vastused):
label1.configure(text=pahanduslaused[suva])
viha()
else:
for e in vastused:
if e in vastus_setina:
label1.configure(text="Ära räägi teistest naistest! MINA?")
viha()
break
kontroll += 1
if kontroll == len(vastused):
label1.configure(text=pahanduslaused[suva])
suurviha()
elif vastuse_pikkus(ee) == 3:
vastus_setina = vastus_set(ee)
if solvangukontroll(vastus_setina)==True:
kaotus()
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.capitalize() +" ainult? Miks ma ilusam pole?", font=appHighlightFont)
button2.configure(text="Vasta!", bg="springgreen")
tahvel.create_image(250, 245, image=pilt5)
reageering += 1
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()
else:
for e in vastused:
if e in vastus_setina:
label1.configure(text=kiitmislaused[hea])
väga_hea()
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()
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()
else:
label1.configure(text="Mida tähendab " + ee +
"""??
Milline ma välja näen?""", font=appHighlightFont)
suurviha()
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()
break
kontroll += 1
if kontroll == len(vastused):
label1.configure(text="Raske juhtum sinuga, räägi selgelt!")
viha()
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()
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()
break
elif k2 == len(omadussõnad):
label1.configure(text="""Kas sa äkki oskaksid NORMAALSEID omadussõnu ka kasutada?""")
viha()
break
elif k1==len(vastused):
label1.configure(text="Ma olen siis täpsemalt mis asi sinu arust?")
suurviha()
else:
label1.configure(text="Mida tähendab " + ee +
"""??
Milline ma välja näen?""")
suurviha()
elif "sa" not in vastus_setina or "sina" not in vastus_setina:
lugeja = 0
if solvangukontroll(vastus_setina)==True:
kaotus()
return
for e in vastused:
if e in vastus_setina:
label1.configure(text="Mis mölajutt see on?")
viha()
break
elif not e in vastus_setina:
lugeja += 1
if lugeja == len(vastused):
label1.configure(text=pahanduslaused[suva])
suurviha()
# - --------------------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()
tekstifailid:
vastused.txt
ilus
võrratu
kena
kenake
kaunis
armsake
kütkestav
jumalik
kaunitar
imekena
lummav
hurmav
imeline
kaunitar
superilus
superkena
megakena
kaunis
ilusake
nunnu
armas
kaunitar
solvangud.txt
kole
kõõm
inetu
vastik
tülgastav
paks
rasv
pekk
ei ole
rõve
jälk
elajas
peletis
pahanduslaused.txt
Mida sa ajad?
Mis jura sa räägid?
Ma ei saa su jutust aru!?
Räägi selgemalt!
Miks sa mulle normaalselt ei vasta?
Olen MINA ILUS VÕI MIS?!
Kas sa ütled, et ma olen paks?
Miks sa ikka mulle ei vasta?
Tahaks komplimenti!!!
Küsisin sult üht lihtsat asja!
Ei mäleta mu küsimust vä?!
Ma saan vihaseks! MILLINE ma olen?
Tahan teada, milline ma välja näen!
Raske on vastata hästi või?
Räägi minuga selgelt!
Olen ma näiteks lummav?
Kas tahad öelda, et olen jumalik? ÜTLE SIIS!
Sa ajad mu hulluks!!!
omadussõnad.txt
väga
jõhkralt
tõsiselt
silmipimestavalt
tohutult
hästi
eriti
täiega
hullult
jumalikult
megalt
mega
lummavalt
liigagi
liiga
jumala
võrratult
eriliselt
jumala
nii
tõesti
ilus
kena
kenake
lühivastused.txt
jah
jaa
ja
oled
ikka
küll
sina
väga
väga
jõhkralt
tõsiselt
silmipimestavalt
tohutult
hästi
eriti
täiega
hullult
jumalikult
megalt
mega
lummavalt
liigagi
liiga
jumala
nii
tõeliselt
küsimused.txt
Kas ma olen ilus?
Lihtsalt jah misasi? Milline ma olen?!
No kui ilus siis?
Kui ilus ja kes???
Mis asja ma väga olen? Paks või?
Kohutav, mida sa ajad! Milline ma siis välja näen?
Mis küll olen?! Täislausega?!
Noh olen misasi sinu meelest siis?
Kes on kaunis?
Mis MA siis olen?!?! TÄISLAUSEGA?!
Kas sa nagu täislausega ei oska mulle öelda kui väga ilus ma olen vä?!
Räägi selgete sõnadega ja täislausega! Milline ma siis välja näen?
kiitmislaused.txt
Tänan, ilus kompliment! Ütle veel midagi sellist!
Suudad sa veel mind nii armsalt võluda?
Natuke veel mõni armas lauseke!
Kiida mind veidi veel!
Ohh! Kas tõesti? Ütle veel midagi!
Ütle midagi uuesti nii armsat!
Tahan veel kuulda midagi ilusat!
Kasutatud graafilised kujutised: