Das Spielfeld von Mühle ist wirklich nicht ganz einfach zu modellieren. Das ganze Spielfeld in einem Array zu speichern und alle Bewegungen der Spielsteine zu simulieren sollte recht aufwändig werden. Es ist aber möglich, dann müsstest du von feld[0][3] (oben mitte) eben nicht (bei einem zug nach rechts) auf feld[0][4] sondern auf feld[0][6]. Da könntest du dann je nach "Ring" einen Sprungwert angeben (äußerer Ring: 3, Zwischenring: 2, innerer Ring: 1). Die Übergangsbedingungen müsstest du dann noch extra einbauen. Das prüfen auf Mühlen müsstest du dann ähnlich machen.
Vielmehr solltest du aber immer versuchen Problemstellungen aufzuteilen, auf möglichst gleichartige teile. In dem Fall von Mühle würde ich da zu den 3 "Ringen" tendieren, sie haben alle den gleichen Aufbau und die Übergänge sind auch immer so ziemlich an der gleichen stelle.
Ein etwas generischerer Ansatz wäre, eine Liste anzulegen, mit "ungültigen" Positionen (wie z.B. (0,1) oder (0,2)). Dann addierst/subtrahierst du einfach egal von welcher position aus immer +1 und checkst, ob das feld gültig oder nicht gültig ist, wenn es gültig ist, prüfst du, ob bereits ein stein dort ist, wenn es nicht gültig ist, addierst du nochmal +1 und machst das gleiche wieder. Das ist nicht unbedingt der effizienteste ansatz, meiner meinung nach aber so ziemlich der einfachste.