Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Includere header con Allegro.h
Forum - C/C++ - Includere header con Allegro.h

Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 1:00
Giovedì, 01/01/1970
Salve a tutti,
ho appena iniziato a programmare con la libreria allegro.h. Uso come compilatore Code::Blocks.
Volevo utilizzare la programmazione orientata agli oggetti per creare un gioco del pong. Non sono molto esperto ma penso che bisognerebbe creare un oggetto per il paddle del giocatore e uno per la pallina. Così ho creato il file Platform.h e Platform.cpp. Dopodichè ho creato il file Main.cpp. Penso di aver scritto bene tutto il codice. Secondo me il problema sta che non riesco a includere Main.cpp con l'header Paddle.h
Per linkare prima utilizzavo il prompt dei comandi di visual studio ( scrivevo: cl Main.cpp Nome.cpp ) e andava tutto bene. Ma con la libreria allegro non funziona!
Come posso fare?
Grazie

P.S.: come errori mi dà:
error: expected initializer before 'myPlatform'             ( myPlatform è l'oggeto che ho creato )
Nella funzione main()
error: 'myPlatform' was not declared in this scope

ECCO IL CODICE DI MAIN.CPP
Codice sorgente - presumibilmente C++

  1. #include "allegro.h"
  2.  
  3. #include "Platform.h"
  4.  
  5. Platform myPlatform (320, 370);
  6.  
  7. void doppioBuffering ( void );
  8.  
  9.  
  10. void doppioBuffering( void )
  11. {
  12.     vsync();
  13.     blit ( buf, screen, 0, 0, 0, 0, 640, 400 );
  14.     clear ( buf );
  15. }
  16.  
  17. int main ( int argc, char **argv )
  18. {
  19.     allegro_init();
  20.     install_keyboard();
  21.     set_color_depth ( 32 );
  22.     set_palette ( colori );
  23.     set_gfx_mode ( GFX_AUTODETECT, 640, 400, 0, 0 );
  24.     buf = create_bitmap ( 640, 400 );
  25.     clear ( buf );
  26.  
  27.     Platform = load_bmp ( "platform.bmp", colori );
  28.  
  29.     while ( !key[KEY_ESC] )
  30.     {
  31.         myPlatform.makePlatform();
  32.         myPlatform.movimentoPlatform();
  33.     }
  34.  
  35. }
  36. END_OF_MAIN();




ECCO IL CODICE DI PLATFORM.H
Codice sorgente - presumibilmente C++

  1. #ifndef PLATFORM_H_INCLUDED
  2. #define PLATFORM_H_INCLUDED
  3.  
  4. #include "allegro.h"
  5. BITMAP *buf, *Platform;
  6. PALETTE colori;
  7.  
  8. class Platform
  9. {
  10. public:
  11.     Platform ( int, int );
  12.     void makePlatform ( void );
  13.     void movimentoPlatform ( void );
  14.  
  15. private:
  16.     int xPlatform, yPlatform;
  17. }
  18.  
  19. #endif // PLATFORM_H_INCLUDED




ECCO IL CODICE DI PLATFORM.CPP
Codice sorgente - presumibilmente C++

  1. #include "Platform.h"
  2. #include "allegro.h"
  3.  
  4. Platform::Platform ( int x, int y )
  5. {
  6.     xPlatform = x;
  7.     yPlatform = y;
  8. }
  9.  
  10. void Platform::makePlatform ( void )
  11. {
  12.     draw_sprite ( buf, myPlatform, xPlatform, yPlatform );
  13. }
  14.  
  15. void Platform::movimentoPlatform ( void )
  16. {
  17.     if ( key[KEY_LEFT] && xPlatform >= 0 )
  18.         xPlatform -= 4;
  19.     if ( key[KEY_RIGHT] && xPlatoform <= 640 )
  20.         xPlatform += 4;
  21. }


Ultima modifica effettuata da il 18/12/2011 alle 18:19
PM
Avatar
Nullable (Normal User)
Expert


Messaggi: 217
Iscritto: 12/07/2011

Up
1
Down
V
Segnala al moderatore
Postato alle 12:56
Domenica, 18/12/2011
Personalmente non capisco cosa tu voglia fare...vuoi linkare la libreria allegro.h ? Come nessuno ti ha scritto i files con estensione .h non sono librerie ma header, il che è molto diverso perchè le librerie necessitano di essere linkate mentre gli header vanno solamente inclusi; per di più esistono librerie dinamiche e librerie statiche. Comunque, se vuoi utilizzare l'header allegro.h allora dovresti prendere il file e metterlo nella cartella del tuo programma e includerlo dove ti servirà utilizzando la direttirva #include.

Allora devi mettere l'header nella cartella del tuo programma e includerlo con #include - Nullable - 18/12/11 19:30
Devi compilare l'intero progetto. - Nullable - 19/12/11 13:41
Che significa "come faccio" ? Quando apri Code::Blocks non crei un progetto per creare il tuo programma ? Al progetto "vergine", in base alle esigenze, vanno inclusi eventuali header o linkate delle librerie. - Nullable - 19/12/11 15:27


Hai perso.
PM
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 12:23
Domenica, 18/12/2011
Per cominciare, ripeto ancora una volta, i file .h NON sono librerie ma semplici file header.

Inoltre, per i tuoi oggetti avrai un file header in cui "descrivi" la classe (Paddle.h ...) ma devi avere un corrispondente file .cpp dove implementi metodi, proprietà ...

Tutti i file .h saranno inclusi con la

#include

nei file .cpp "dove servono" e verranno tutti inclusi in un "progetto" per poterli linkare insieme. Inoltre, andrà indicata la

libreria

(che NON è il file .h) allegro nel progetto.

Infine, se riporti un errore, devi postare tutto il codice, altrimenti non si può "indovinare" cosa succede ...

Alla fine della classe Platform manca un ; - nessuno - 18/12/11 19:12
Era quel ; ? - nessuno - 19/12/11 19:55


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM
Usa i commenti per chiedere spiegazioni o ringraziare le risposte.