You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
(50) |
Apr
(60) |
May
(116) |
Jun
(37) |
Jul
(41) |
Aug
(20) |
Sep
(9) |
Oct
(7) |
Nov
(6) |
Dec
(46) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(3) |
Feb
|
Mar
(4) |
Apr
(12) |
May
|
Jun
(40) |
Jul
(16) |
Aug
(1) |
Sep
|
Oct
|
Nov
(3) |
Dec
|
| 2004 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2014 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
| 2015 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2016 |
Jan
(2) |
Feb
(4) |
Mar
(3) |
Apr
(1) |
May
|
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
|
Dec
|
|
From: Lorenzo S. <lor...@li...> - 2002-03-20 23:41:36
|
Ho installato WinCvs 1.3 beta 7 sul mio pc a casa.. Poi ho installato ssh e codificato le relative chiavi ecc. ecc. ed ho provato. Problema: ho lanciato WinCvs dal menu avvio e... crack! ha provocato un errore di page fault e naturalmente =E8 stato terminato. Premesso che io utilizzo Win98SE, a qualculno di voi ha fatto uno scherzo simile? Lorenzo. |
|
From: <fb...@ti...> - 2002-03-20 13:37:55
|
Arezzo 20-3-2002 Allora, dato che ancora non è stato realizzato il mirror online e date le richieste, provvedero' in questi prossimi giorni a masterizzare un CD contentente le directory 00 (grafica, tools, tutorial) cosi' che possiate farlo girare per portarvi a casa i materiali. Un saluto, Fabio Barzagli |
|
From: <ros...@in...> - 2002-03-20 01:12:08
|
salve a tutti , sono qui ke trazziko con qs SDL, ma nn penso ke mi stia riuscendo tutto alla perfezione anke perke credo di nn essere riuscito a trovare del file dal sito libsdl.org, come il mixer VC6 e l'image win 32... sono cieco, oppure sono stati messi nascosti da qualke parte??? |
|
From: Soulraiden <sou...@ti...> - 2002-03-17 09:13:34
|
Guardate che allegro nn =E8 italiano ed =E8 meno compatibile(per ora) = dell'SDL. Lo dico per i polemici, che se no vengono subito a riprendermi. |
|
From: Soulraiden <sou...@ti...> - 2002-03-17 09:01:08
|
Ciao sono di nuovo Alex. Ritiro la proposta di utilizzare quel fantastico programma chiamato lcc. Perch=E8?. Perch=E8 l'SDL, nn =E8 cos=EC potente o portabile come sembra, infatti = funziona correttamente con soli 2 compilatori sotto windows, il mingw e = il VC. Va bhe fa nulla. E se provassimo a usare allegro invece del SDL??. Cosa =E8 allegro?Una libbreria per fare giochi 2D come l'SDL(solo che = =E8 italiana e visto che sono nazionalista a nastro la preferirei ^_^). Con questo =E8 tutto spero mi rispondiate presto. Ciao da SoulRaiden. |
|
From: Soulraiden <sou...@ti...> - 2002-03-16 08:01:24
|
Ciao a tutti sono Alex. Per prima cosa vorrei dire che mi sono rimesso e che luned=EC torner=F2 = a fare il corso attivamente. Per secondo vedr=F2 un p=F2 di fare qualcosa del nostro grande lavoro in = questi giorni. Per terzo e ultimo spero che accetterete una mia idea. Proporrei di usare invece del mingw e dell'ultraedit32 come programmi, 2 = programmi seppur piacevoli ma distinti che complicano la vita a qualcuno = abituato a usare programmi ide, di utilizzare l' lcc.=20 Lcc nn =E8 un tool ide, ma nn =E8 nemmeno un tool a riga di comando, per = l'esatezza =E8 un tool che sta in mezzo a questi 2. L'lcc ha gi=E0 un editor integrato il wedit, =E8 usa come compilatore = l'lcc un derivato del gcc.Cmq se si vuole si pu=F2 anche utilizzare su = riga di comando o con un altro editor per windows come l'ultraedit32. Questo lo dico per 2 motivi. Il primo che il wedit =E8 un editor fatto apposta per quel tipo di = compilatore da programmatori che lavorano con lcc. Il secondo motivo =E8 che l'lcc =E8 GRATUITO e OPENSOURCE (2 cose = distinte, compilatore incluso si intende, l'ultraedit l'ho "ritoccato" e = nn si f=E0). Io l'ho usato per un po' e mi =E8 piaciuto tanto come compilatore = (include gi=E0 le librerie opengl ^_^) e poi =E8 molto bello l'editor = incluso. Si intende, tutte le cose imparate fino a oggi si possono applicare = anche li solo che velociziamo qualche rutine abituale nella lavorazione = del nostro progetto. Fatemi sapere pareri se volete sapere dove si scarica se volete che ve = lo mando se volete mandarmi a cagare etc etc, tutto quello che volete, = ma sappiate soprattutto che io vi voglio bene e nn vi farei mai del male = ^_^.=20 Ciao da SoulRaiden. |
|
From: Soulraiden <sou...@ti...> - 2002-03-16 07:55:06
|
Ciao a tutti sono Alex.Per prima cosa vorrei dire che mi sono rimesso e = che luned=EC torner=F2 a fare il corso attivamente. Per secondo vedr=F2 un p=F2 di fare qualcosa del nostro grande lavoro in = questi giorni. Per terzo e ultimo spero che accetterete una mia idea. Proporrei di usare invece del mingw e dell'ultraedit32 come programmi, 2 = programmi seppur piacevoli ma distinti che complicano la vita a qualcuno = abituato a usare programmi ide, di utilizzare l' lcc.=20 Lcc nn =E8 un tool ide, ma nn =E8 nemmeno un tool a riga di comando, per = l'esatezza =E8 un tool che sta in mezzo a questi 2. L'lcc ha gi=E0 un editor integrato il wedit, =E8 usa come compilatore = l'lcc un derivato del gcc.Cmq se si vuole si pu=F2 anche utilizzare su = riga di comando o con un altro editor per windows come l'ultraedit32. Questo lo dico per 2 motivi. Il primo che il wedit =E8 un editor fatto apposta per quel tipo di = compilatore da programmatori che lavorano con lcc. Il secondo motivo =E8 che l'lcc =E8 GRATUITO e OPENSOURCE (2 cose = distinte, compilatore incluso si intende, l'ultraedit l'ho "ritoccato" e = nn si f=E0). Io l'ho usato per un po' e mi =E8 piaciuto tanto come compilatore = (include gi=E0 le librerie opengl ^_^) e poi =E8 molto bello l'editor = incluso. Si intende, tutte le cose imparate fino a oggi si possono applicare = anche li solo che velociziamo qualche rutine abituale nella lavorazione = del nostro progetto. Fatemi sapere pareri se volete sapere dove si scarica se volete che ve = lo mando se volete mandarmi a cagare etc etc, tutto quello che volete, = ma sappiate soprattutto che io vi voglio bene e nn vi farei mai del male = ^_^.=20 Ciao da SoulRaiden. |
|
From: Cione <ci...@in...> - 2002-03-14 19:36:34
|
----- Original Message -----=20
From: Cione=20
To: ch...@in...=20
Sent: Thursday, March 07, 2002 11:40 PM
Subject: Prova!!!!
Messaggio di prova!!!!!!
Colgo l'occasione per salutarvi...=20
Con love,
Cione82
|
|
From: Bernardo I. <be...@de...> - 2002-03-14 10:35:09
|
Salve, se tutto va bene dovrei venire a farvi visita Giovedi'. Qualche giorno fa ho aggiunto i lavori in corso nella tasklist di SourceForge: http://sourceforge.net/pm/?group_id=47074 Per adesso sono tutti assegnati a soulraiden (AKA Alexio), ma se rimane malato a lungo ne sposteremo qalcuno ad altre persone. Ho anche dato a ciascun sottoprogetto uno stadio di completamento approssimativo, in base alle ultime cose di cui sono al corrente io. Poi ho messo online una versione leggermente rivista delle specifiche preliminari nella sezione files: http://sourceforge.net/project/showfiles.php?group_id=47074 Ho solo corretto qualche strafalcione mio, non ci sono cambiamenti sostanziali. Per rispondere a Federico sulla SDL: L'archivio SDL-1.2.3.zip, se non ricordo male, dovrebbe contenere i sorgenti completi della SDL. Non e' indispensabile, ma ci potrebbe tornare comodo se c'e' qualcosa che non torna nella documentazione e anche per il debug. L'ordine incasinato delle librerie per il linker (cioe': -lmingw32 -lSDLmain -lSDL) deriva dal fatto che l'include SDL_main.h ha una definizione fatta cosi': #define main SDL_main Questo trucco serve per cambiare nome al main() dell'utente, in modo che il vero main() dell'applicazione venga preso da dentro la libreria SDLmain. Questo main() inizializza alcune cose dell'SDL e poi chiama la SDL_main() scritta dall'utente. Ora, in realta' le applicazioni per Windows (sia a 32bit che a 16bit) non iniziano veramente dal main(). Il vero "entry point" chiamato dal sistema operativo e' WinMain(). Questa funzione viene di solito fornita dalla libreria del compilatore e si occupa di chiamare main() dopo aver inizializzato l'ambiente del C (i file, la memoria, etc.). Quindi la sequenza di chiamate vera e propria diventa: WinMain() -> SDLmain:main() -> SDL_main() [il nostro main()] Adesso viene il bello: il linker del gcc, si comporta da sempre in questo modo: legge le librerie nell'ordine in cui sono state date e include nell'eseguibile tutte le funzioni non ancora definite. A loro volta, queste funzioni possono a loro volta richiedere _ALTRE_ funzioni, ma a questo punto il linker non ritorna piu' a leggere le librerie precedenti e quindi le librerie vanno ordinate per dipendenza. Per adesso e' tutto, tenetemi informato tramite la mailing list. Bye! -- // Bernardo Innocenti - Develer S.r.l., R&D dept. \X/ http://www.develer.com/ |
|
From: <sar...@ya...> - 2002-03-13 18:16:05
|
Ma si' ... facciamo questa prova mail! ______________________________________________________________________ Guarda il nuovo video di Natalie Imbruglia, e 3 clip audio http://it.yahoo.com/mail_it/foot/?http://it.music.yahoo.com/natalie/ |
|
From: <dv...@ti...> - 2002-03-13 18:14:14
|
Messaggio di prova. |
|
From: <fb...@ti...> - 2002-03-13 16:23:00
|
> > Da: ric...@ti... > Data: 13/03/2002 16:10 > A: dla...@li... > Oggetto: [Dlab-devel] prova > > riccardo Benvenuto, Fabio Barzagli |
|
From: <ric...@ti...> - 2002-03-13 15:11:08
|
riccardo __________________________________________________________________ Abbonati a Tiscali! Con Tiscali By Phone puoi anche ascoltare ed inviare email al telefono. Chiama Tiscali By Phone all' 892 800 http://byphone.tiscali.it |
|
From: <ez...@in...> - 2002-03-12 13:38:04
|
rstgfasdgfdgagfgh |
|
From: Federico S. <sol...@te...> - 2002-03-11 20:53:06
|
Visto che c'=E8 la possibili=E0 di utilizzare i Forums = https://sourceforge.net/forum/?group_id=3D47074 utilizziamoli poich=E8 = sono veramente utili, anche se la mailing list copre molte esigenze... Ciao Federico P.S. Alexio CHIODISTA !!!!!! |
|
From: Soldani F. <sol...@te...> - 2002-03-11 11:07:18
|
Dopo vari tentativi (molti), non sono ancora riuscito a far partire l'SDL...Ho seguito i passi fatti da Bernardo in lab Giovedi ma usando il MAKE sono giunto al solito errore win..@16 e compilando senza MAKE non funziona niente perchè non mi trova il file "sdl.h" .... Io ho creato due variabili d'ambiente SDL_INCLUDE e SDL_BIN e le ho richiamate nel file MAKE o nel comando per il compilatore ma niente... X Bernardo: Come avevi fatto a risolvere il problemino del win..@16 ??? Ciao Federico |
|
From: <tu...@ju...> - 2002-03-10 23:10:02
|
|
From: <tu...@ju...> - 2002-03-10 22:49:11
|
|
From: <ru...@ti...> - 2002-03-10 22:36:30
|
prova rgt __________________________________________________________________ Abbonati a Tiscali! Con Tiscali By Phone puoi anche ascoltare ed inviare email al telefono. Chiama Tiscali By Phone all' 892 800 http://byphone.tiscali.it |
|
From: turi <tu...@ju...> - 2002-03-10 22:32:15
|
prova rgt --- Outgoing mail is certified Virus Free. Checked by AVG anti-virus system (http://www.grisoft.com). Version: 6.0.325 / Virus Database: 182 - Release Date: 19/02/02 |
|
From: <jx...@ti...> - 2002-03-08 18:18:15
|
> > Da: Bernardo Innocenti <be...@de...> > Data: 08/03/2002 18:53 > A: dla...@li... > Oggetto: [Dlab-devel] Re: Tools in UltraEdit... > > Francesco Betti wrote: > > > Ho provato sia ad utilizzare sia i tool configurati "a mano" che > > installando UeMake, ma il risultato =E8 sempre lo stesso: o mi > > si blocca il PC, o nel migliore dei casi non succede niente (almeno > > apparentemente). C'=E8 qualcun altro che ha avuto lo stesso problema, > > oppure sono il Fantozzi della situazione? Uso UE 9.0 e Win98 II Ed. > > Hmmm... Giovedi' sono riuscito a farlo andare senza grossi problemi > sul computer di Alexio. Su quello di Artur, invece, succedevano cose > strane. Eppure sono entrambi Windows ME con la versione 9.0a di UE. > > Vi consiglio di esaminare bene la configurazione sul computer di > Alexio e provare a copiarla fedelmente. Se il problema rimane, e' un > bel mistero! Il problema rimane, ma credo che sia dovuto a qualche baco del programma: in pratica si blocca solo se nelle impostazioni per la compilazione da UE aggiungo quella per far visualizzare l'output sull'output window; ho risolto cambiando le impostazioni in modo da farle redirigere in un file separato. Comunque penso che sia un problema del mio PC, perchè ho provato le stesse impostazioni che mi davano problemi con diversi PC in laboratorio, e non ho avuto altri problemi. Ciao, Cecco |
|
From: Bernardo I. <be...@de...> - 2002-03-08 18:00:55
|
Per chi si fosse sintonizzato da poco, vi ricordo che:
- gli archivi della mailing list sono disponibili su
SourceForge a questo URL:
http://www.geocrawler.com/lists/3/SourceForge/20260/0/
ci trovate tutti i messaggi inviati alla lista fin
dall'inizio, ma ci sono dei problemi di impaginazione
che rendono un po' difficile la lettura.
- Se usate Outlook o un altro client simile, possibilmente
_DISABILITATE_ l'invio di messaggi in HTML. Oltre a
consumare oltre il doppio di spazio, risultano poco
leggibili per alcuni client.
- Evitate anche le lettere accentate: si vedono male negli
archivi della mailing list.
Per quelli che non si sono ancora iscritti:
COSA STATE ASPETTANDO? Se non sapete come fare, chiedete
ai vostri colleghi...
Per favore, dite a tutti di iscriversi!
--
// Bernardo Innocenti - Develer S.r.l., R&D dept.
\X/ http://www.develer.com/
|
|
From: Bernardo I. <be...@de...> - 2002-03-08 17:53:24
|
Francesco Betti wrote: > Ho provato sia ad utilizzare sia i tool configurati "a mano" che > installando UeMake, ma il risultato =E8 sempre lo stesso: o mi > si blocca il PC, o nel migliore dei casi non succede niente (almeno > apparentemente). C'=E8 qualcun altro che ha avuto lo stesso problema, > oppure sono il Fantozzi della situazione? Uso UE 9.0 e Win98 II Ed. Hmmm... Giovedi' sono riuscito a farlo andare senza grossi problemi sul computer di Alexio. Su quello di Artur, invece, succedevano cose strane. Eppure sono entrambi Windows ME con la versione 9.0a di UE. Vi consiglio di esaminare bene la configurazione sul computer di Alexio e provare a copiarla fedelmente. Se il problema rimane, e' un bel mistero! -- // Bernardo Innocenti - Develer S.r.l., R&D dept. \X/ http://www.develer.com/ |
|
From: <fb...@ti...> - 2002-03-08 16:08:42
|
Salve ragazzi, buona parte dei tutorial relativi alle lezioni di Economia, sono disponibili sul server sotto la directory 00_Docs/Economia Un saluto, Fabio Barzagli |
|
From: Bernardo I. <be...@de...> - 2002-03-08 13:21:44
|
Ciao a tutti,
ecco il seguito della documentazione per il progetto.
Federico, per favore stampa questa mail e COSTRINGI Alexio
a leggerla! ;-)
Come al solito, se avete domande, dubbi o idee, siete invitati
a rispondere nella mailing list.
Mi raccomando I COMMENTI e la MASSIMA PULIZIA nel codice. Queste
cose dovranno essere facili da leggere PER TUTTI.
Buon lavoro.
-------------------------------------------------------------------------
3. Fase 3: Suddivisione in moduli
---------------------------------
La seguente specifica ha lo scopo di garantire fin dall'inizio una
elevata modularita' dei sorgenti, in modo da aumentare il grado di
parallelismo nella successiva fase di sviluppo, quando il progetto
sara' portato avanti da un gruppo di circa 20 sviluppatori.
3.1. Moduli di alto livello
---------------------------
Questi moduli gestiscono la logica del gioco al livello di astrazione
piu' elevato possibile, avvalendosi dei moduli di basso livello per
implementare la maggior parte delle funzionalita' necessarie.
Ciascun modulo possiede un file header (.h) che ne definisce l'interfacci=
a
verso gli altri moduli.
main
Contiene il main() del programma che chiama le funzioni del modulo
init e, se l'inizializzazione ha avuto successo, mostra la intro del
gioco (modulo intro) e entra nel ciclo principale del programma.
Il ciclo principale (funzione mainloop()) mostra lo schermo dei titoli
(modulo title) e, in base alla selezione dell'utente, decide se
uscire (quit), avviare il gioco (modulo game), etc.
Questo modulo non ha bisogno di un proprio header perche' non viene
chiamato da nessun altro modulo.
init
Contiene una funzione init() che inizializza la SDL e chiama una
funzione init_XYZ() per ogni altro modulo che richiede ulteriori
inizializzazioni. Ciascuna funzione di inizializzazione ritorna TRUE
in caso di successo e FALSE in caso di errore. A sua volta, init()
controlla l'esito di tutte le operazioni e ritorna FALSE al main in
caso di errore.
Alla funzione init() corrisponde la funzione cleanup() [pulizia] che
libera tutte le risorse allocate durante l'inizializzazione. Questa
funzione deve essere scritta in modo da funzionare correttamente anche
se viene chiamata quando l'inizializzazione non e' terminata
intro
Questo modulo mostrera' la intro del gioco. Per adesso, e' sufficiente
una funzione vuota che ritorna immediatamente o, al limite, un'immagine
di sfondo con scritto "questa e' la intro" che viene visualizzata per
qualche secondo.
title
Schermata principale del gioco contenente un semplice menu di opzioni
(nuova partita, esci, etc.). La funzione title() ritorna al main un
codice che indica quale scelta e' stata effettuata dall'utente. Per
evitare codici numerici da mandare giu' a mente, consiglio di usare
un enum oppure po' di define (TITLE_SELECT_GAME, TITLE_SELECT_QUIT, etc=
=2E)
Come per la intro, anche in questo caso ci basta caricare un'immagine
a caso e ritornare sempre lo stesso valore.
options
schermata per le opzioni del gioco. Immagine a caso etc. etc.
game
Questo modulo contiene il loop principale del gioco, dal quale si esce
solo a fine partita. Ogni iterazione del loop principale costituisce un
frame (fotogramma) del gioco. Il modulo game mantiene una struttura dat=
i
che contiene i dati globali della partita in corso (giocatori attivi,
livello corrente, oggetti presenti sullo schermo, etc.). La maggior par=
te
del lavoro sara' svolta chiamando le funzioni dei moduli input, sprite,
music, display, etc.
inter
Questo modulo gestisce gli "intermezzi" tra uno schema ed il successivo=
=2E
level
Questo modulo gestisce i dati che descrivono ciascuno schema del gioco.
In questo momento non e' necessario decidere se questi dati sarnno lett=
i
da file esterni, calcolati algoritmicamente o memorizzati in strutture
dati.
draw
Questo modulo si occupa del ridisegno del campo di gioco (playfield).
La funzione draw() viene chiamata ad ogni frame dopo aver aggiornato
la posizione e lo stato degli oggetti visibili. Questa funzione delega
la maggior parte del lavoro ad altre funzioni di disegno specifiche per
ogni elemento del gioco (sprites, background, scritte in sovrimpression=
e,
etc.).
super
Questo modulo si occupa del ridisegno dei testi in sovrimpressione
(superimposed). Viene chiamato per ultimo ad ogni fotogramma in modo da
aggiornare sullo schermo il punteggio e le altre informazioni che devon=
o
essere visualizzate.
engine
Questo modulo mantiene i dati sugli oggetti (sprite) presenti sullo sch=
ermo
e si occupa di chiamare le routine di movimento di ciascuno di essi.
=20
sprite
Questo modulo definisce un'infrastruttura generica per gli oggetti in
movimento sullo schermo. Uno sprite e' un rettangolo di grafica dotato =
di
un'area trasparente che puo' essere disegnato e spostato sullo schermo.
Il suo aspetto e comportamento variano in funzione del tipo di oggetto
rappresentato (giocatore, nemico, sparo, etc.).
player
Oggetto che rappresenta un giocatore ed lo sprite ad esso associato. Qu=
esto
oggetto mantiene inoltre il punteggio e lo stato attuale del giocatore.
collision
Questo modulo gestisce le collisioni tra oggetti nel gioco. Le collisio=
ni
verranno calcolate solo tra gli oggetti che ne hanno necessita' e l'azi=
one
da compiere in caso di collisione e' rimandata agli oggetti stessi.
3.2. Moduli di alto livello
---------------------------
sound
Questo modulo gestisce il sonoro del gioco. Le funzioni che offre devon=
o
permettere di riprodurre effetti sonori in qualsiasi momento e controll=
are
la musica di sottofondo. Questo modulo utilizzera' la libreria SDL_mixe=
r
per il caricamento e la riproduzione dei formati audio.
gfx
Questo modulo contiene alcune routine grafiche generiche utilizzate in
tutto il gioco per il disegno sullo schermo.
net
Questo modulo gestira' la connessione via TCP/IP con altri computer per=
il
gioco via rete. Nella prima versione del gioco, questa caratteristica n=
on
sara' implementata. Per ridurre la complessita' ed aumentare la
portabilita', questo modulo utilizzera' la libreria SDL_net anziche'
l'API di sistema per i socket.
input
Questo modulo utilizza la libreria SDL per ricevere l'input da vari
dispositivi (tastiera, mouse, joypad, etc.) e tradurre gli eventi
grezzi (codice del tasto premuto) in eventi che hanno significato solo
per il gioco (bottone di fuoco del player 1, spostamento a sinistra del
player 2, etc.). La conversione verra' effettuata utilizzando una mappa
configurabile dal menu delle opzioni.
settings
Gestisce il caricamento ed il salvataggio su un file delle opzioni del
gioco. Questo modulo viene utilizzato dal menu delle opzioni e offre
agli altri moduli diverse funzioni per ottenere il valore attuale di
ciascuna opzione attiva.
3.3. Modello di oggetti
-----------------------
Come gia' detto, il comportamento dei diversi oggetti presenti nel gioco
viene stabilito indipendentemente per ciascuna classe. Tutti gli ottetti
sono degli sprite, ma ridefiniscono dei puntatori a funzioni (simili alle
funzioni virtuali del C++) che determinano il modo in cui l'oggetto si
muove, i suoni che produce e l'aspetto che ha sullo schermo. Ogni classe
permette di creare un numero qualsiasi di oggetti concreti, che prendono
il nome di _istanze_. Ciascuna istanza e' una struttura dati contenente
lo stato attuale dell'oggetto: posizione, velocita', azione intrapresa,
etc.
Tutti gli oggetti hanno delle proprieta' comuni che vengono descritte
da una struttura comune. Per esempio:
struct Sprite
{
=09 struct Node link; /* collegamento alla lista degli
* oggetti attivi
*/
struct Point position; /* posizione attuale */
struct Rect dimensions; /* dimensioni */
void (*move)(); /* funzione per il movimento */
void (*draw)(); /* funzione per il ridisegno */
void (*collide)(); /* funzione per la collisione */
void (*play)(); /* funzione per l'elaborazione delle
* azioni da compiere ad ogni frame
=09=09=09=09 */
};
Un esempio di struttura generica per un oggetto che rappresenta una
automobile gestita dal computer potrebbe essere:
struct Car
{
struct Sprite sprite; /* dati comuni a tutti gli sprite =
*/
=09 int speed; /* velocita' attuale */
=09 int steering; /* posizione sterzo (0 =3D centro) */
int fuel; /* carburante rimasto */
int damage; /* danni alla carrozzeria */
=09 int engine; /* stato motore (0 =3D ok) */
=09 int accel; /* accelerazione massima */
=09 int wheel_pos; /* rotazione ruote (da 0 a 7) */
=09 int gear; /* marcia attuale (0-5) */
=09 CarStatus status; /* stato attuale (vedi definizione) */
};
Alcuni oggetti dal comportamento piu' complesso hanno bisogno di mantener=
e
uno stato attuale o piu' variabili di stato per tenere traccia delle azio=
ni
che stanno compiendo. Per esempio, un oggetto Giocatore in un gioco di ca=
lcio
potrebbe essere nello stato "ROVESCIATA", che dura 10 fotogrammi. Mentre =
il
giocatore e' in questo stato, non puo' muoversi e, ad ogni fotogramma, de=
ve
disegnare i fotogrammi di animazione che costituiscono la rovesciata. Se
la palla si trova in collisione con il giocatore durante questo stato, la
palla viene accelerata nella direzione opposta a quella del giocatore.
A fine rovesciata, il giocatore torna nello stato "NORMALE" e puo' muover=
si
normalmente. In questo stato, se si preme il tasto di fuoco, il giocatore
deve andare in stato "SCIVOLATA" se non ha la palla, oppure "TIRO" se ha
la palla.
Ovviamente ogni classe di oggetti ha una sua serie di stati diversi da q=
uelli
degli altri stati. Un'astronave avra' gli stati NORMAL, EXPLODING, SHOOTI=
NG,
etc.
Per ogni oggetto sara' necessario scrivere una macchina a stati dedicata
che implementa il comportamento specifico dell'oggetto.
Ciascun oggetto, eccetto quelli piu' banali come uno sparo, risiedera' i=
n
un modulo C distinto. Anche il giocatore (o i giocatori) sono degli ogget=
ti
che si comportano in un certo modo, ma alcune caratteristiche del loro
movimento dipenderanno dagli eventi riportati dal modulo input.
|