|
From: Bernardo I. <be...@de...> - 2002-04-01 18:40:36
|
Salve, innanzitutto scusatemi per non essermi fatto sentire prima. Le feste hann= o=20 contagiato anche me: non sono neanche andato in ufficio per un paio di=20 giorni... Ho riguardato un po' i sorgenti presenti nel CVS di SourceForge. Tirando = le=20 somme, sono molto contento di come avete lavorato Mercoledi'. Possiamo=20 dire che le fondamenta del gioco sono gia' al loro posto. Ecco un aggiornamento su quello che c'e' da fare nel prossimo futuro, possibilmente anche prima che riprendano le lezioni: - I file game.c e game.h non sono stati aggiunti nel repositorio... anch= e se non era finito, sarebbe stato il caso di metterlo per poterci lavorare da casa. - intro.c cerca di aprire un'immagine BMP in C:\, cosa che ovviamente fallisce su tutti i computer tranne quello di chi lo ha scritto. Per poter vedere qualcosa, ho dovuto smanettare i sorgenti. Al piu' presto convertiremo la grafica del gioco in un formato grafico adatto e metteremo tutti i file nel CVS insieme ai sorgenti. - il Makefile non compila player.c. Ed in effetti e' meglio cosi', perch= e' non si compila a causa degli errori! Prima di fare il commit, ricordatevi sempre di compilare tutto quanto per essere sicuri che le vostre modifiche funzionino con l'ultima versione presente nel CVS. - In main.c, il programme esce subito dopo la Intro, senza chiamare title() e poi game(). Ok, nel CVS non ci sono ancora, ma prima o poi sarebbe da fare. Mi ricordo anche di aver visto su qualche computer una versione del main() piu' completa, con un loop di gestione degli eventi. Perche' non l'avete committato? - In quasi tutti i moduli, c'e' la parte di inizializzazione, ma manca il corrispondente clean-up. Regola d'oro: ogni volta che allocate qualcosa, scrivete _subito_ il codice che la libera. Altrimenti ve ne dimenticherete e i vostri programmi soffriranno sempre di perdita di risorse. - Nel Makefile, le librerie sono specificate nella variabile MODNAME. Perche'? MODNAME serviva a specificare il nome del programma, mentre per le librerie ci vorrebbe una variabile apposita (che ne dite di $(LIBS) ?) - Ho provato a compilare tutto quanto su Linux. Non ci crederete, ma funziona quasi senza modifiche! Compilementi per aver scritto il vostro primo programma portabile! :-) Ah, per rispondere a Luca e a Andrea, penso che il vostro problema sia non aver messo la directory bin del gcc nel PATH di Windows. Se usate NT/2000/XP, le variabili d'ambiente le trovate in System-Advanced-Environment (Sistema-Avanzate-Ambiente). Su 95/98/ME invece, dovete modificare il path in C:\AUTOEXEC.BAT e riavviare. Le regole che vi ho spiegato sulla ricerca delle DLL si applicano quando Windows cerca di caricare un eseguibile che usa delle librerie dinamiche. Per linkare con il compilatore e' tutta un'altra cosa: dovete dire al gcc di cercare l'SDL e le altre librerie nelle directory lib/ che contengono i file ".lib". Per farlo, modificate il file "settings.in" che ha fatto Federico apposta per facilitare la configurazione del Makefile. Ah, dimenticavo: SMETTETELA DI COMPILARVI I FILE A MANO DA ULTRAEDIT!!! C'e' il Make apposta! E' piu' facile, piu' veloce, e sopratutto e' l'unico modo per essere sicuri di aver ricompilato tutto quello che e' cambiato. Bastano 2 minuti per capire come si fa... Altra cosa: ho provato lo GNU Debugger (gdb) del Cygwin: sembra che funzioni bene e la GUI e' abbastanza intuitiva. Se volete provarlo, scaricatevi il setup del Cygwin da qua: http://sources.redhat.com/cygwin/ Per adesso e' tutto. Ho parlato con Fabio e abbiamo deciso di anticipare le lezioni sulla grafica perche' tra poco ne avrete bisogno per andare avanti. Buona Pasqua! |