2 Variablen nutzen.
Verfasst: Samstag 12. Dezember 2020, 15:18
Hallo zusammen,
da ich mich entschlossen habe Python zu lernen steh ich jetzt vor einer Hürde.
Das Script an dem ich sitze soll ein Spiel sein bei dem man ein Wort erraten muss wie bei Galgenmännchen.
Die zu erratenden Worte werden dabei aus einer Datei ausgelesen. Es soll auch die Sprache gewechselt werden können.
Soweit funktioniert das Programm.
Als nächstes wollte ich eine Möglichkeit einbauen um die Länge der wählen zu können. Dabei stehe ich jetzt vor der Hürde
das nicht mehr die Datei eingelesen wird sondern die Länge. (wenn ich die Zeile #1 deaktiviere läuft das Programm wieder
aber ohne die Wiedergabe des Wertes für die Länge.
Was hab ich vergessen. Wie schaffe ich es das ich für beide Auswahlmöglichkeiten einen Wert zurück bekomme.
(Die ganzen Print angaben dienen nur dem Einblick um zu sehen was ab wo ausgegeben wird.
Danke schonmal für die Hilfe.
da ich mich entschlossen habe Python zu lernen steh ich jetzt vor einer Hürde.
Das Script an dem ich sitze soll ein Spiel sein bei dem man ein Wort erraten muss wie bei Galgenmännchen.
Die zu erratenden Worte werden dabei aus einer Datei ausgelesen. Es soll auch die Sprache gewechselt werden können.
Soweit funktioniert das Programm.
Als nächstes wollte ich eine Möglichkeit einbauen um die Länge der wählen zu können. Dabei stehe ich jetzt vor der Hürde
das nicht mehr die Datei eingelesen wird sondern die Länge. (wenn ich die Zeile #1 deaktiviere läuft das Programm wieder
aber ohne die Wiedergabe des Wertes für die Länge.
Was hab ich vergessen. Wie schaffe ich es das ich für beide Auswahlmöglichkeiten einen Wert zurück bekomme.
(Die ganzen Print angaben dienen nur dem Einblick um zu sehen was ab wo ausgegeben wird.
Danke schonmal für die Hilfe.
Code: Alles auswählen
import random
from tkinter import *
class Wortgenerator:
def __init__ (self, datei):
self.wortliste=[]
self.laenge=[]
laenge=self.laenge
print("wg: "+str(datei))
f=open(datei,'r')
liste=f.read().split()
f.close()
for wort in liste:
if wort.isalpha()and len(wort)>5:
self.wortliste.append(wort.upper())
print("laenge 1: "+str(laenge))
print("laenge 2: "+str(self.laenge))
#print(self.wortliste) # liefert die komplette Datei
print("Datei: "+datei) # Gibt die ausgewählte Datei zurück.
print("Datei??:"+datei)
print("l: "+str(laenge))
def getWort(self):
return random.choice(self.wortliste)
# Auswahl der Sprache bzw. der verwendeten Datei
class Sprache:
def __init__(self, master):
self.master=master
self.rahmen=Frame()
self.datei=StringVar()
self.deutschRadio=Radiobutton(self.rahmen,
value='clavigo.txt',
text="deutsch",
variable=self.datei)
self.englRadio=Radiobutton(self.rahmen,
value='INNOCENTS ABROAD.txt',
text="english",
variable=self.datei)
self.testRadio=Radiobutton(self.rahmen,
value='test.txt',
text="test",
variable=self.datei)
self.deutschRadio.select() # Wählt die Sprache beim Start
self.deutschRadio.pack()
self.englRadio.pack()
self.testRadio.pack()
self.wg=Wortgenerator(self.datei.get())
def getDatei(self):
return self.datei.get()
def neuerWG(self):
self.wg=Wortgenerator(self.datei.get())
# Auswahl der Laenge der abgefragten Worte
class Laenge:
def __init__(self, master):
self.master=master
self.rahmen=Frame()
self.laenge=StringVar()
laenge=self.laenge
self.vierRadio=Radiobutton(self.rahmen, indicatoron=0,
value='4',
text="4er",
variable=self.laenge)
self.fuenfRadio=Radiobutton(self.rahmen, indicatoron=0,
value='5',
text="5er",
variable=self.laenge)
self.sechsRadio=Radiobutton(self.rahmen, indicatoron=0,
value='6',
text="6er",
variable=self.laenge)
self.vierRadio.select()
self.vierRadio.pack()
self.fuenfRadio.pack()
self.sechsRadio.pack()
self.wg=Wortgenerator(self.laenge.get())
print("self.laenge: " +str(self.laenge))
print("lang: " +str(laenge))
def laenge(self):
return self.laenge.get()
laenge=self.laenge.get()
lang=self.laenge.get
self.wg=Wortgenerator(self.laenge.get()) #1
print("A: "+str(laenge))
#print("self.laenge 1: " +str(self.laenge))
print("lang 3: " +str(laenge))
class NeuButton:
def __init__(self,master,punkte,sprache,ausgabe):
self.ausgabe=ausgabe
self.punkte=punkte
self.sprache=sprache
#self.sprache=laenge
self.button=Button(master,
text="Neu",
command=self.neuesSpiel)
def neuesSpiel(self):
self.sprache.neuerWG()
self.punkte.setPunkte(20)
self.ausgabe.neuesWort()
class Punkte:
def __init__(self, master, p):
self.punkte=p
self.label=Label(master, bg='yellow',
text=str(p), font=('Arial',20))
def aktualisiere(self, wert):
self.punkte+=wert
self.label.config(text=str(self.punkte))
def setPunkte(self, punkte):
self.punkte=punkte
self.label.config(text=str(self.punkte))
class Ausgabe:
def __init__(self, master,sprache):
self.sprache=sprache
self.laenge=sprache
self.wort=self.sprache.wg.getWort()
self.ausgabe=len(self.wort)*"-"
self.label=Label(master, bg='white',
text=self.ausgabe, font=('Courier',20))
print("1. Lösung: " +str(self.wort))
def neuesWort(self):
self.wort=self.sprache.wg.getWort()
self.ausgabe=len(self.wort)*"-"
self.label.config(text=len(self.wort)*"-")
print("Lösung Neu: " +str(self.wort))
def aktualisiere(self, wort):
self.ausgabe=wort
self.label.config(text=wort)
class OKButton:
def __init__(self, master, eingabe, ausgabe, punkte, wortgenerator):
self.eingabe=eingabe
self.ausgabe=ausgabe
self.punkte=punkte
self.wg=wortgenerator
self.button=Button(master,
text="OK",
command=self.pruefe)
def pruefe(self):
z=self.eingabe.get().upper()
ausgabeliste=list(self.ausgabe.ausgabe)
self.eingabe.delete(0)
if z in self.ausgabe.wort and z not in self.ausgabe.ausgabe:
# Ausgabe aktualisieren und Pluspunkte
for i in range(len(self.ausgabe.wort)):
if self.ausgabe.wort[i]==z:
ausgabeliste[i]=z
self.ausgabe.aktualisiere(''.join(ausgabeliste))
self.punkte.aktualisiere(1)
# Wenn Wort vollständig, erzeuge neues Wort
if "-" not in self.ausgabe.ausgabe:
self.button.after(2000, self.ausgabe.neuesWort)
self.punkte.aktualisiere(5)
else: self.punkte.aktualisiere(-1)
print(z) # Gibt alle Eingaben wieder
print(self.ausgabe.ausgabe) # Gibt die richtigen Eingaben wieder
class Spiel:
def __init__ (self):
self.fenster=Tk()
self.sprache=Sprache(self.fenster)
self.laenge=Laenge(self.fenster)
self.titel=Label(self.fenster,
text="Wörterraten", font=('Arial',20))
self.labelEingabe=Label(text="Buchstabe:")
self.punkte=Punkte(self.fenster,20)
self.ausgabe=Ausgabe(self.fenster, self.sprache)
self.neu=NeuButton(self.fenster, self.punkte, self.sprache, self.ausgabe)
self.eingabe=Entry(self.fenster, width=2,
font=('Arial',20))
self.ok=OKButton(self.fenster, self.eingabe, self.ausgabe,
self.punkte, self.sprache.wg)
self.layout()
print("Länge Spiel: "+str(Laenge)) # Wenn 1 Tab weiter anzeige erst nach beenden
def layout(self):
self.titel.grid(column=0,row=0,columnspan=2)
self.punkte.label.grid(column=3, row=0)
self.ausgabe.label.grid(column=0,row=1,columnspan=4)
self.sprache.rahmen.grid(column=0,row=2,padx=10)
self.laenge.rahmen.grid(column=0, row=3,padx=10)
self.neu.button.grid(column=1,row=2)
self.eingabe.grid(column=2,row=2,padx=20)
self.eingabe.focus_set()
self.ok.button.grid(column=3,row=2)
self.fenster.mainloop()
spiel=Spiel()