Impiccato con la GUI, piccolo problema

Stato
Discussione chiusa ad ulteriori risposte.

Eijin

Utente Silver
17 Luglio 2008
18
2
0
61
Salve a tutti, stavo provando ad aggiungere una vesta grafica al mio giochino dell'impiccato(uso tkinter), funziona tutto, tranen per il fatto che non riesco a gestire bene i tentativi possibili da eseguire, qualcuno ha qualche vaga idea di come risolvere?
Codice:
from Tkinter import *
class Impiccato:
    def __init__(self, master):
        
        frame=Frame(master)
        frame.pack()

        self.entry=Entry(frame, text="")
        self.entry.pack(side=LEFT)

        self.button=Button(frame, text="Controlla lettera",command=self.controlla)
        self.button.pack(side=LEFT)

        self.prova=Button(frame, text="Immetti",command=self.sostituisci)
        self.prova.pack(side=LEFT)

        self.oscura=Entry(frame, text="****")
        self.oscura.pack(side=LEFT)

        self.label=Entry(frame, text="")
        self.label.pack(side=LEFT)

        global osc
        global valori
        valori=[0,0]
        osc=['*','*','*','*']

    def controlla(self):
        a=self.entry.get()
        print a

    def sostituisci(self):
        v=self.entry.get()
        parola=['c','a','n','e']
        
        conta=range(4)
        conta1=range(10)
        self.oscura.delete(0,END)
        self.oscura.insert(END,osc)
        for i in conta1:
            b=0
            if valori[0]==5:
                self.label.delete(0,END)
                self.label.insert(END,"Mi dispiace hai perso")
                break;
            for i in conta:
                if parola[i]==v:
                    osc[i]=parola[i]
                    self.label.delete(0,END)
                    self.label.insert(END,"Hai indovinato una lettera")
                    self.entry.delete(0,END)
                    break;
                else:
                    b=b+1
                    self.label.delete(0,END)
                    self.label.insert(END,"Sbagliato lettera, riprova")
                    self.entry.delete(0,END)
                    
                if b==4:
                    valori[0]=valori[0]+1
                    break;
                else:
                    continue;
            self.oscura.delete(0,END)
            self.oscura.insert(END,osc)
            
            if osc==parola:
                self.label.delete(0,END)
                self.label.insert(END,"hai vinto")
            else:
                continue;
            self.oscura.delete(0,END)
            self.oscura.insert(END,osc)

root=Tk()
app=Impiccato(root)
root.mainloop()

Ty in anticipo
 
Che anche se l'utente sbaglia per 5 volte di fila la lettera inserita, non appare il messaggio di sconfitta
 
in effetti è molto strano, 'spetta che faccio qualche prova (però togli quei ; dopo break e continue, sono inutili...)
 
posta se trovi la soluzione perché non sono pratico di tkinter e interessa anche a me (io uso pythoncard come gui XD)
Grazie :)
 
TROVATA LA SOLUZIONE*-*.
Praticamente tra scuola e impegni vari, è da 1 settimana che lavoro a questo programma, ed ecco la soluzione definitiva, la grafica è fessa, ma funziona, ecco a voi il source
Codice:
from Tkinter import *
class Impiccato:
    def __init__(self, master):
        
        frame=Frame(master)
        frame.pack()

        self.entry=Entry(frame, text="")
        self.entry.pack(side=LEFT)

        self.button=Button(frame, text="Controlla lettera",command=self.controlla)
        self.button.pack(side=LEFT)

        self.prova=Button(frame, text="Immetti",command=self.sostituisci)
        self.prova.pack(side=LEFT)

        self.oscura=Entry(frame, text="****")
        self.oscura.pack(side=LEFT)

        self.label=Entry(frame, text="")
        self.label.pack(side=LEFT)

        self.vite=Entry(frame, text="Ti restano 5 tentativi")
        self.vite.pack(side=LEFT)

        global osc
        global valori
        valori=[0,0]
        osc=['*','*','*','*']

    def controlla(self):
        a=self.entry.get()
        print a

    def sostituisci(self):
        v=self.entry.get()
        parola=['c','a','n','e']
        b=1
        
        conta=range(4)
        conta1=range(10)
        self.oscura.delete(0,END)
        self.oscura.insert(END,osc)
        for i in conta1:
            
            
            for i in conta:
                if parola[i]==v:
                    osc[i]=parola[i]
                    b=2
                    self.label.delete(0,END)
                    self.label.insert(END,"Hai indovinato una lettera")
                    self.entry.delete(0,END)
                    break;
                else:
                    
                    self.label.delete(0,END)
                    self.label.insert(END,"Sbagliato lettera, riprova")
                    self.entry.delete(0,END)
                    continue;
                
            self.oscura.delete(0,END)
            self.oscura.insert(END,osc)
            if b==1:
                valori[0]=valori[0]+1
                viterimaste=5-valori[0]
                if viterimaste==0:
                    self.label.delete(0,END)
                    self.label.insert(END,"Mi dispiace ma hai perso")
                self.vite.delete(0,END)
                self.vite.insert(END,"Ti restano")
                self.vite.insert(END,viterimaste)
                self.vite.insert(END,"vite")
                break
            else:
                viterimaste=5-valori[0]
                self.vite.delete(0,END)
                self.vite.insert(END, "Ti restano")
                self.vite.insert(END, viterimaste)
                self.vite.insert(END,"vite")
            if osc==parola:
                self.label.delete(0,END)
                self.label.insert(END,"hai vinto")
            else:
                continue;
            self.oscura.delete(0,END)
            self.oscura.insert(END,osc)

root=Tk()
app=Impiccato(root)
root.mainloop()

Ho faticato tantissimo ç_ç, ma alla fine è una soddisfazione immane*-*.
Unica cosa che devo ancora implementare è che quando si perde il programma si deve chiudere, ma quelli son dettagliucci :p

Avevo sbagliato a copiare il soruce, ora ho messo quello giusto.

[OT]Mi sento veramente solo ad essere l'unico che ha l'indicatore della reputazione grigio T.T, dovrò migliorare ancora asd[/OT]
 
bravo +1...leggi il mio ot XD... [ot]non mi è tanto piaciuto l'intervento in ot che mi è parso come un "votatemi" ma può essere che mi sbaglio io. tutto sommato ti stai impegnando tanto e poi ti capisco. Io ho la reputazione ferma a 1 da ottobre (evidentemente non mi merito di più... Amen XD :) [/ot]

[ot]non ti sto accusando... è solo una mia impressione che ho avuto leggendo XDXD non sta prendertela ;)[/ot]
 
cosa c'era di sbagliato alla fine?
[ot]cmq nn preoccupatevi per la reputazione, a me si è sbloccata solo a giugno perchè ho votato robertof appena arrivato, prima era a 0.......... cmq entrambi avete il mio voto pythoniano ;) [/ot]
 
Il mio non era assolutamente un "votatemi" xDD, solo che mi sentivo un pò una merducchia, grazie ad entrambi^^, domani mi metto a lavorare sulla chat*-*
 
:hail: no scherzo XD
Thanks vir... Malex ti avevo già ringraziato ma rinnovo va... :)

Eijin... Scusa x aver frainteso

sulla chat?!? Ormai possiamo fare concorrenza a msn (XDXD ne abbiamo 3 in python )... Buona idea, serve per i socket
 
Sisi, ma io stavo pensando ad una chat un pochino diversa, una sorta di P2P, ma al posto dei file condivide messaggi, ogni cliente fa anche da server, insomma, ci perderò la mia bella settimana, la scuola può farsi friggere xDDD
 
mmm... Mi piace (io sono al lavoro per un mail bomber con gui)... Appena lo fai postalo che mi piacerebbe studiarmelo grazie
 
la chat p2p (se nn sbaglio in python se ne trovano già un paio girovagando tramite google) ha tuttavia un problema di fondo, che richiede quindi cmq un server di base: gli ip degli altri. Una soluzione sarebbe la seguente: un server, con ip dunque fisso, che da una lista di altri ip.
 
effettivamente, ci stavo pensando, e le difficoltà non sono poche, raga, una domanda, perchè quando faccio i miei esperimenti con i socket in python, ogni tanto mi dice(nonostante il codice sia corretto), impossibile avviare il socket? Quando succede questo sono costretto a riavviare il pc, e LO STESSO codice che prima dava problemi, funziona benissimo, ma solo per un paio di prove, poi sono costretto a riavviare di nuovo....Consigli?(oltre a bruciare winzozz ovviamente :p)
 
succede anche a me. Purtroppo non ho ancora risolto il problema mistero XD. Le meraviglie di windows continuano a stupirmi LOL.

P.s. Consiglio: se vuoi parlare della chat apri un altro 3d che siamo abbastanza OT
 
[ot]ti ficco un -1 diretto LOOOOOOOOOOOOOOOOOL

no scherzo... cmq kubuntu è più bello... io li ho provati tutti e due e mi piace di più il KDE (opinione mia tra ubuntu e kubuntu)[/ot]
 
[OT] Io ho solo provato ubuntu...ma se dici così mi fido :p e quindi la prossima distro che userò sarà kubuntu:p[/OT]
 
[OT]Alla fine dipende dai gusti, io per esempio preferisco la semplicità di gnome, niente toglie allo stile di KDE di cui è uscita ora l'ultima versione "stabile"[/OT]
 
[ot]si infatti... io stavo scherzando XD... però KDE ha una grafica molto bella (non voglio constringere nessuno XD.. era solo una opinione personale dato che tra Ubuntu e Kubuntu cambia solo la grafica se nono sbaglio)[/ot]
 
Stato
Discussione chiusa ad ulteriori risposte.