Voor mijn gamedesign opleiding maak ik een game volledig in cmd modus. Nu wil ik mijn afbeeldingen(ascii art:P), inladen uit een text file. De code die ik heb werkt :
Leest deze textfile :
(JA HET IS EEN MOTORRIJDER
)
en dat werkt prima.
Nu wil ik dat in een functie stoppen, zodat ik meer "afbeeldingen" kan laden op deze manier. Nu heb ik dit :
deze crasht al bij het assignen van de player array naar de pointer.
Ik denk dat het aan het type string ligt. Hoe kan ik er dus voor zorgen dat mijn functie een array, of een pointer naar een array, in zijn argumenten heeft, en deze veranderd naar de text file?
Ziet iemand een fout in mijn code.
alvast bedankt
Thomas
C++: De init
1
2
3
| using namespace std; // gebruikt "std::", anders hadden we string moeten includen. string spr_player[4][3]; // maakt een sprite met 4 subimages en 3 rijen per plaatje. |
C++: De code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| int i; string temp[3*4]; //een temp array voor alle lines ; ifstream ifs( "sprite.txt" ); //filename ; i = 0; while(!ifs.eof()){ // leest elke lijn van de textfile. int i zorgt dat hij bij de goede index in temp terecht komt. ; getline(ifs,temp[i]); i++; } ifs.close(); //sluit de textfile ; int X,Y; for(X=0;X<4;X++) { for(Y=0;Y<3;Y++) { spr_player[X][Y] = temp[(X*3)+Y];// Zet alle gegevens uit de temp array in de spr_player 2d array. ; } } |
Leest deze textfile :
_e, O>/O e'0 '7 O e_, /\, O>/O e_,/_ /\, \ O>/O
(JA HET IS EEN MOTORRIJDER
en dat werkt prima.
Nu wil ik dat in een functie stoppen, zodat ik meer "afbeeldingen" kan laden op deze manier. Nu heb ik dit :
C++: De functie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| void loadSprite(int subImages, int Height, string File, string **array)// subimages,height,file, en de array pointer ; { int i; string temp[Height*subImage]; ifstream ifs( File.c_str() ); //maakt een cstring van mijn file string. i = 0; while(!ifs.eof()){ getline(ifs,temp[i]);//laad weer de text file i++; } ifs.close();//close int X,Y; for(X=0;X<subImages;X++) { for(Y=0;Y<Height;Y++) { array[X][Y] = temp[(X*3)+Y]; } } } |
C++: De aanroep van de functie
1
2
3
4
5
| string **pointer; *pointer = &spr_player[0][0]; loadSprite(4,3,"sprite.txt",pointer); |
deze crasht al bij het assignen van de player array naar de pointer.
Ik denk dat het aan het type string ligt. Hoe kan ik er dus voor zorgen dat mijn functie een array, of een pointer naar een array, in zijn argumenten heeft, en deze veranderd naar de text file?
Ziet iemand een fout in mijn code.

alvast bedankt
Thomas