Bundesliga-Simulator
Verfasst: Sonntag 30. August 2015, 01:25
Hallo,
ich versuche gerade einen Bundesliga-Simulator zu programmieren, der komplett im Terminal ablaufen soll. Angriffs- und Defensivstärke der Mannschaften habe ich berechnet, so dass ich die Erwartungswerte für die verschiedenen Partien berechnen kann. Nun möchte ich das Programm aber noch um die Punkteverteilung erweitern und die macht mir derzeit noch Probleme.
Ich habe eingangs für jeden Verein eine jeweilige Punktevariable definiert und gleich Null gesetzt. In einer for-Schleife geht das Programm nun alle 9 Partien pro Spieltag durch und überprüft in einer darin enthaltenen if-elif-else-Struktur, ob die Heimmannschaft gewonnen oder verloren hat oder ob ein Unentschieden gespielt wurde.
Jede Partie ist eine Liste, die die Tore, Gegentore, die Punktevariablen für beide Mannschaften und die Namen der beiden Mannschaften enthält. Die for-Schleife wird also mit den Partien gefüttert und danach werden die entsprechenden Daten aus der Liste gezogen und ausgewertet.
Ich hätte es nun gerne so, dass für den Fall, dass die Heimmannschaft gewinnt, die Punktevariable dieses Teams um 3 erhöht wird und danach global "abgespeichert" wird, damit für den nächsten Spieltag der Zähler nicht wieder bei Null startet. Nur leider klappt das momentan nicht und ich habe gedacht, dass das eventuell mit return funktioniert, aber leider wird dann die komplette for-Schleife nach der ersten Partie direkt abgebrochen.
Beim Schreiben fällt mir gerade ein, dass die Punkteverteilungsfunktion als Argument natürlich die Punktevariablen einlesen muss, um diese zu verändern. Leider sehe ich momentan nur noch nicht, wie ich diese for-Schleife möglichst kompakt programmieren kann, um nicht für jeden Verein eine if-elif-else Struktur zu programmieren, die dann den Code nur mega in die Länge ziehen würde. Das wäre natürlich irgendwie möglich, aber mega umständlich und hässlich.
Meine Idee bzw. Vorstellung von dieser Punktefunktion ist, dass die for-Schleife von 1 bis 9 zählt - jeweils ein Durchlauf pro Partie - und dann für jede Partie checkt, ob die Heimmannschaft gewonnen oder verloren hat oder unentschieden gespielt hat - das läuft dann über die Erwartungswerte der Tore bzw. Gegentore der Heimmannschaft. Je nach Bedingung werden dann die Punktevariablen der Teams, die in der Partie-Liste - 9 Listen pro Spieltag - enthalten sind, um 3, 1 oder 0 erhöht und abgespeichert, so dass in der Partie-Liste vom nächsten Spieltag die bearbeiteten Punktevariablen enthalten sind. Nach der Bearbeitung und Abspeicherung der Punktevariable wird der Zähler der for-Schleife um 1 erhöht.
Nun, ich hoffe, dass ihr mir weiterhelfen könnt und wisst, wie ich mir das vorstelle und das gerne programmieren würde.
ich versuche gerade einen Bundesliga-Simulator zu programmieren, der komplett im Terminal ablaufen soll. Angriffs- und Defensivstärke der Mannschaften habe ich berechnet, so dass ich die Erwartungswerte für die verschiedenen Partien berechnen kann. Nun möchte ich das Programm aber noch um die Punkteverteilung erweitern und die macht mir derzeit noch Probleme.
Ich habe eingangs für jeden Verein eine jeweilige Punktevariable definiert und gleich Null gesetzt. In einer for-Schleife geht das Programm nun alle 9 Partien pro Spieltag durch und überprüft in einer darin enthaltenen if-elif-else-Struktur, ob die Heimmannschaft gewonnen oder verloren hat oder ob ein Unentschieden gespielt wurde.
Jede Partie ist eine Liste, die die Tore, Gegentore, die Punktevariablen für beide Mannschaften und die Namen der beiden Mannschaften enthält. Die for-Schleife wird also mit den Partien gefüttert und danach werden die entsprechenden Daten aus der Liste gezogen und ausgewertet.
Ich hätte es nun gerne so, dass für den Fall, dass die Heimmannschaft gewinnt, die Punktevariable dieses Teams um 3 erhöht wird und danach global "abgespeichert" wird, damit für den nächsten Spieltag der Zähler nicht wieder bei Null startet. Nur leider klappt das momentan nicht und ich habe gedacht, dass das eventuell mit return funktioniert, aber leider wird dann die komplette for-Schleife nach der ersten Partie direkt abgebrochen.
Beim Schreiben fällt mir gerade ein, dass die Punkteverteilungsfunktion als Argument natürlich die Punktevariablen einlesen muss, um diese zu verändern. Leider sehe ich momentan nur noch nicht, wie ich diese for-Schleife möglichst kompakt programmieren kann, um nicht für jeden Verein eine if-elif-else Struktur zu programmieren, die dann den Code nur mega in die Länge ziehen würde. Das wäre natürlich irgendwie möglich, aber mega umständlich und hässlich.
Meine Idee bzw. Vorstellung von dieser Punktefunktion ist, dass die for-Schleife von 1 bis 9 zählt - jeweils ein Durchlauf pro Partie - und dann für jede Partie checkt, ob die Heimmannschaft gewonnen oder verloren hat oder unentschieden gespielt hat - das läuft dann über die Erwartungswerte der Tore bzw. Gegentore der Heimmannschaft. Je nach Bedingung werden dann die Punktevariablen der Teams, die in der Partie-Liste - 9 Listen pro Spieltag - enthalten sind, um 3, 1 oder 0 erhöht und abgespeichert, so dass in der Partie-Liste vom nächsten Spieltag die bearbeiteten Punktevariablen enthalten sind. Nach der Bearbeitung und Abspeicherung der Punktevariable wird der Zähler der for-Schleife um 1 erhöht.
Nun, ich hoffe, dass ihr mir weiterhelfen könnt und wisst, wie ich mir das vorstelle und das gerne programmieren würde.