Interne Repräsentation des Spielfeldes - HeikoDudzus/Abalone GitHub Wiki
Array oder Graph
Siehe Kommentar zur Klasse Spiel
hexagonales Spielfeld:
| I O O O O O
| H O O O O O O
| G · · O O O · ·
| F · · · · · · · ·
| E · · · · · · · · ·
| D · · · · · · · · 9
| C · · X X X · · 8
| B X X X X X X 7
| A X X X X X 6
| 1 2 3 4 5
orthogonalisiert:
9 I O O O O O
8 H O O O O O O
3 G . . O O O . .
6 F . . . . . . . .
5 E . . . . . . . . .
4 D . . . . . . . .
3 C . . X X X . .
2 B X X X X X X
1 A X X X X X
1 2 3 4 5 6 7 8 9
Pro Graph:
- die Nachbarschaftsstruktur des hexagonalen Spielfeldes könnten in einem Graphen exakt modelliert werden
- In der Spiellogik muss der Graph nicht traversiert werden (außer in toString())
- Graphenknoten könnten gemäß der Abalone-Nomenklatur A1 bis I9 bezeichnet werden.
Was gegen einen Graphen spricht:
- Man bräuchte einen gerichteten Graphen, da eine Verschiebung von A2 zu A3 sich von einer Verschiebung von A3 zu A2 unterscheidet. Das leistet die Graphenklasse des NRW-Abiturs nicht.
- Man bräuchte einen generischen Graphen, der Felder als Inhaltsobjekte erlaubt. Das leistet die Graphen-Klasse des NRW-Abiturs nicht, ließe sich aber leicht verbessern.
- Die Traversierung zur Darstellung als String wäre komplizierter
Pro Array
- Man kann die Klassifikation von Zügen mit mathematischen Vektor-Formalismen beschreiben
Was gegen ein Array spricht:
- Die orthogonale Array-Struktur geht über die hexagonale Spielfeldstruktur hinaus, z.B. die Anzahl der Nachbarn betreffend. So muss explizit eine Diagonale in der Nachbarschaftsbeziehung verboten werden.