verschiedene maps? realisiert mit klassen?
-
TGGC for President!!! <--- des gefällt mir
wow thx für deine tipps!! sowas wollte ich hören. Nun noch eine frage: was hältst du für sinnvoller die daten (1,0,2,1) als string oder immer einzeln einzulesen? kann ich dann trotzdem noch sagen (also wenn ich nen string verwende)
if (map[ypos][xpos]==1) { char stein=176; cout<<stein; }
das wäre doch dann unabhängig vom code.
So und die 2 frage wäre, ist es denn auch möglich die mapdaten, sie man aus einer textdatei sonst einlesen würde, auch aus dem code einliest? wäre das möglich? oder bleibt mir da garnix anderes übrig?nagut... also doch ---> TGGC for President!!!
-
So ich muss mich nochmal melden. Hab glaub ich alles in den sand gesetzt. Habe eben im c++ channel im irc geredet und nun bin ich voll verwirrt.
Die frage ist wie kann ich aus einer textdatei überhaupt die daten in ein 2d-array einlesen?
habt ihr nen tut? oder beispielcode?
Wie gesagt im channel eben wurde mir gesagt, dass würde am besten doch mit klassen gehen und dann der eine musste mit pointer machen. Ich raff gerade nix mehr.eins der vielen probleme war das wir es im string auslesen wollten.
nun brauch man aber für string die stdlib und die nutzen wir bei uns in der schule nicht, deswegen will ich es möglichst umgehen.
Also ich will nicht noch mehr verworrenheit anstiften, aber immo weiß ich nicht weiterplz help. Howtnted
-
http://www.cppreference.com/cppio/
Es müssen auch nicht unbedingt Textdateien sein. Textdateien sind - wen wunderts - für Text gedacht. Du musst dir halt ein Format überlegen, wie du die Dateien abspeicherst und ausliest ("die ersten 5 Bytes geben das und das an").
nun brauch man aber für string die stdlib und die nutzen wir bei uns in der schule nicht, deswegen will ich es möglichst umgehen.
Das verwirrt mich geringfügig. Zu C++ gehört die stdlib dazu. Wie willst du denn sonst File I/O machen?
-
ich meinte das using namespace std;
das möchte ich möglichst vermeiden!!!
was wolltest du mir mit dem link zeigen??
-
HOwTnTEd schrieb:
ich meinte das using namespace std;
das möchte ich möglichst vermeiden!!!Häää???
-
Häää???
In der schule verwenden wir Boland 5.02 dieser compiler unterstützt kein using namespace std; Aus diesem grund möchte ich es möglichst vermeiden.Wenn ihr mir jetzt aber alle sagt es wäre unumgänglich, dann werde ich wohl nicht darauf verzichten.
Aber darum geht es doch im moment garnicht. Weiß jemand wie ich es anstellen kann daten aus einer textdatei in ein array zu speichern? Hab bis jetzt in den faqs noch nix gefunden!
Hat wer nen beispielcode oder nen link, würde echt helfen. Danke!!!cu Howtnted
-
HOwTnTEd schrieb:
Weiß jemand wie ich es anstellen kann daten aus einer textdatei in ein array zu speichern?
Also das dürfte doch eigentlich kein Problem sein...
Entweder fopen oder ofstream
-
dali schrieb:
HOwTnTEd schrieb:
Weiß jemand wie ich es anstellen kann daten aus einer textdatei in ein array zu speichern?
Also das dürfte doch eigentlich kein Problem sein...
Entweder fopen oder ofstreamDas ist zwar noch nciht alles, aber der Rest steht in der Doku.
Bye, TGGC (Keine Macht den Dummen)
-
Hmmm und was?
-
Ich würds mit fopen machen, da kannste die Daten schön der reihenfolge nach einlesen (außerdem kannste, falls der geladene Level nicht tut, in der Leveldatei nachlesen, da du eine übersichtliche Struktur hast...).
Zu deinem Map Problem: Ich würd nen struct machen, in dem alle Daten für EINE Position gespeichert sind, könnte dann z.B. so aussehen:
struct MapTile // Simpel gehalten... { int x; // X Coord auf dem Bildschirm int y; // Y Coord auf dem Bildschirm bool collision; // Kollisionsabfrage (false = begehbar, ...) }
und dann definiert du, wo du sie eben brauchst, so viele Map Tiles, wie nötig (MapTile Tiles[100][50]; )
Wenn du die dann lädst, kannste ja in den Header der Datei die X/Y Tiles reinschreiben, die verwendet werden (Anzahl) und darunter eben ob sie begehbar sind oder nich, z.B. so:
FILE* LevelFile; LevelFile = fopen("Levelname.map" /*oder irgend nen anderes Format...*/, "r"); int iMapSizeY; int iMapSizeX; freadf(LevelFile, "%03d", &iMapSizeY); freadf(LevelFile, "%03d", &iMapSizeX); for(int x=0;x<MapSizeX;x++) { for(int y=0;y<MapSizeY;y++) { int iCollision = 0; freadf(LevelFile, "%03d", &Tiles[x][y].y /*3 stellige Zahlen reichen hier vollkommen*/); freadf(LevelFile, "%03d", &Tiles[x][y].x); freadf(LevelFile, "%01d", &iCollision); if(iCollision == 0) // erklärt sich wohl von selbst... Tiles[x][y].collision = false; else Tiles[x][y].collision = true; } }
Hab den Code nich getestet, sollst ihn sowieso selber schreiben (lernen
)...
Aber ich hoff, dass das im Ansatz das richtige war.cya WirrWar2850.