[Borland C++] binary data meecompileren, hoe?

Pagina: 1
Acties:

  • BdR
  • Registratie: Juni 2001
  • Laatst online: 03-09-2025

BdR

TV is gooder then books

Topicstarter
Ik ben bezig met een spel in Borland C++ Builder en het werkt allemaal goed. Er worden levels ingeladen vanuit een binair bestand en dan kan je het spelen. Maar nou wil ik dat het bestand met de levels in de executable komt te zitten, dus dat je geen externe bestanden nodig hebt.

Hoe kan ik dit het beste doen? :?

Mijn eerste idee was om alle data (mbt van een hulp programma) om te zetten in C++ code met constanten, en het op die manier mee te compileren. Dus zoiets
code:
1
2
3
4
5
6
7
const byte background[4][4] = { {14,  5, 98,  1},
                                {98, 47, 91,  8},
                                {13, 24, 57, 89},
                                {92, 59,  8, 25}
                               };
const byte tiles[10] = {1, 4, 8, 3, 7, 8, 4, 8, 9} ;
// etc.

Maar is het misschien ook mogelijk om het data bestand te includen als resource. En is het dan ook nog mogelijk het te benaderen alsof het een bestand is, dus een input stream? Op die manier zou ik de inlees-functies hetzelfde kunnen houden, maar hoe?

mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider


  • Domokoen
  • Registratie: Januari 2003
  • Laatst online: 13-05 10:28
Kijk eens naar TResourceStream en gebruik verder Google.

  • BdR
  • Registratie: Juni 2001
  • Laatst online: 03-09-2025

BdR

TV is gooder then books

Topicstarter
Thanks, goeie tip die TResourceStream, maar toch ga ik voor de consts manier. Want dat is meer "standaard C++", TResourceStream is iets van borland.

Heb ik nog een vraagje, als ik een custom-class heb, kan ik daar dan ook een const van aanmaken? Zo ja, hoe dan? het volgde stukje werkt namenlijk niet..
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class TPuzzle {
public:
  bool Active;
  int Tiles[4][4];
  byte ExitGate;
  vector<Byte> Solution;
};

const TPuzzle TestPuzzle[2] = { true, //active
                                { { 1,2,3,4,},
                                  { 1,2,3,4,},
                                  { 1,2,3,4,},
                                  { 1,2,3,4,}
                                }, 
                                21, //exit gate
                                (1, 2, 3, 4)
                              };

ik krijg de melding "cannot convert bool to TPuzzle" :? Dat heeft te maken met die vector<Byte>, als ik die weghaal compileert het wel. Maar ja die heb ik wel nodig..

mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider


  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 11-05 07:46
In Delphi kun je binaire data dacht ik inderdaad meecompileren als resource. Kan dat in C++ niet?
Je spel ziet er goed uit trouwens, maar wel lastig :P

Hoe wou je het trouwens gaan doen als je een level verandert? Dan moet je programma de nieuwe data weer gaan meecompileren...

[ Voor 30% gewijzigd door Spinal op 23-02-2005 13:50 ]

Full-stack webdeveloper in Groningen