inventory
-
hi, bin ziemlicher anfänger, und schreibe grade nen text-adventure...
habe versucht nen inventar einzubauen, das problem is nur das ich da immer nur 1 sache reinschreiben kann, weil ich das inventar inner externen datei hab und diese immer wieder neu angelegt wird...
gibt es andere(professionellere)lösungen, mit denen ich ein inventar ständig erweitern kann etc...?im moment siehts ungefähr so aus:
else if ( akten == true ) { ofstream out("Inventar.txt"); out<<"Im Invetar befinden sich einige Akten"<<endl; } { ifstream in("inventar.txt"); while(!in.eof()) { char ch; ch=in.get(); cout<<ch; }ich suche auch nah code besispielen und tutorials für einfache spiele, wie zb pong...
-
Also während das Spiel läuft Daten die sich im Inventar befinden auf Platte speichern ist QUATSCH.. Zugriff auf Festplatte sollte so wenig oft wie möglich geschehen! Auch wenn du die Daten auf der Festplatte speicherst dürfte es keine Probleme geben wenn du mehrere Objekte darin speichern willst hängst halt immer hinten an(ios::app). Aber eben dies ist nichts nimm Listen, dynamische Arrays oder ne Hashtabelle bzw lern zuerst Datenstrukturen, Algos und die Sprache

-
Du solltest nur den Inhalt selbst aufführen in der Datei:
einige Akten eine Flasche Bier 12 Goldmünzen ein dreckiges TaschentuchDas "Im Inventar befindet sich" und die Kommas haut Dein Programm da rein:
Im Inventar befindet sich einige Akten, eine Flasche Bier, 12 Goldmünzen, und ein dreckiges Taschentuch.
Wenn Du's ganz toll haben willst speicherst Du auch noch ein Flag, ob's Mehrzahl ist, und dann je nachdem "befindet sich" oder "befinden sich" draus zu machen...
-
ah danke, das bringt mich schonmal nen bisschen weiter, hab auch grade nen bisschen rumprobiert aber ich kriegs nich so ganz hin...
könntest du vielleicht nen stückchen code posten, damit ich sehe wie man das macht:
also das immer was dazu geschrieben wird und das das programm automatisch die kommas macht..?!?!
-
Lern die Sprache

-
dafür bin ich ja hier...
-
Naja normalerweise schreibt man erst dann Spiele wenn man die Sprache einigermaßen kann...
Als erstes musst du wissen was deine Objekte können müssen, wie du sie managst etc.... Also vielleicht einfachste möglichkeit hier mal ohne klassen sondern einfach mal die Daten der Objekte in net Struktur speichern zb:struct Objekt { string name; bool bMehrzahl; // Idee von Sgt. Nukem ;) };Dann nehmen wir einfach mal ein Array von Objektpointern mit ner maximalen Anzahl von Elementen und Anzahl der Elemente im Array:
struct Inventar { int nrObjekte; Objekt* pObjekte[100];//Hier mal einfach 100 als max wenn du flexibel sein //willst implementier dir ne liste oder nimm die STL };Zuerst Inventar mal irgendwo definieren und initiallisieren:
Inventar inventar; inventar.nrObjekte = 0; for(int i=0; i<100; i++) { inventar.pObjekte[i] = NULL; }Jetzt wenn du zb ein Objekt ins Inventar aufnehmen willst sone Funktion wie
void ObjektEinfuegen(Invenatr* pInv, const Objekt* pObj) { pInv->pObjekte[nrObjekte] = pObj; pInv->nrObjekte++; }Bei nem Objekt entfernen halt rest wieder nach links schieben dass wir nen zusammenhängenden Speicherbereich haben und nrObjekte halt incrementieren.
Wenn du Inventar speichern willst dann einfach alle Objekte durchgehen und speichern:void InvSpeichern(Inventar* pInv) { ofstream safe("file.txt"); safe << pInv->nrObjekte << " "; for(int i=0; i<pInv->nrObjekte; i++) { safe << pInv->pObjekte[i]->Name << " "; sasfe << pInv->pOjbkete[i]->bMehrzahl << " "; } safe.close(); }So kannst ja mal anfangs vorgehen dann kannst ja mal auf oop umstellen...
-
dali schrieb:
Naja normalerweise schreibt man erst dann Spiele wenn man die Sprache einigermaßen kann...
es ist nichts dagegen zu sagen, etwas auf die art zu lernen, auf die man am meisten motiviert ist, solange man es nicht übertreibt. aber gerade textadventures sind gut um c++/STL zu lernen.
(und sehr viel schöner als das 2000ste programm mit "gib die seitenlänge deines quadrates an"...."der flächeninhalt ist... der umfang ist..."
)rapso->greets();
-
-
danke schonmal für die hilfe und für den link...
den ganzen kram mit den seitenlängen und so hat ich schon durch...
nur was bringt mir das...
-
Seitenlängen?