Linux Programmazione C (Aiuto!!!)

di il
5 risposte

Linux Programmazione C (Aiuto!!!)

Vorrei sapere come è possibile disegnare un oggetto, es.una figura geometrica sullo schermo per poi farla muovere.
è possibile usando una struttura?
Chi mi può aiutare?

5 Risposte

  • Re: Linux Programmazione C (Aiuto!!!)

    Certo che è possibile... altrimenti come ce li fanno i videogiochi sotto Linux? :) , basta usare una libreria grafica che ti permette di farlo... o usi direttamente la X o ti aiuti con qualcosa come le Allegro.
    http://monitor.deis.unical.it/ant/it/demo

    Per il movimento devi impratichirti sulla "basi" dell'animazione computerizzata... qualcosa di simile a come si fanno i cartoni animati... scrivi, cancelli, scrivi, ecc...


    Chip
  • Re: Linux Programmazione C (Aiuto!!!)

    Il mio problema è che devo fare un esercizio per un esame usando le pipes
    delle navicelle si muovono nello schermo e rilasciano delle bombe, un'astronave ,il cui movimento è limitato a spostamenti laterali sulla linea più in basso dello schermo, premendo il tasto spazio rilascia un missile che deve colpire le navicelle nemiche
    non è che hai un codice che faccia qualcosa di simile, anche se da modificare?
  • Re: Linux Programmazione C (Aiuto!!!)

    Ei, io devo fare la stessa cosa!!! Ho il codice ma dopo mi lascia la scia l'immagine. devo trovare il modo di farla muovere senza lasciare scia!!! Se riesci a trovare un modo fammi sapere
    msn:

    - ianaz -
  • Re: Linux Programmazione C (Aiuto!!!)

    Chip... la risposta l'hai postata...

    Ogni volta che disegni a video uno sprite devi:
    1) Salvare il contenuto del rettangolo sottostante
    2) Disegnare lo sprite

    Al successivo movimento dovrai:
    1) Ripristinare lo sfondo prima di muovere lo sprite
    2) Procedere come sopra...

    L'implementazione è banale(pseudocodice):

    byte buffer_precedente[];
    void DisegnaSprite(x,y)
    {
    salva(x,y,buffer_precedente);
    disegna(x,y,sprite);
    }
    void Restore(x,y)
    {
    disegna(x,y,buffer_precedente);
    }

    e nella main qualcosa del tipo:

    sprite_x,sprite_y;
    ciclo
    {
    ...
    Restore(sprite_x,sprite_y);
    sprite_x++;sprite_y++;
    DisegnaSprite(x,y);
    }

    Insomma, ripristinare lo sfondo prima di muovere lo sprite... occhio alla prima passata, magari fai una prelettura dello sfondo in modo da riempire da subito il buffer_precedente...

    Ciaociao

    Venite a visitarci qui: http://www.bottomap.co
  • Re: Linux Programmazione C (Aiuto!!!)

    Io sono riuscito. Il codice é questo:

    #include <allegro.h>
    BITMAP *buf, *pallina, *sfondo;
    PALETTE colori;
    int x = 100, y = 100;
    void update(){

    vsync();
    blit(buf, screen, 0, 0, 0, 0, 800, 600);
    clear(buf);

    }

    void vai(){

    draw_sprite(buf, sfondo, 0, 0);
    draw_sprite(buf, pallina, x, y);
    }
    void muovi(){

    if(key[KEY_RIGHT]){
    x = x + 2;
    }
    if(key[KEY_LEFT]){
    x = x - 2;
    }
    if(key[KEY_DOWN]){
    y = y + 2;
    }
    if(key[KEY_UP]){
    y = y - 2;
    }

    }
    int main(){

    allegro_init();
    install_keyboard();
    set_color_depth(32);

    set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0);
    buf = create_bitmap(800, 600);
    clear(buf);

    pallina = load_bmp("pallina.bmp",colori);
    sfondo = load_bmp("sfondo.bmp",colori);

    while(!key[KEY_ESC]){

    update();
    vai();
    muovi();

    }
    return 0;
    }
    END_OF_MAIN();

    - ianaz -
Devi accedere o registrarti per scrivere nel forum
5 risposte