Gute Güte - hast du dich da wirklich reingeschafft? Dann sollte ich mir wirklich beim Benennen von Variablen und beim Kommentieren mehr Mühe geben.
Ich stelle immer wieder fest, dass es mir schwer fällt, komplexere Codes zu entwickeln und schreibe oft halt noch, wie ich das von Basic kenne, Zeile für Zeile. Das mit dem
Code: Alles auswählen
(h * 20 + start_x - int(t * 20 * 0.3), start_y + t * 6 - v * 20)
for h, t, v in schieb
]
ist ja wirklich viel einfacher - so Sachen muss ich unbedingt lernen. Das mit der Anzahl der Würfelchen war mir nicht so wichtig, ändere ich aber und das mit den Zufallszahlen habe ich einfach ausprobiert, bis es mir gefallen hat, da war mir der tatsächliche Wert nicht so wichtig.
Das mit der Liste in der Mitte ist mir nicht besser eingefallen (ich war aber ganz stolz, dass ich das irgendwie hinbekommen habe.
Diese Routine berechnet die Würfelchen im obersten Stockwerk:
Zuerst eine Liste mit den doppelten Zahlen bis zur maximalen Breite:
[1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
... dann sortiere ich diese Liste in jeder Reihe zufällig neu:
[3, 5, 1, 2, 4, 2, 3, 4, 5, 1]
...und wähle dann die ersten (hier) vier aus und sorge mit "set" dafür, dass keine Zahl doppelt ist:
{1, 2, 3, 5}
... in dieser Zeile werden dann die Würfelchen 1, 2, 3 und 5 gezeichent und
dann kommt die nächste Reihe:
[5, 3, 2, 1, 4, 1, 4, 5, 2, 3]
{1, 2, 3, 5}
[1, 4, 3, 3, 2, 1, 5, 2, 4, 5]
{1, 3, 4}
[1, 3, 3, 5, 5, 2, 4, 1, 2, 4]
{1, 3, 5}
[4, 5, 3, 4, 1, 2, 1, 3, 2, 5]
{3, 4, 5}
Und später muss vorm Zeichnen noch überprüfen, ob ein Klötzchen drunter da ist. Bei der rechten Seite wollte ich, dass auch kein Klötzchen vor einer Lücke steht.
Besser kann ich das nicht

.