Über das Interface habe ich mir noch kaum Gedanken gemacht. Anfangs erstmal die Mathematik und Struktur vernünftig abbilden und die Würfel in der Kommandozeile eingeben.
Im zweiten Schritt dann ein Eingabefeld, dann vielleicht Kästchen zum Anklicken, ob z.b. die kleine Straße schon weg ist und zum Schluss, den ganzen Kniffel Zettel bauen, damit der Bonus auch berechnet werden kann.
Pygame schaue ich mir mal
Welchen Editor für Python empfehlt ihr denn?
Ich hatte drpython runtergeladen, aber krieg den nicht zum Laufen
Ich benutz einfach Notepad++ unter Windows und geany unter Linux.
Bestens
Die anderen, fancy Editoren haben dann noch Bibliotheken eingebaut? DrPython z.B. hat dann noch C++ Bibliotheken integriert bzw. erlaubt es diese über wxpython zu nutzen?
Ist idle schon direkt eingebaut?
Ein Rechtsklick gibt mir zumindest die Möglichkeit edit with idle
Ich habe mir ein paar Gedanken gemacht und von den Problemen, die mir eine kl. und gr. Straße bereiten wird, will ich mal gar nicht erst anfangen
Mein erster Ansatz ist jetzt
Das müsste eigentlich für Einser-Sechser funktionieren.Code:Eingabe = list(input("Ihre Eingabe? (xxxxx)")) Neuwurf = (5-Eingabe.count("1")) print((Eingabe.count("1"))+(Neuwurf*1/6)) Offen = input("lass offen Junge")
Das funktioniert aber schon nicht
Wie kann ich das Fenster offen lassen?Code:Eingabe = list(input("Ihre Eingabe? (xxxxx)")) Neuwurf.Einser = (5-Eingabe.count("1")) EV.Einser = ((Eingabe.count("1"))+(Neuwurf.Einser*1/6)) Neuwurf.Zweier = (5-Eingabe.count("2")) EV.Zweier = ((Eingabe.count("2")*2)+(Neuwurf.Zweier*2/6)) print(EV.Einser, EV.Zweier) Offen = input("lass offen Junge")
Auch bei Error poppt es nur für einen Sekundenbruchteil auf
€: Jetzt müsste der EV für Zweier zumindest in der Theorie stimmen
Und die Variable Neuwurf.XXX muss ich ja eigentlich auch nicht definieren
Geändert von Rorschach (04. Juni 2017 um 21:36 Uhr)
Bei Windows ist das der Fall.
1. Namen von Variablen werden klein geschrieben. Also "neuwurf" statt "Neuwurf".Mein erster Ansatz ist jetzt
Das müsste eigentlich für Einser-Sechser funktionieren.Code:Eingabe = list(input("Ihre Eingabe? (xxxxx)")) Neuwurf = (5-Eingabe.count("1")) print((Eingabe.count("1"))+(Neuwurf*1/6)) Offen = input("lass offen Junge")
2. Die count-Methode gibt es auch für Strings. Z.B. "11111".count("1") ergibt 5.
3. Die Klammern in der 3. Zeil sind alle überflüssig, bis auf die zu print gehörigen Klammern.
4. Was soll eigentlich passieren?
1. Was ist EV? Ist nicht definiert, kann somit ein Attribut mit dem Namen "Einser" nicht geben.Code:Eingabe = list(input("Ihre Eingabe? (xxxxx)")) Neuwurf.Einser = (5-Eingabe.count("1")) EV.Einser = ((Eingabe.count("1"))+(Neuwurf.Einser*1/6)) Neuwurf.Zweier = (5-Eingabe.count("2")) EV.Zweier = ((Eingabe.count("2")*2)+(Neuwurf.Zweier*2/6)) print(EV.Einser, EV.Zweier) Offen = input("lass offen Junge")
2. Was ist Neuwurf? Auch nicht definiert.
Was für ein Fenster? Was verwendest du?Wie kann ich das Fenster offen lassen?
Das war das Problem, ich wollte keine Attribute vergeben, sondern einfach Na.me machen
Ich habe es etwas angepasst und erweitert
Eingabe gibt die Würfelergebnisse aus dem ersten Wurf, mit Eingabe.count zähle ich wieviel 4er etc schon dabei sind und 5-Eingabe.count gibt mir, wieviel Würfel ich für z.B. die Vierer neuwerfen muss.Code:eingabe = input("Ihre Eingabe? (xxxxx)") eveinser = ((eingabe.count("1")*1)+((5-eingabe.count("1"))*1/6)) evzweier = ((eingabe.count("2")*2)+((5-eingabe.count("2"))*2/6)) evdreier = ((eingabe.count("3")*3)+((5-eingabe.count("3"))*3/6)) evvierer = ((eingabe.count("4")*4)+((5-eingabe.count("4"))*4/6)) evfünfer = ((eingabe.count("5")*5)+((5-eingabe.count("5"))*5/6)) evsechser = ((eingabe.count("6")*6)+((5-eingabe.count("6"))*6/6)) print("EVEinser", eveinser, evzweier, evdreier, evvierer, evfünfer, evsechser) Offen = input("lass offen Junge")
Da es keine Simulation ist, nehme ich die direkt die Wahrscheinlichkeit, mit der ich eine bestimmte Zahl würfele, und multipliziere sie mit dem Punktwert (für 4er 4*1/6 -> 4/6) und das gibt mir dann zusammen mit den schon rausgelegten 4er den Gesamterwahrtungswert.
Nächster Schritt wäre dann erstmal, die Ergebnisse in Liste zu packen und die zu sortieren und mir nur das beste Ergebnisse anzeigen zu lassen. Nur muss ich dann auch noch eine Beschriftung ausgeben lassen, dass ich weiß was das denn war.
Das müsste doch mit tupel gehen, die kann man doch auch in eine Liste packen oder?
Editor -> als *.py speichern und mit Python öffnen, dann kommt doch das Kommandozeilen(?) Fenster und das schließt sich direkt wieder, wenn das Program fehlerfrei oder auch mit Fehlern durchgelaufen ist.
Kann ich das offen lassen?
Du kannst das py-File in IDLE öffnen.
Dann kannst Du es mit IDLE mit Syntaxhighlighting bearbeiten. Und Du kannst es in IDLE direkt ausführen.
Außerdem bringt IDLE eine interaktive Python-Eingabeaufforderung mit.
Damit kann man schnell mal dinge ausprobieren.
Zum Beispiel:
>>> liste={}
>>> liste[1]=1.5
>>> liste[2]=4
>>> liste[3]=3
>>> liste
{1: 1.5, 2: 4, 3: 3}
>>> max(liste, key=liste.get)
2
Verstand op nul, frituur op 180.
Die beste Wahrscheinlichkeit direkt auszurechnen ist mathematisch schon recht schwierig.
Ich würde es so machen:
Eine Funktion bauen, die die Punkte eines Wurfs ausrechnet.
Dann für jeden Wurf alle Kombinationen an Würfel stehen lassen, die übrigen neu würfeln und das Ergebnis in eine Liste eintragen. Dann kann man in der Liste gucken, welche Würfel man am besten raus legen sollte.
Verstand op nul, frituur op 180.
Vielleicht besser grundsätzlich keine deutschen Begriffe Verwenden.
Steuwerttabelle oder assoziatives Datenfeld sind ja auch keine dollen Begriffe.
Verstand op nul, frituur op 180.