JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=4d2b7008f4e7bfb58bcf72ec55d81371Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Speichern einer Liste in einer Datei
Gehe zu Seite Zurück  1, 2, 3
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 21:17    Titel: Antworten mit Zitat

Nichts, bloß bei Vectoren kannst du mithilfe des Indexoperators zugreifen:
Code:
for(int i=0; i<Gamestates.m_SpriteList.size();i++)
{
    if(Gamestates.m_SpriteList[i].m_Collision>=1)
    {
         //Blablabla
    }
}

_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 21:22    Titel: Antworten mit Zitat

Merkwürdig dass es nicht funktioniert. Aber vielleicht liegts an der Deklaration. Da ist mir etwas interessantes aufgefallen.

Worin liegt denn hier der Unterschied zwischen zeile 1 und 2:

vector<STeams> Teams
vector<STeams*> Teams

???
Das könnte erklären warum das eine funktioniert und das andere nicht.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 21:48    Titel: Antworten mit Zitat

Das mit dem Laden meinte ich so:

Pseudocode... bin zu kaputt für ein komplettes Beispiel:

Code:

handle = öffne_datei;

anzahl = lese_integer(handle); // Dateiheader = Anzahl der Elemente

i = 0;

solange i kleiner anzahl tue:
  sprite * tmp = new sprite();
  tmp->lade(handle);  // Die Lade-Methode ließt die benötigten Werte, allokiert Speicher, berechnet Werte etc etc.
  sprite_liste.push_back(tmp);

schließe_datei(handle);


Das Speichern ist noch etwas einfacher:
Code:

handle = öffne_datei;

schreibe_integer(handle, sprite_liste.size());

für jedes element n in sprite_liste tue:
  // n sei ein STL Iterator
  (*n)->speichern(handle);

schließe_datei(handle);


Ich hoffe das war einigermaßen verständlich... so jetzt mach ich Schluss, bin schon halb bewusstlos. ;P
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 22:13    Titel: Antworten mit Zitat

Hazel, ich hoffe mal, dass dein code so pseudo ist, dass "handle" bei dir in deinem beispiel mehrere bedeutungen hat, sonst müsste die lese und schreibfunktion total falsch sein. Deine Idee habe ich verstanden. ich guck mal, obs damit funktioniert. Wenn nicht, dann bitte ich um einen richtigen code.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 30.09.2003, 22:59    Titel: Antworten mit Zitat

Es geht immer noch nicht. Ich zeig mal was ich probiert habe:

Code:
//Speichervorgang für eine Liste

   Datei = fopen("Noname.sav", "wb");

   Counter1=Gamestates.m_BackgroundList.size();
   fwrite(&Counter1,sizeof(int),1,Datei);
      for(it=Gamestates.m_BackgroundList.begin();it!=Gamestates.m_BackgroundList.end();it++)
      fwrite(*it,sizeof(CSprite),1,Datei);
  fclose(Datei);




//Ladevorgang für eine Liste

   Datei = fopen("Noname.sav", "rb");

   fread(&Counter1,sizeof(int),1,Datei);
   for(i=0; i<Counter1 ;i++)
   {
      CSprite* Temp = new CSprite;
      fread(&Temp,sizeof(CSprite),1,Datei);
      Gamestates.m_BackgroundList.push_back(Temp);
   }
   fclose(Datei);


Kann mir einer sagen, was da wieder nicht in ordnung sein soll?
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Hazel
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 01.10.2003, 07:09    Titel: Antworten mit Zitat

Du hast meinen Code nur Teilweise verstanden...

Hazel hat Folgendes geschrieben:
Du solltest deiner Sprite Klasse einfach eine Methode zum laden und eine zum Speichern schreiben. Zeiger zu speichern bringt's nicht.


Zitat:

Hauptsache du speicherst keine sinnlosen Daten ab (Zeiger, ganze Texturen, berechenbare Werte,...). Hauptsache dir fällt es leicht das einzubauen und zu verstehen.


[Nachtrag]
Dir das programmieren? Nee, gugg mal was in deiner Signatur steht! ;P
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
LeeDiGer
Super JLI'ler



Anmeldedatum: 31.08.2003
Beiträge: 366
Wohnort: Duisburg
Medaillen: Keine

BeitragVerfasst am: 01.10.2003, 20:03    Titel: Antworten mit Zitat

Es soll mir keiner was vorprogrammieren. Ich muss ja nur wissen ob ich da mit meiner Technik wieder nen Denkfehler eingebaut hab. Und meine signatur gilt nur für den Jason aus Karate Tiger.
_________________
Kein Rückzug! Kein Aufgeben!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2, 3
Seite 3 von 3

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum