neljapäev, 11. detsember 2014

Meie projekti failid

naine vigiseb v5.py


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:












kolmapäev, 10. detsember 2014

esitamine miinus 13 tundi

lisan siia koodi hetkeseisuga. hakkab juba looma. päris kaks tundi on kulunud selle peale juba.

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()

esmaspäev, 8. detsember 2014

Ühendatud

# Ühendasime oma koodid ning osa asu töötas, osa mitte nii nagu sooviksime. Ilmnesid probleemid, kuna me ei saa aru, mis järjekorras funktsioonid töötavad ning miks töötab vale asi, kui hulgas pole sõnu "sa" või "sina", kirjutab välja vastusena label1.configure(text="Mida?!?!?!"), kuigi peaks selle välja jätma ning alustama järgmise elif-lausega.




from tkinter import *
from tkinter import ttk
from tkinter import messagebox
from tkinter import font

root=Tk() #root ise pandud
root.title("Naine vigiseb!")

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(0, weight=1)

tahvel=Canvas(root)
tahvel.grid(column=4, row=0)

# - andmete sisselugemine --------
küsimused = []
vastused = []
lühivastused = []
pahanduslaused = []

#loeb sisse küsimused tekstifailist. Igast küsimusest moodustub listi element.
f = open("pahanduslaused.txt")
for e in f:
    e = e.strip()
    pahanduslaused.append(e)
f.close()
print(pahanduslaused)


f = open("küsimused.txt")
for e in f:
    e = e.strip()
    küsimused.append(e)
f.close()
print(küsimused)
#pikematest vastustest on välja võetud võtmesnad. võtmesõnade kombinatsioonid
#moodustavad hulgad. ühele küsimusele vastavad hulgad moodustavad vastuste listis elemendi
f = open('head_vastused.txt')
for e in f:
    templist = []
    e = e.strip().split(',')
    for i in range(len(e)):
        e[i] = e[i].strip()
        hulk = e[i].split()
        templist.append(set(hulk))
    vastused.append(templist)
f.close()
print(vastused)
print(templist)
#lühivastustega sama dela, mis küsimustega
f = open('lühivastused.txt')
for e in f:
    e = e.strip().split(',')
    for i in range(len(e)):
        e[i] = e[i].strip()
    lühivastused.append(e)
f.close()
print(lühivastused)
# - -----------------------------

# - -------------

#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

#kasutatavad funktsioonid:

def stopProg(e): #lõpetab tegumi
    messagebox.showinfo(message="Suutsid naise tuju heaks teha!")
    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 vastamine(e): #vastus vastavalt kirjutatule
    ee = sona.get()
    ee = ee.lower()
    if ee == '':
        label1.configure(text='Mida sa vaikid nüüd, ma küsisisn sult midagi!')
        button2.configure(bg="red", text="Räägi minuga!")
    elif vastuse_pikkus(ee) < 2:
        label1.configure(text="Kirjuta pikemalt")
        button2.configure(bg="green", text="Vasta!")
##        if lühivastuseid_järjest == 1:
##            print('Tead, kui sa ainult lühivastuseid annad, siis me ei pea üldse rääkima.')
##            print('Ma kordan ennast.')
##            lühivastuseid_järjest += 1
##            pass
##        elif lühivastuseid_järjest == 2:
##            print('Järelikult sa ei taha minuga enam rääkida.')
##            break
##        elif vastus in lühivastused[vastuse_järg]:
##            lühivastuseid_järjest += 1
##            if lühivastused[vastuse_järg].index(vastus) < 10:
##                küsimuse_järg += 1
##            else:
##                küsimuse_järg += 2
##            küsimus = False
##            pass
     

    elif vastuse_pikkus(ee) == 2:
        global vastuse_pikkus
        vastus_setina = vastus_set(ee)
        if vastus_setina in vastused[0]:
            label1.configure(text="Minust räägid vä? Mis ma olen?")
            button2.configure(bg="#FFC078", text="Ütle mulle!")
        elif vastus_setina not in vastused[0]:
            from random import randint
            suva = randint(0, len(pahanduslaused)-1)
            label1.configure(text=pahanduslaused[suva])
         

    elif vastuse_pikkus(ee) > 2:
        global vastuse_pikkus
        vastus_setina = vastus_set(ee)
        if "sa" or "sina" in vastus_setina:
            vastuse_pikkus = len(vastus_setina)
            for e in vastused[0]:
                a = len(e)
                b = len(vastus_setina)
                c = vastus_setina - e
                if len(c) == b - a:
                    label1.configure(text="""Aitäh! Ma tahtsingi
sellist komplimenti kuulda!""")
                    button2.configure(bg="gold", text="Enam ei pea midagi ütlema")
                    button2.bind('<Button-1>', stopProg)
                else:
                    label1.configure(text="Mida?!?!?!")
##        elif "sa" or "sina" not in vastus_setina:
##            vastuse_pikkus = len(vastus_setina)
##            for e in vastused[0]:
##                a = len(e)
##                b = len(vastus_setina)
##                c = vastus_setina - e
##                if len(c) == b - a:
##                    label1.configure(text="Kes siis???")
##                    button2.configure(bg="red", text="Mida?")
        else:
            from random import randint
            suva = randint(0, len(pahanduslaused)-1)
            label1.configure(text=pahanduslaused[suva])




##
##  
##    eeset = set()
##    for element in ee:
##        eeset.add(element)
##    if eeset in vastused[0]:
##        silt.configure(text="Mina vä?")
##    elif eeset in lühivastused[0]:
##        label1.configure(text="Misasja siis? Vasta mu küsimusele!!!")
##
##    else:
##        label1.configure(text="tere")
##





     



##    if ee == "sa oled jumalik" or ee == "sa oled kaunitar":
##        label1.configure(text="Aitäh, selle ilusa komplimendi eest!!!")
##        button2.configure(bg="gold", text="Enam ei pea midagi ütlema")
##        button2.bind('<Button-1>',stopProg)
##        button1.configure(text="Sa rahuldasid ta!", bg="green")
##        button1.bind('<Button-1>',stopProg)
##        tahvel.create_image(250, 130, image=pilt1)
 
##    elif ee == "jaa":
##        #koht.set(ee + " uus asi") #uude kohta tekkiv
##        label1.configure(text="Mis mõttes mis jaaaaa? ")
##        button1.configure(text="Ilmus uus ja sule mäng kastiga", bg="gold")
##        button1.bind('<Button-1>', lõpeta)
##        button2.configure(bg="red")
##    elif ee == "oled ilus" or ee == "ilus":
##        label1.configure(text="Kui ilus ja kes??? ")
##    elif ee=="oled ilus jaa":
##        label1.configure(text="""Kas sa nagu täislausega ei oska mulle
##öelda kui väga ilus ma olen väää?! """)
##    elif ee == "sa oled kole":
##        stopProg(e)      
##    else:
##        label1.configure(text="""Räägi selgete sõnadega ja täislausega!
##Milline ma siis välja näen su meelest?!?!""")

def lõpeta(e):#kui inimene ajas naise täiesti närvi
    messagebox.showinfo(message="Sa ei suuda mu tuju parandada! Asi on läbi!")
    stopProg(e)


pilt = PhotoImage(file="tumblr_mr4ca3Dn6P1rpqa4xo1_500.gif")
pilt1 = PhotoImage(file="happy-woman-gifs.gif")
tahvel.create_image(200, 200, 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=1, rowspan=1, columnspan=1, sticky=(N, W, E, S))

sona = StringVar()
koht = StringVar() #VARIAABLID

sisestus = ttk.Entry(pearaam, width=40, textvariable=sona)#VASTUS
sisestus.grid(column=2, row=1)

ttk.Label(pearaam, textvariable=koht).grid(column=1, row=5) #SEE ILMUB fniga

button1=Button(pearaam,text="Kast läheb kinni", bg="green") #see võiks tulla kui mäng on läbi
button1.grid(column=2, row=5, sticky=(N, W)) #keskel sticky N W
button1.bind('<Button-1>',stopProg)#kinniminemisefn

button2=Button(pearaam,text="Vasta mulle!", bg="pink", cursor="heart")
button2.grid(column=2, row=3)
button2.bind('<Button-1>',vastamine)

##button3=Button(pearaam,text="Vastan sulle!", bg="blue", activebackground="black")
##button3.grid(column=2, row=3)
##button3.bind('<Button-1>',vastamine) #fn
##
##nupp3=Button(pearaam, text="Kordan sind", bg="brown")
##nupp3.grid(column=2, row=4)
##nupp3.bind('<Button-1>', tuju)
##
##nupp4=Button(pearaam, text="Mängu kaotus", bg="red") #katsetus
##nupp4.grid(column=2, row=6)
##nupp4.bind('<Button-1>', lõpeta)
##
##button4=Button(pearaam, activebackground="black", bitmap="questhead")
##button4.grid(column=4, row=3)
##button4.bind('<Button-1>',vastamine)

label1=Label(pearaam,text="Vasta siis kenasti!", font=appHighlightFont) #ilmub kiri
label1.grid(column=1, row=3)



for child in pearaam.winfo_children(): child.grid_configure(padx=10, pady=10) #paigutuse element


root.mainloop()

pühapäev, 7. detsember 2014

Teen siis ka oma esimese sissekande. Oleme oma projektiga niikaugel, et Helen mässab GUI loomisega ning mina üritan panna vigisevat robotnaist arendama meiega normaalset ja loogilist dialoogi, mis võiks hargneda vastavalt sisestatuud vastustele, mitte kulgeda ainult ühte ettemääratud rada möda. Hetkeseis on seline, et andmesruktuurid on enamvähem paigas ning robot oskab juba natuke rääkida, kuid eriti peale esimese küsimuse-vastuse midagi välja enam ei tule. Homme tuleb siis sellele probleemile lahendus leida. Panen koodi hetkeseisu siiia alla. Helen on ka päris tubli olnud ja graafilise liidese öoomisel üsna palju ära teinud. Tema koodi mingi versioon on eelmises postituses.

Minu kood:

from random import randint
##                #tujud vahemiikus 0-4 kasvavalt. alguses 2. Kui langeb 1 peale
##tuju = 2        #, siis kaotus, kui tõuseb 5 peale, siis võit.
##tujusuund = 5   # kui laneb nulli, siis tuju -= 1; kui tõuseb 10ni, siis += 1
##
##tujud = ["väga_halb", "halb", "nibin_nabin", "hea", "väga_hea"]
##hetkelaused = []
##def tujulaused(tuju):
##    a = tujud[tuju]
##    a = a + "txt"
##    f = open(a)
##    for e in f:
##        e.strip()
##        hetkelaused.append(e)
##    f.close()
##    return(hetkelaused)


#----------------------------andmete sisse lugemine------------------------------------

küsimused = []
vastused = []
lühivastused = []

#loeb sisse küsimused tekstifailist. Igast küsimusest moodustub listi element.
f = open("küsimused.txt")
for e in f:
    e = e.strip()
    küsimused.append(e)
f.close()

#pikematest vastustest on välja võetud võtmesnad. võtmesõnade kombinatsioonid
#moodustavad hulgad. ühele küsimusele vastavad hulgad moodustavad vastuste listis elemendi
f = open('head_vastused.txt')
for e in f:
    templist = []
    e = e.strip().split(',')
    for i in range(len(e)):
        e[i] = e[i].strip()
        hulk = e[i].split()
        templist.append(set(hulk))
    vastused.append(templist)
f.close()

#lühivastustega sama dela, mis küsimustega
f = open('lühivastused.txt')
for e in f:
    e = e.strip().split(',')
    for i in range(len(e)):
        e[i] = e[i].strip()
    lühivastused.append(e)
f.close()
#----------------------------------------funktsioonid-----------------------------------------

#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
   

#------------------------------------põhitsükkel--------------------------------------------------  
küsimuse_järg = 0
vastuse_järg = 0
küsimus = False #kui küsimus on küsitud ja vastust pole, siis on True, vastasel juhul False
while True:
    #küsimuste vastuste voor
    while True:
        if küsimus == False:
            print(küsimused[küsimuse_järg])
            vastus = input()
            küsimuse_järg += 1
            break

        elif küsimus == True:
            vastus = input()
            küsimuse_järg += 1
            break
       
    #vastuse kontrolli voor. praegu ainult esimese küsimuse kohta. more to follow
    if vastuse_pikkus(vastus) <= 2:
        vastus = vastus.lower()
        if vastus in lühivastused[vastuse_järg]:
            print("Mis", vastus + "?" " Misasi ma olen siis, paks või?")
            küsimus = True

    if vastuse_pikkus(vastus) > 2:
        vastus_setina = vastus_set(vastus)
        for e in vastused[vastuse_järg]:
            a = len(e)
            b = len(vastus_setina)
            c = vastus_setina - e
            if len(c) == b - a:
                print('aitäh')
                küsimuse_järg += 1
                break