Ich versuche ein RPG mit C++ zu erstellen, für jetzt nur ein Text-RPG. Ich möchte viele Instanzen der Klasse "Monster" erstellen. Sagen wir, ich muss 100 Monster machen (Goblins, Oger, Drachen usw.), wie soll ich diese speichern? Sollte ich eine separate Datei zum Speichern von Klasseninstanzen haben und wenn ja, wie? Ich möchte sie alle in einer einzigen Datei haben, damit sie nirgends Platz findet.Speichern von Klasseninstanzen in einer Datei
Antwort
Sie können die Klasse in einer binary
Datei speichern und write
und read
verwenden.
Vielleicht ist das, was Sie tun möchten, hier ist ein einfaches Beispiel.
Lassen Sie uns sagen, dass wir diese Klasse haben:
class Goblin {
public:
int health;
int damage;
};
Und eine Datei schreiben zu:
fstream file("record.bin", ios::trunc | ios::binary | ios::in | ios::out);
Jetzt können wir ein Goblin
-Objekt erstellen:
Goblin my_goblin;
my_goblin.health = 100;
my_goblin.damage = 50;
und dann können wir schreibe die Daten in die Binärdatei:
file.write(reinterpret_cast<char*>(&my_goblin.health), sizeof(my_goblin.health));
file.write(reinterpret_cast<char*>(&my_goblin.damage), sizeof(my_goblin.damage));
Nach dem Ausführen enthält die Binärdatei Daten über Ihre Goblin
Klasse.
nun zum Lesen der Daten, die Sie wollen nicht die ios::trunc
Flagge dort:
fstream file("record.bin", ios::binary | ios::in | ios::out);
Wir schaffen ein Goblin
Objekt wieder:
Goblin goblin;
Und dann können wir Daten lesen in unsere Klasse:
if (!file.read(reinterpret_cast<char*>(&goblin.health), sizeof(goblin.health))) {
// handle error
}
if (!file.read(reinterpret_cast<char*>(&goblin.damage), sizeof(goblin.damage))) {
// handle error
}
Jetzt sehen drucken, wenn es funktioniert:
// Output result if all went well
cout << "Goblin health = " << goblin.health << '\n';
cout << "Goblin damage = " << goblin.damage << '\n';
Ausgang:
Goblin health = 100
Goblin damage = 50
Das ist wirklich nicht nötig ist!
Um ein textbasiertes Spiel zu erstellen, benötigen Sie nicht den obigen Ansatz. Schreiben Sie einfach Ihre Klassen und bewahren Sie sie in den Header-Dateien auf. Separate Deklaration von der Implementierung.
Ex: Goblin.h
, Goblin.cpp
, Dragon.h
, Dragon.cpp
usw.
Sie können Instanzen von Objekten in Dateien speichern, das heißt Serialisierung, und es gibt eine Reihe von Möglichkeiten, um es zu erreichen, ich schlage mehr Forschung in dieser Richtung.
Ich glaube, dass Sie dies für Ihr Programm nicht tun müssen, da es wahrscheinlich genug Platz geben wird, um alle Ihre Monster zu speichern, und dann einige.
Okay, danke für den Rat, werde ich einige der Forschung in die Serialisierung tun und sehen, was es geht um alles. – Joe
- 1. Einzigartige Klasseninstanzen in Python3
- 2. Bild von d3heatmap in einer Datei speichern
- 3. Speichern einer temporären Datei
- 4. Mehrere Objekte in einer Datei speichern
- 5. Speichern einer Datei mit libcurl in C
- 6. UnauthorizedAccessException beim Speichern einer Datei
- 7. Speichern von HTML-Datei hinzufügen in Datei
- 8. Speichern einer transformierten .bdf-Datei
- 9. CGImageRef in einer PNG-Datei speichern?
- 10. C++ nicht initialisiertes Array von Klasseninstanzen
- 11. Webinhalt in einer JAR-Datei speichern
- 12. Speichern eines TObject in einer Datei
- 13. Speichern einer Datei in Code - Windows 7
- 14. Speichern einer .pem Datei in MySql
- 15. Speichern einer Datei auf Anwendungsdaten in C#
- 16. C# Thread-Sicherheit für Klasseninstanzen
- 17. Speichern von Objekten in einer Datei statt im Speicher
- 18. Speichern einer JSON-Datei von twitter's api in mongoDB
- 19. Kompilieren von C - Code ohne Speichern in einer Datei
- 20. Das Speichern von Objekten in einer Java-Datei funktioniert nicht.
- 21. Speichern von Unit-Testdaten in einer externen Datei
- 22. Speichern einer großen Datei von 100 MB in Mongodb
- 23. Elegante Initialisierung eines Arrays von Klasseninstanzen in C#
- 24. Speichern von Bildern in SQLite-Datei - Anfänger
- 25. Bild in Datei speichern
- 26. Nützlicher Standard __repr__ für verschachtelte Klasseninstanzen
- 27. BitmapImage in Datei speichern
- 28. Speichern von PSQL-Ausgabe in CSV-Datei
- 29. Speichern von Daten in der ausführbaren Datei
- 30. Laden einer CSV-Datei und die Schaffung neuer Klasseninstanzen aus den Werten
Danke für das detaillierte Beispiel, werde ich wahrscheinlich nur in Header-Dateien speichern, obwohl Sie vorgeschlagen, Danke! – Joe