Problema con immagini .png su Dev-C++

di il
7 risposte

Problema con immagini .png su Dev-C++

Ciao a tutti, sono un neofita della programmazione su C++...diciamo che ho inizato ieri con un tutorial (che non è molto chiaro purtroppo) ed ora mi trovo bloccato perchè non riesco ad inserire, al contrario di immagini .bmp, immagini .png. Uso Allegro ed ho installato alpng, loadpng e zlib ma non c'è verso...
Incollo il file sorgente nella speranza che qualche anima pia mi aiuti

se compilo ed eseguo mi dice : [Linker Error] undefined reference to 'load_png' ...



#include "allegro.h"
#include "zlib.h"
#include "loadpng.h"
#include <alpng.h>
BITMAP *buf,*sprite,*sfondo,*scrolling;
PALETTE colori;
int x,y,moltiplica,xscroll;
void alpng_init(void);
void doppiobuffering()
{
vsync();
blit(buf,screen,0,0,0,0,1024,768);
clear(buf);
}
void player() {
draw_sprite(buf,sprite,x,y);
}
void movimentotasti(){
if(key[KEY_LEFT])x=x-10; if(x<=0) x=0;
if(key[KEY_RIGHT])x=x+10; if(x>=900) x=900;
if(key[KEY_UP])y=y-10; if(y<=0) y=0;
if(key[KEY_DOWN])y=y+10; if(y>=690) y=690;
}
void fondale(){
xscroll=xscroll+1;
blit(scrolling,buf,xscroll,0,0,0,1024,768);
if(xscroll>1023){
xscroll=0;
}
}
int main()
{
allegro_init();
install_keyboard();
set_color_depth(32);
set_palette(colori);
set_gfx_mode(GFX_AUTODETECT,1024,768,0,0);
buf=create_bitmap(1024,768);
clear(buf);
sprite=load_png("immagine.png",colori);
sfondo=load_bmp("sfondo1.bmp",colori);
scrolling=create_bitmap(2048,768);
clear(scrolling);
for(moltiplica=0;moltiplica<=2048;moltiplica=molti plica+1024){
blit(sfondo,scrolling,0,0,moltiplica,0,1024,768);
}
x=10;y=30;
while(!key[KEY_ESC]) {
doppiobuffering();
fondale();
player();
movimentotasti();
}
destroy_bitmap(buf);
destroy_bitmap(sprite);
destroy_bitmap(sfondo);
destroy_bitmap(scrolling);
}
END_OF_MAIN();

7 Risposte

  • Re: Problema con immagini .png su Dev-C++

    Io inizierei da questo:
    
    #include <stdio.h>
    
    int main()
    {
       printf("Hello world");
       return 0;
    }
    
    Sei al primo giorno e parli già di sprite, texture e caricamento immagini?

    Preso dal sito di Allegro
    
    If you are a total beginner to C programming, Allegro won't help you much. As a C library (C stands for the name of a programming language), Allegro presumes you know how to write C programs, compile and link them to produce executables. Sorry, you will have to learn how to do that first. You can use a search engine like Google to find tutorials and documentation about C programming or buy a book in a shop on the subject. C is a well known language with many years on its back, so you won't have too many problems finding information about it.
    
  • Re: Problema con immagini .png su Dev-C++

    ...le basi le conosco...non c'è bisogno di fare sarcasmo.
    Volevo andare oltre le mie conoscenze di base e sviluppare un piccolo giochino per farmi due risate e per passare il tempo in ufficio.
    Se hai una risposta competente da darmi te ne sarei grato, altrimenti grazie lo stesso
  • Re: Problema con immagini .png su Dev-C++

    Non è sarcasmo, se non capisci gli errori del linker questi sono basi. Ti dice che non trova la funzione load_png a cui fai riferimento. Hai inserito il file .lib dove è sviluppata sta funzione tra i path dei library del linker?
  • Re: Problema con immagini .png su Dev-C++

    Oh grazie per il reply!
    non so come caricare in Dev-C++ i file .lib a questo punto, credevo bastasse installare ed includere alpng.h per avere a disposizione il comando load_png invece evidentemente non è così.
    Tra l'altro le istruzioni sono parte di un file sorgente e non di un progetto, indi per cui non è abilitata "opzioni del progetto" dal menù "progetto" dove penso si possa trovare il modo di inserirli...
  • Re: Problema con immagini .png su Dev-C++

    Non conosco allegro quindi non so se viene rilasciata come libraria statica (quindi codice già compilato in formato .lib) oppure dinamico (compilato con .dll e .lib) oppure solo codice sorgente. In ogni caso devi vedere se questa funzione (che dovrebbe essere dichiarata in "loadpng.h" presumo) è sviluppata in un .c o .cpp di allegro. In caso contrario devi creare un progetto e piazzare dentro il listato che stai faccendo e poi andare nelle proprietà del progetto e aggiungere questo file lib ammesso che questo esista. Un ultima cosa: cambia Dev-C++ ormai obsoleto. Hai almeno altre 3 scelte: Visual C++ Express (gratuito), QT Creator, Code::Blocks.
  • Re: Problema con immagini .png su Dev-C++

    Retifico: Allegro vedo che viene distribuito solo come codice sorgente ma con un CMakeList dentro. Questo è il file di configurazione del programma CMake che ti crea un progetto dove compilare allegro per il tuo IDE. Quindi per primo devi compilare allegro. Come vedi le strade del signore sono infinite e non c'è una risposta semplice ad ogni domanda.
  • Re: Problema con immagini .png su Dev-C++

    Ok grazie mille per i suggerimenti. Mi metto sotto a cercare di risolvere il problema.
Devi accedere o registrarti per scrivere nel forum
7 risposte