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

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.