Für wie sinnvoll haltet ihr das?
Ich wollte jetzt mal in der Klasse Coordinate ein getNeighbours() schreiben. Vorerst lasse ich dabei einfach alle theoretischen Nachbarn zurückgeben. Allerdings wäre es dann im nächsten Schritt sinnvoll, dass man nur direkt valide Nachbarn zurück gibt. Oder?
Valide im Sinne von, wenn wir bei x = 0, y = 0 sind, geht es nur nach 1,0, 0,1, 1,1 - wenn du das mit Valide meinst, also sollte vielleicht schon eine Logik dahinter stecken, das wir nicht an -1, 0 einen Nachbarn haben können und uns innerhalb der Grenzen des Spielsfelds bewegen.
Allerdings, vielleicht sollte man die "Board" (Spielfeld)-Klasse ansprechen, um die Dimensionen des Spielfeldes zu bekommen bzw. die Grenzen zu ermitteln.
Spontan würde ich aber auch diese Prüfung in die "Coordinate" Klasse legen, da dort eben mit Koordinaten gearbeitet wird. Das Spielfeld müßte im Grunde ja nur seine Dimensionen bekanntgeben.
Eine Frage zum Code habe ich aber auch gerade, ich gehe da gerade mal durch, was macht das hier?
[src=c++]Coordinate Coordinate::getBottomNeighbour()
{
Coordinate bottomNeighbour(getX(), getY() + 1);
return bottomNeighbour;[/src]
Ich weiss wir fragen hier eine Koordinate ab die an "x" (aktuelle Coordinate) und "y + 1" liegt... ? (Bzw. wo im Code passiert das?)
Aber ich glaube das geht nicht so einfach bzw. könnte das falsch sein?
Sagen wir, das Spielfeld wäre 7 Felder breit und 7 Felder hoch "Array[7][7"], wenn ich (x, y!) "0,0" anspreche, entspricht das dem Feld auf 0,0 (links oben) - logisch, will ich jetzt aber das darunter liegende Element haben, liege ich doch bei "0, 1" - also dem Element auf Index x + (y * 6)... - oder?
Was ich meine, das Array ist ja so aufgebaut (eindimensional):
[
0,1,2,3,4,5,6,
7,8,9,10,11,12,13..,
14,15...
21...
28....
..48]
Also haben wir an der ersten Stelle "Links oben", die zweite Spielfeldreihe liegt doch dann aber bei Index 7 bis 12 ?
Denkfehler?, oder muss ich mir die Spielfeld Klasse noch einmal anschauen, wie dort die Felder aufgebaut sind?