Newsgroup: it.comp.programmare.win32
Titolo: [REQ] Iniziare a programmare giochi...

Ciao a tutti,
vorrei iniziare a programmare qualche semplice videogioco 2d
(tipo snake, tetris, etc.. ) con una interfaccia grafica migliore
del rude "clearscreen" da dos (in questa pessima maniera ho fatto
finora una specie di snake..ma con un po' di grafica bitmap sarebbe
mooolto meglio).
Per questo ho deciso di buttarmi sulla programmazione in Win32.
Avrei a questo punto due o tre domande:
1- So già programmare in C, devo impararmi anche come funziona il C++? 
(sarebbe meglio vero?)
2- Devo imparare anche ad usare le directx? In che modo "interagiscono" con 
Win32?
3- C'è un buon manuale cartaceo  che mi spieghi un po' meglio come 
funzionano le API Win32,
le directx??
p.s: non sono un completo "beginner", vi prego di non consigliarmi linguaggi 
che fanno
i videogiochi da soli, vorrei programmare ad un livello un po' più basso!
grazie mille,
Blob 

 vorrei iniziare a programmare qualche semplice videogioco 2d
[...bla...]
Credo che la soluzione più efficiente sia Visual C# 2005 Express + XNA 
Framework.
Sono entrambi free, scaricabili dal sito di Microsoft.
XNA dovrebbe permettere di programmare sia per PC che per XBox (forse 
dev'essere una specie di Managed DirectX10).
Il problema è che devi avere tanta RAM e una scheda grafica che supporti gli 
shader delle DirectX10...
Forse qualcuno ti dirà che è troppo per un semplice videogioco 2D... beh è 
vero, ma il C# è più efficiente (e più facile da programmare) del C++ in 
termini di tempo di sviluppo (almeno secondo me) e una soluzione un po' 
"avanzata", ma garantita da Microsoft mi pare buona.
Se vuoi qualcosa di più classico, puoi provare con C++ + openGL (più 
facilmente portabile su Linux o Mac), o C++ + Direct3DX9 (io lascerei 
perdere le DirectDraw). Eviterei anche le classiche GDI o GDIPlus.
Le API di Windows ti servono solo per creare la finestra principale e 
l'interfaccia utente (qui è consigliabile usare DirectInput: le DirectX 
offrono un supporto completo: grafica, controller, audio).
P.S: Prendi il mio consiglio con le molle, io non ho né il Visual C# 2005 
Express, né l'XNA Framework: forse qualcuno che li ha già potrà consigliarti 
meglio...
Spero di esserti stato utile, poi vedi tu e fai un po' come ti pare.


Sì, vorrei stare decisamente sul classico, perchè come già detto,
non mi interessa programmare ad altissimo livello: vorrei vedere un po'
tutti i particolari di ciò che faccio..
Mi spieghi come mai eviteresti le DirectDraw?
Le DirectX in generale potrebbero bastare?
p.s: non è che hai il modo di fare due "chiacchere" (MSN, GoogleTalk... )
sull'argomento? Su newsgroup è più difficile farsi capire...
grazie mille
,Blob 

i videogiochi da soli, vorrei programmare ad un livello un po' più basso!
Ottima scelta. Ad ogni modo ti consiglio di fare una visita a
it.comp.giochi.sviluppo

C++ č semplicemente un'estensione del C che permette di fare cose in piů 
come la programmazione per template o per classi, e ora con VS 2500 express 
hanno introdotto il CLI che č una sorta di estensione al C++.
Puoi fare qualunque cosa con uno qualsiasi di questi linguaggi, ma 
naturalmente se hai una conoscenza approfondita del C++ o del CLI puoi usare 
notazioni piů compatte e riorganizzare meglio il codice... 

 grazie mille
Prego

 ha scritto nel messaggio 
news:45c21228$0$22180$4faf...@reader1.news.tin.it...



Ci ho guardato un po', mi sembra che ci siano in mezzo anche un po'
di classi "alla C++", o sbaglio?
Mi puoi spiegar meglio questa storia del main tipo DOS? Cosa
significa: non mi consente di aver il mio programma in una finestra
di Windows? Mi mette automaticamente in full-screen mode?
grazie,
Blob 

 di Windows? Mi mette automaticamente in full-screen mode?
no, non necessariamente, puoi fare le finestre come vuoi.
La cosa e' questa: i programmi possono avere un main del tipo
void main(void) ... (o anche con argc e argv)
che e' il tipico main del DOS.
Invece i programmi tipici sotto windows hanno un winMain piu' complesso,
che richede di definire delle classi e richiede una callback function,
e' un po' piu' complesso ma molto flessibile.
L'SDL ti maschera questa cosa, non ti devi occupare della parte di creazioni 
di classi e finestre,
di registrare le finestre, di intercettare la callback function, come 
dovresti fare se vuoi
creare e aprire finestre sotto windows..
La cosa ha i suoi vantaggi e i suoi svantaggi:
vantaggio: semplicita'
svantaggio: non ha accesso diretto alla callback function di windows, 
casomai ne sentissi il bisogno...
in pratica, come puoi vedere dagli esempi, fai una semplice init e ti viene 
creata una finestra (full screen o meno, come vuoi),
poi ci puoi mettere dentro dei bitmap, gif, jpg, o scriverci dentro pixel a 
pixel, leggere i pixel a video come in un array, etc etc,
quindi hai il pieno controllo a basso livello della tua grafica.
Da li in poi sta a te crearti quello che vuoi fare...
Inoltre  il C++ non serve, basta il C normale...
prova a scaricarti gli esempi in sequenza, vedrai che e' abbastanza 
semplice...
GCL