Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: [C++] Uso di Allegro.h

  1. #1

    Allegro.h errori..aiuto...

    Ciao a tutti..io ho copiato sul mio editor questo programma:
    /* cominciamo subito con includere la libreria allegro.h in modo che possiamo
    usare tutti i comandi necessari per realizzare il videogame */
    #include "allegro.h"
    /* E' il momento di dichiarare qualche variabile. In questo caso quella che serve per
    visualizzare il contenuto su schermo per realizzare la routine di doppiobuffering
    ovvero (*buf) che nel listato diventerà semplicemente (buf). */
    BITMAP *buf;
    /* a questo punto è il momento di inserire la routine di doppiobuffering per
    l'aggiornamento dello schermo */
    /* con il comando void 'doppiobuffering() {...}' iniziamo la procedura di aggionamento
    dello schermo che potremmo richiamare in qualunque momento con il comando
    'doppiobufferng();'
    Se non si usasse la tecnica del doppiobuffering ma si visualizzassero direttamente
    gli oggetti del gioco su schermo si otterrebbe un fastidioso effetto di sfarfallio
    dovuto al continuo ridisegnamento dello schermo. Con il doppiobuffering invece gli oggetti
    vengono prima disegnati con calma sul buffer e poi, a cose fatte, vengono aggiunti
    sullo schermo.
    */
    void doppiobuffering()
    {
    /* il comando 'vsync();' serve per sincronizzare l'aggiornamento dello schermo */
    vsync();
    /* il comando 'blit' prende il contenuto che è stato disegnato nel buffer (buf) e lo visualizza su schermo (screen)
    partendo da un certo angolo (x1=0,y1=0) fino all'angolo opposto dello schermo (x2=320, y2=200) */
    blit(buf, screen, 0, 0, 0, 0, 320, 200);
    /* ogni volta che il contenuto del buffer è stato visualizzato su schermo e necessario
    cancellare il contenuto del buffer stesso per permettere l'inserimento di nuove scene
    10
    evitando cosi un fastidioso effetto di sovrapposizione delle schermate. Questo risultato
    si ottiene con il comando 'clear(buf);' */
    clear(buf);
    }
    /* con il comando 'int main() {...}' inizia la procedura principale del nostro
    videogame in cui saranno raccolte tutte le altre procedure */
    int main()
    {
    /* il comando 'allegro_init(); indica che è usata la libreria allegro.h e che
    devono essere attivate tutte le sue funzioni */
    allegro_init();
    /* con 'install_keyboard();' indichiamo che nel nostro programma sarà utilizzata
    la tastiera. In questo caso sara' usato solamente il tasto (ESCAPE) per uscire dal ciclo,
    come vedremo dopo. */
    install_keyboard();
    /* con 'set_gfx_mode(...); indichiamo al computer la modalità grafica che intendiamo
    usare e la risoluzione grafica.
    In questo caso la libreria è settata su 'AUTODETECT', in questo modo il computer
    "sceglie" la modalità grafica più appropriata.
    Ma esistono molte altre modalità grafiche sotto Windows! Ne citerò alcune:
    GFX_TEXT
    GFX_AUTODETECT_FULLSCREEN
    GFX_AUTODETECT_WINDOWED
    GFX_SAFE
    GFX_DIRECTX
    GFX_DIRECTX_ACCEL
    GFX_DIRECTX_SOFT
    GFX_DIRECTX_SAFE
    GFX_DIRECTX_WIN
    GFX_DIRECTX_OVL
    GFX_GDI
    Per maggiori chiarimenti potete visionare il file 'allegro.txt' allegato insieme
    alla libreria. */
    set_gfx_mode(GFX_AUTODETECT, 320, 200, 0, 0); // inizializza il formato grafico //
    /* Determina la dimensione del bitmap del buffer (buf) in una matrice di pixel X=320 e Y=200 */
    buf = create_bitmap(320, 200);
    /* Pulisce il buffer che è appena stato creato */
    clear(buf);
    /* Con 'while (...) {...}' viene creato un ciclo infinito in cui si svilupperà tutto il video gioco
    fino a quando non verrà interrotto dall'utente premendo il tasto ESCAPE (ESC) */
    while (!key[KEY_ESC]) {
    /* inserisco qui la procedutra creata precedentemente per la visualizzazione
    schermo 'doppiobuffering();' */
    doppiobuffering();
    }
    /* Quando sarà interrotto il ciclo in seguito alla pressione del tasto ESCAPE
    sarà necessario distruggere il bitmap della variabile (buf) per evitare problemi
    di memoria con il comando 'destroy_bitmap(buf);' */
    destroy_bitmap(buf);
    }
    /* 'END_OF_MAIN ();' è un comando di allegro per far funzionare la chiusura dei
    programmi sotto Windows senza intoppi. */
    END_OF_MAIN ();
    /* Con questo semplice listato abbiamo creato la prima parte del nostro videogame:
    quella che ci consentirà di visualizzare gli oggetti su schermo! */

    Una volta compilato mi da i seguenti errori:
    [Linker Error] undefined reference to `vsync'
    [Linker Error] undefined reference to `_imp__screen'
    [Linker Error] undefined reference to `blit'
    [Linker Error] undefined reference to `clear_bitmap'
    [Linker Error] undefined reference to `install_allegro'
    [Linker Error] undefined reference to `install_keyboard'
    [Linker Error] undefined reference to `set_gfx_mode'
    [Linker Error] undefined reference to `create_bitmap'
    [Linker Error] undefined reference to `_imp__key'
    [Linker Error] undefined reference to `destroy_bitmap'
    [Linker Error] undefined reference to `_WinMain'
    ld returned 1 exit status

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi indicare la libreria al compilatore ... (a proposito, quale?)

    P.S. Dai un'occhiata al regolamento ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    la libreria e' allegro.h...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    No. allegro.h e' un file include.

    La libreria sta in un altro file, .lib o .a ... se non lo indichi al compilatore, il linker non potra' trovare il codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Ahn...nn lo sapevo...io credevo ke fosse quella la libreria...cmq in una guiada mi hanno detto di scrivere quello!!

  6. #6
    Cmq lei conosce la libreria!?!?!

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da benny92_wliga
    Ahn...nn lo sapevo...io credevo ke fosse quella la libreria...cmq in una guiada mi hanno detto di scrivere quello!!
    Purtroppo, questo e' il risultato del voler programmare senza avere idea di quello che si fa, cercando aiuto nelle guide online ....
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    sto studiando per fare cio ma nn capisco gli errori di linker ke mi da...

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da benny92_wliga
    nn capisco gli errori di linker ke mi da...
    Ti ho detto da cosa dipende ... devi indicare la libreria!

    Ora, se non dici come stai lavorando (con quale sistema, compilatore, IDE ... ecc.) ne' indichi chiaramente se hai installato la libreria allegro o no, come si fa a rispondere ...?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    sto lavorando con il dev c++ cm compilatore e ho installato la libreria facendo gli aggiornamenti..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.