myGully.com

myGully.com (https://mygully.com/index.php)
-   Programmierung (https://mygully.com/forumdisplay.php?f=67)
-   -   [C++] Mehrdimensionale dynamische Array (https://mygully.com/showthread.php?t=3169984)

Maxor 17.01.14 21:19

[C++] Mehrdimensionale dynamische Array
 
Hallo Community,

bin noch relativ neu in C++ und bin gerade dabei mir ein ASCII Snake zu programmieren.
Dabei soll jedes Element bzw. jedes Ausgemalte Feld der Schlange in eine Mehrdimensionale Array gespeichert werden.

Code:

int iSchlangenPos[i][2]{{x1,y1}, {x2,y2}, {x3,y3}, ..., {xi,yi}};
Natürlich frisst die Schlange auch und somit wird 1 Feld mehr am Ende der Schlange ausgemalt.
Ich suche jetzt natürlich eine Möglichkeit das Array bei jeder Verlängerung um 1 zu vergrößern ohne das ich die vorherigen Werte verliere bzw. alles in ein neues Array (über eine Schleife mit Pointer etc.) mit i+1 schreiben muss. Hatte bis jetzt keine dynamischen Arrays aber bei 50 auf 50 Felder eine [2600][2] Array zu erstellen ist doch blöd oder?

Grüße Maxor

gangstergangster 18.01.14 00:44

mehrdimensionale, dynamische Arrays... ohje.. damit habe ich mich mal Nächte mit rumgeschlagen.. Brauchst du aber hier nichtmal.. da deine Schlange ja nicht unendlich groß werden kann..
Snake ist "gewonnen" indem du das gesamte Bild mit der Schlange ausgefüllt hast und kein Pixel leer bleibt. Somit kannst du dich ruhig beschränken..

wohingehend das Speichertechnisch vernüftig ist oder nicht.. :S kann ich dir leider auch nicht sagen,... klappen würds so jedoch

Maxor 18.01.14 11:30

Ich denke dann wird es wohl doch besser sein es über Pointer zu lösen.

topic1991 18.01.14 13:47

Kann leider noch kein C++.
In C jedoch geht das malloc und realloc.
Würde hier erst ein dynamisches Array mit malloc reservieren und dann mit realloc immer ein weiteres Element hinzufügen.

cortez442 18.01.14 18:36

Alleine für das Wort "dynamisches Array" würde dich ein Großteil meiner Dozenten köpfen.

Du erstellst ein 2 Dimensionales Array, das dein Spielfeld abdeckt, x und y sind dabei als Konstanten zu deklarieren. Ein leeres Feld ist ne 0, ein Feld mit der Schlange ist eine 1 und die Frucht oder whatever du sammeln musst, ist eine 2. Für die Schlange selber solltest du eine Liste erstellen, damit du das FiFo Prinzip anwenden kannst.

Bei der Bewegung Checkst du den Wert des neuen Feldes. Bei einer 0 triggerst du die move Funktion, bei einer 1 ist das Spiel vorbei und bei einer 2 führst du die enlarge Funktion aus. Das ist quasi eine Funktion zum Bewegen, mit der Außnahme, dass du den ersten Eintrag der Liste nicht raus löscht. Zur besseren Übersicht erstellst du für die Koordinaten eine eigene Struktur mit dem Wertebereich deiner deklarierten Konstanten für die Feldgröße, um noch Ressourcen zu sparen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr.

Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.