Oppure

Loading
18/12/11 11:06
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
#include "allegro.h"

#include "Platform.h"

Platform myPlatform (320, 370);

void doppioBuffering ( void );


void doppioBuffering( void )
{
    vsync();
    blit ( buf, screen, 0, 0, 0, 0, 640, 400 );
    clear ( buf );
}

int main ( int argc, char **argv )
{
    allegro_init();
    install_keyboard();
    set_color_depth ( 32 );
    set_palette ( colori );
    set_gfx_mode ( GFX_AUTODETECT, 640, 400, 0, 0 );
    buf = create_bitmap ( 640, 400 );
    clear ( buf );

    Platform = load_bmp ( "platform.bmp", colori );

    while ( !key[KEY_ESC] )
    {
        myPlatform.makePlatform();
        myPlatform.movimentoPlatform();
    }

}
END_OF_MAIN();



ECCO IL CODICE DI PLATFORM.H
#ifndef PLATFORM_H_INCLUDED
#define PLATFORM_H_INCLUDED

#include "allegro.h"
BITMAP *buf, *Platform;
PALETTE colori;

class Platform
{
public:
    Platform ( int, int );
    void makePlatform ( void );
    void movimentoPlatform ( void );

private:
    int xPlatform, yPlatform;
}

#endif // PLATFORM_H_INCLUDED



ECCO IL CODICE DI PLATFORM.CPP
#include "Platform.h"
#include "allegro.h"

Platform::Platform ( int x, int y )
{
    xPlatform = x;
    yPlatform = y;
}

void Platform::makePlatform ( void )
{
    draw_sprite ( buf, myPlatform, xPlatform, yPlatform );
}

void Platform::movimentoPlatform ( void )
{
    if ( key[KEY_LEFT] && xPlatform >= 0 )
        xPlatform -= 4;
    if ( key[KEY_RIGHT] && xPlatoform <= 640 )
        xPlatform += 4;
}
Ultima modifica effettuata da 18/12/11 17:19
18/12/11 11:23
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 ...
18/12/11 11:56
Nullable
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.
aaa