Ich bin ein junger Python-Neuling und musste mich kürzlich der Aufgabe der Programmierung eines Hangman-Spiels widmen.. Was ich bis heute nicht geschafft habe. Finde bei bestem Willen einfach nicht die Ursache dafür, dass der Code nicht funktioniert, bzw. die Labels nicht aktualisiert werden und schon der erste Anfangsbuchstabe eines Worts zum Sieg führt. :/
Wäre sehr froh über Hilfe oder Verbesserungsvorschläge .. Hier der ( Link zum ) Code:
http://pastebin.com/tRnV7rLz
Ich bedanke mich schon mal ganz herzlich im Voraus!
Code: Alles auswählen
#Hangman
import random
import time
from tkinter import *
Wort = ""
Wort2 = []
Wortlis = []
Wortanzeige = []
Versuch = ""
Versuchte = []
Fehler = 0
inside = False
mark = 0
msgHilfe = 0
labelSieg = 0
labelNiederlage = 0
Niederlage = False
Sieg = False
#Funktion======================================================================================
def newRound():
global Gewonnen, Verloren, Fehler, Wortanzeige, Wort, Wort2, labelNiederlage, labelSieg, Niederlage, Sieg
Woerter = open('E:\Hangman-Projekt\Woerter.txt', 'r')
Woerterliste = []
Wort2 = []
Versuchte = []
Fehler = 0
if Sieg == True:
labelSieg.destroy()
Sieg = False
if Niederlage== True:
labelNiederlage.destroy()
Niederlage = False
for line in Woerter:
line = line.strip()
Woerterliste.append(line)
Wort = Woerterliste[random.randrange(0, len(Woerterliste))]
for i in range(1, len(Wort)+1, 1):
Wort2.append(Wort[i - 1])
for i in range(1, len(Wort)+1, 1):
Wortanzeige.append("_")
Woerter.close()
def popupHilfe():
global mark, msgHilfe #Durch global ist der Zugriff auf die Variablen ermöglicht
if mark==0:
msgHilfe=Message(dialogFenster,text="Hangman:\nErraten sie das Gesuchte Wort, indem sie nach und Nach einzelne \nBuchstaben erraten.\nVersuchen Sie dies mit möglichst wenigen Versuchen, \nda ihnen bei jedem Fehler ein Versuch abgezogen wird.")
msgHilfe.pack() #Sorgt für eine "schöne" Plazierung des Popup
mark=1
else:
msgHilfe.destroy()
mark=0
def inspection():
global Fehler, Wortanzeige, Versuchte, inside, Wort, Wort2, labelSieg, laberNiederlage, Sieg, Niederlage
Versuch = eingabeEingabe.get()
inside = False
for i in range(1, len(Wort) + 1, 1):
if Versuch.upper() == Wort[i - 1] or Versuch.lower() == Wort[i - 1]:
del Wortanzeige[i - 1]
Wortanzeige.insert(i - 1, Wort[i-1])
inside = True
if inside == False:
Fehler = Fehler + 1
Versuchte = Versuchte + [Versuch]
if Wortanzeige == Wort2: #Ist die Runde beendet?
labelSieg = Label(master=dialogFenster, bg='green', text="Sie haben Gewonnen!")
labelSieg.place(x=400, y=740)
Sieg = True
if Fehler == 10:
labelNiederlage = Label(master=dialogFenster, bg='red', text="Sie haben Verloren!")
labelSieg.place(x=400, y=740)
Niederlage = True
#Funktion======================================================================================
#Dialogfenster erstellen
dialogFenster = Tk()
dialogFenster.title('Hangman')
dialogFenster.geometry('600x780')
#Labels
labelFehler = Label(master=dialogFenster, text=("Fehler:", Fehler), fg='red', font=("Helevatica", 14))
labelFehler.place(x=10, y=10)
labelWortanzeige = Label(master=dialogFenster, text=("Gesucht:", Wortanzeige), fg='blue', bg='white')
labelWortanzeige.place(x=100, y=550, width=400, height=50)
labelVersuchte = Label(master=dialogFenster, text=("Versuchte:", Versuchte), fg='blue', bg='white')
labelVersuchte.place(x=100, y=630, width=400, height=50)
#Entrys
eingabeEingabe = Entry(master=dialogFenster, bg='#d8d9e3')
eingabeEingabe.place(x=280, y=700, width=60, height=30)
#Buttons
buttonHilfe = Button(master=dialogFenster, text="Hilfe", command=lambda: popupHilfe()) #mit lambda lassen sich beliebig vile anonyme kunktionen erstellen. Ohne wäre hier das popup dauerhaft angezeigt...
buttonHilfe.place(x=560, y=0, width=40, height=20)
buttonEingabe = Button(master=dialogFenster, text="Eingabe", bg='#d8d9e3', command=lambda: inspection())
buttonEingabe.place(x=280, y=740, width=60, height=30)
buttonnewRound = Button(master=dialogFenster, text='Neue Runde', command=lambda: newRound())
buttonnewRound.place(x=120, y=740, width=80, height=30)
#Dialogfenster aktivieren
dialogFenster.mainloop()