kurz ne Frage zu Klassen
-
hi,
dies ist mal meine erste Frage (Anfängerfrage XD ) zum Thema c++...
Also bitte nicht hauenAlso,ich will mithilfe von allegro einen Bombermanklon progammieren.
Die Map-Kolli klappt schon,sowie der Level Editor.Nun mache ich mich an den Bomben ran...
Da hab ich dann mal glatt ne Klasse erstellt:class bomb{ public: bool bomb_enabled; int bomb_tilex; int bomb_tiley; int countdown; int bomb_x; int bomb_y; bool bomb_layer[15][15]; void create_bomb(int x, int y){ bomb_enabled = true; bomb_x = x*16; bomb_y = y*16; countdown = 3; bomb_layer[x][y] = true; } };
So,nun kommt mein Problem....
Wenn ich die Space taste drücke,dann soll der mir ne Bombe erstellen.
Nur wenn ich die Space taste drücke,dann beendet sich das Programm
hier mal der Code:if (key[KEY_SPACE]){ coll_layer[player1_tilex][player1_tiley] = true; bomben->bomb_layer[player1_tilex][player1_tiley] = true; bomben->create_bomb(player1_tilex,player1_tiley); }
Hoffe ihr könnt mir helfen,der Compiler (MinGW) gibt mir keinen Fehler aus....
THX!
-
Zeig mal deine Spieleschleife.
PS: Wieso setzt du eigentlich zweimal den Bomben-Layer ?
Das macht das schon die Methode create_bomb...
-
while(!key[KEY_ESC]){ acquire_bitmap(buffer); clear(buffer); //Bewgung des Spielers 1 if (key[KEY_W] && coll_layer[player1_tilex][player1_tiley-1]==false){ player1_tiley = player1_tiley-1; } if (key[KEY_S] && coll_layer[player1_tilex][player1_tiley+1]==false){ player1_tiley = player1_tiley+1; } if (key[KEY_A] && coll_layer[player1_tilex-1][player1_tiley]==false){ player1_tilex = player1_tilex-1; } if (key[KEY_D] && coll_layer[player1_tilex+1][player1_tiley]==false){ player1_tilex = player1_tilex+1; } if (key[KEY_SPACE]){ coll_layer[player1_tilex][player1_tiley] = true; bomben->bomb_layer[player1_tilex][player1_tiley] = true; //bomben->create_bomb(player1_tilex,player1_tiley); } //Zeichnen der Map+bomben for(int x=0; x<=max_tiles_x; x++){ for(int y=0; y<=max_tiles_y; y++) blit(tileset,buffer,tilematrix[x][y]*tilewidth,0,x*tilewidth,y*tileheight,tilewidth,tileheight); } if (bomben->bomb_enabled == true){ blit(bombe_gfx,buffer,0,0,5*tilewidth,5*tileheight,tilewidth,tileheight); } blit(player_1_gfx,buffer,0,0,player1_tilex*tilewidth,player1_tiley*tileheight,player_1_gfx->w,player_1_gfx->h); release_bitmap(buffer); blit(buffer,screen,0,0,0,0,SCREEN_W,SCREEN_H); }
PS: Jaja ich weiß...
der Player selber kommt noch in eine neue Klasse sowie es für die Map auch ne klasse geben wird,aber alles zu seiner zeitachja:
ein neues objekt der bombenklasse hab ich so initialisiert:bomb *bomben;
das befindet sich in der main function und nach der allegro initialisiation und vor den variablen deklinationen.
-
Rambo256 schrieb:
bomb *bomben;
Damit erstellst du einen Pointer auf ein bomb - Objekt.
Aber erstellst du auch ein bomb-Object bzw. Speicher dafür ???
-
Ne...
wie macht man das
bin noch nich so weit.
-
du musst einfach den stern vor dem namen des objektes weglassen (oder irr ich mich?)
den speicher kannst du mit malloc() oder new() allokieren.
-
Jo jetzt klappts,musste nur noch die "->" gegen einen simplen "." ersetzen.
Danke!