Listen über ein Dictionary ändern
Verfasst: Dienstag 30. Mai 2017, 13:00
Hallo zusammen,
ich versuche mich immer noch an einer OOP-Version eines Rubiks Cubes. Dazu habe ich eine Klasse geschrieben, die jedem Stein ein Objekt mit mehreren Eigenschaften zuweist. Zur Zeit bin ich mir auch noch etwas unsicher, ob das sinnvoll oder einfach nur kompliziert ist, aber als Übung ist es bestimmt nicht ganz verkehrt...
Jetzt muss ich mir den Würfel natürlich auch anzeigen lassen können und muss dafür die Position der Steine den einzelnen Feldern der sechs Seiten zuweisen. Eigentlich muss ich noch ein paar Sachen mehr beachten, aber die Sachen spielen bei dem Problem erstmal keine Rolle.
Zum Zuweisen könnte ich für jede Position eine IF-Bedingung erstellen, wie hier in Kurzform für den Kantenstein Frontseite oben mitte. Die [45, 0] sind Raumwinkel, die die Position des Steins beschreiben:
Das funktioniert zwar, aber dann hätte ich 20 IF-Bedingungen (je einen für einen Eck- bzw. Kantestein) hintereinander, was ich nicht sehr schön finde...
Meine erste Idee war jetzt das ganze über ein Dictionary zu lösen, da ich das sehr übersichtlich finde:
Aber natürlich funktioniert das so nicht, da ich die Werte '1' und '2' nicht den Seiten 'up' und 'front', sondern dem Dictionary zuweise. Leider fällt mir aber keine andere Lösung ein.
Kennt jemand eine Möglichkeit oder Datenstruktur mit der sich das schön lösen lässt?
Schon einmal vielen Dank für eure Zeit.
ich versuche mich immer noch an einer OOP-Version eines Rubiks Cubes. Dazu habe ich eine Klasse geschrieben, die jedem Stein ein Objekt mit mehreren Eigenschaften zuweist. Zur Zeit bin ich mir auch noch etwas unsicher, ob das sinnvoll oder einfach nur kompliziert ist, aber als Übung ist es bestimmt nicht ganz verkehrt...
Jetzt muss ich mir den Würfel natürlich auch anzeigen lassen können und muss dafür die Position der Steine den einzelnen Feldern der sechs Seiten zuweisen. Eigentlich muss ich noch ein paar Sachen mehr beachten, aber die Sachen spielen bei dem Problem erstmal keine Rolle.
Zum Zuweisen könnte ich für jede Position eine IF-Bedingung erstellen, wie hier in Kurzform für den Kantenstein Frontseite oben mitte. Die [45, 0] sind Raumwinkel, die die Position des Steins beschreiben:
Code: Alles auswählen
up = [[0, 0, 0], [0, 'y', 0], [0, 0, 0]]
front = [[0, 0, 0], [0, 'r', 0], [0, 0, 0]]
edgeblock = [45, 0]
if edgeblock == [45, 0]:
up[2][1] = 1
front[0][1] = 2
print(up)
print(front)
Meine erste Idee war jetzt das ganze über ein Dictionary zu lösen, da ich das sehr übersichtlich finde:
Code: Alles auswählen
up = [[0, 0, 0], [0, 'y', 0], [0, 0, 0]]
front = [[0, 0, 0], [0, 'r', 0], [0, 0, 0]]
edgeblocks = {(45, 0):[up[2][1], front[0][1]]}
edgeblocks[45, 0][0] = 1
edgeblocks[45, 0][1] = 2
print(up)
print(front)
Kennt jemand eine Möglichkeit oder Datenstruktur mit der sich das schön lösen lässt?
Schon einmal vielen Dank für eure Zeit.