Übergabe per Pointer eines zweidimensionales Arrays
-
Hallo,
leider hat die Boardinterne suche nichts ergeben, die Google Ergebnisse brachten leider nicht das gebrauchte Ergebnis.
Es geht um zwei zweidimensionale Arrays in Zusammenhang mit C++ mit Visual Studio. Ausgang ist ein kleines Spiel (Vier Gewinnt), welches mittels OpenGL programmiert werden soll.
Da ich dafür ein zweidimensionales Array brauche, um die Belegung der einzelnen "Felder" zu markieren, muss ich mich auch mit der Übergabe dieses "Spielfelds" beschäftigen.
Folgender Aufbau: Ich schreibe eine Klasse für das Spiel an sich, dann gibt es eine Klasse für den Spielmodus, also der "Auswertung" des Zuges (Zug valid, Zug führt zum Sieg, usw.).
Da das Spiel bereits den Spielmodus includiert, wäre es etwas schlecht, dass der Spielmodus die Spielklasse auch noch includiert. Das gegenseitige includieren, welches zu Fehlern führt, wäre mittels class forwarding zwar zu umgehen, aber ich mag es nicht, wenn so viele Klassen abhängig voneinander sind.
Deshalb will ich, dass eine Methode der Spielklasse, die die Validität des Spielzuges überprüft, das "Spielfeld" per Parameter übergeben bekommt. Da kommt nun meine Frage: Wie kann ich dies tun? Wie kann ich ein zwei dimensionales Array, am besten per Pointer (da ich nicht bei jedem Zug das komplette "Spielfeld" übergeben will, da das wenig performant ist), übergeben? Dabei weiß die Spielklasse, wie groß das Zweidimensionale Array ist, der Spielmodus soll es im besten Fall nicht wissen (damit es dynamisch ist). Sollte es nicht anders möglich sein, kann ich das auch so schreiben, dass auch der Spielmodus die Größe kennt.Es wäre Klasse, wenn ihr mir da weiterhelft

Vielen Dank für alle Antworten im Voraus.Gruß
Fabi
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ (auch C++0x) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich würde das Spielfeld als std::array<std::array<T, N>, N> speichern. Vielleicht auch eine Klasse drumherum, kommt drauf an, was es sonst noch alles können soll.
-
Vorschlag:
class Spielfeld
Diesen Vorschlag füllen, dann das Spielfeld per const-Referenz an den Spielzug übergeben. Ich würde auch nicht machen, dass die Spielzugklasse eine Spielzugauswertung repräsentiert, sondern tatsächlich einen (gültigen) Spielzug auf dem Brett. Wenn ich höre, dass eine Klasse die Gültigkeit von etwas anderem überprüfen soll dann denke ich nämlich zuerst an eine freie Funktion und nicht an eine Klasse.
-
Hallo,
vielen Dank für eure Antworten und Vorschläge!
Vor allem die Spielfeld - Klasse macht Sinn und werde ich auch versuchen, umzusetzen
Wenn es da noch Problem gibt (
), melde ich mich nochmals.