Come lo strutturo un gioco/programma orientato agli oggetti con darkGDK??
cioe mi potresti spiegare meglio e poi cosa cambio quando installo quella versione???
...... me sa proprio continuero come sto facendo ora......
anzi e se facessi così:
nel main richiamo tutti i metodi e le classi degli altri file .h in modo da formare il gioco?
sarebbe giusto??
Messaggi: 933
Discussioni: 71
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Jun 2010
Reputazione:
0
Ammazza! Ammetto che sono un pò sgomentato da quei codici! Sono diversissimi dal DBPro, eddire che è un derivato del C++
si ma sse noti sono derivati dal c++ le funzioni
q8 completamente comunque ho capito
scusa steve ma non ho ancora capito se ne hai voglia potresti farmi un'introduzione basilare all oop e gdk??
su wikipedia non ho capito nulla XD
Messaggi: 610
Discussioni: 50
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2010
Reputazione:
1
Ecco quello che dice sul sito:
DarkBASIC Professional is the most advanced games development package built on the BASIC language currently available. No other package out there makes it as easy to incorporate all of the special features and effects you see in todays games and no other package natively offers the benefits of Microsofts DirectX 9 technology.
Quindi non dite che è stato fatto in C++! A parte che si capisce dal nome!
ma cosa stai dicendo ma lo hai letto il titolo della discussione???
non ti mettere in mezzo se non sai neanche di cosa stiamo parlando poi è ovvio che darkbasic si basa sul basic -.-"
Messaggi: 610
Discussioni: 50
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Aug 2010
Reputazione:
1
certo che l'ho letto, ma ho visto che discutevate su cos'era basato darkbasic -.-""
Messaggi: 1,021
Discussioni: 28
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: May 2010
Reputazione:
9
È un po' complicato da spiegare, comunque il meccanismo è abbastanza semplice... devi dividere il programma in sottoprogrammi (è un po' azzardato come termine) indipendenti tra loro.
La OOP è un metodo di affrontare il problema, puoi usarla sia con darkgdk per fare un gioco complesso che con solo c++ per fare una semplice calcolatrice o un hello world.
Immaginiamo parte di un gioco di navi spaziali. Abbiamo una navetta player e varie navette enemy.
In comune hanno: la possibilità di morire, la possibilità di cambiare velocità, la possibilità di sparare, ecc...
La navetta player ha: i comandi (sterzo, attacco, ecc...) gestiti dall'utente, un dato numero di vite, un punteggio, ecc...
Le navette enemy hanno: i comandi gestiti dall'AI, un dato numero di navette (il player è perforza uno), ecc...
Quindi si può strutturare in questo modo:
Classe = "navetta"
Attributi = "int velocità", "bool morte", ecc...
Metodi = "cambiaVelocità(int numero)", "controllaMorte(void)", "spara(void)" ecc...
Classe = "player" figlia di classe navetta (la classe player fa tutte le cose di navetta oltre le sue, questa cosa si chiama ereditarietà tra classi)
Attributi = "vite", "punteggio", ecc...
Metodi = "aggiungi_sottrai_Vita(int numero)", "gestisciControlli(void)", "aggiungi_sottrai_Punti(int numero)", ecc...
Classe = "enemy" figlia di classe navetta (anche qui il meccanismo di eredità, visto che anche i nemici sono navette spaziali)
Attributi = "numeroNemici", ecc...
Metodi = "comandiAI(void)", ecc...
Se io adesso dovessi perfezionare il gioco aggiungendo l'armatura alle navette ci metterei un secondo. Mi basterebbe aggiungere un attributo alla classe navetta e modificare leggermente il metodo "controllaMorte(void)".
Oppure se volessi mettere oltre ai normali nemici un boss mi basterebbe creare una classe figlia di "enemy" chiamata "boss". Così oltre a fare tutto ciò che fa "navetta" e "enemy" fa anche delle cose tutte sue (stessa cosa se volessi creare diversi tipi di nemici, ognuno con caratteristiche diverse dagli altri).
In questo modo creo delle classi, se volessi creare il giocatore e i vari nemici mi basta fare questo (posso farlo nel main oppure dentro altre classi):
player Giocatore1; //istanzio la classe player
enemy Nemico1;
enemy Nemico2;
enemy Nemico3;
Voglio far sparare il giocatore? Nel metodo "gestisciControlli()" metto:
if(premutoIlTastoSpazio = true) this.spara(); //notare che spara() si trova nella classe navetta, però essendo player figlia di navetta può farlo anche lei
Voglio far sparare il giocatore richiamando spara() dalla funzione main? Semplice:
Giocatore1.spara();
Mi rendo conto che è un po' difficile capire come funziona, al massimo fai qualche ricerca in internet riguardo la OOP perché faccio fatica a spiegarla... fai conto che questo è un piccolo esempio delle molte cose che si possono fare con questo metodo di programmazione.
Però ti assicuro che una volta che ti trovi dentro un programma strutturato in OOP ti viene sicuramente più facile modificarlo e trovare gli errori.
Tuttavia può essere difficile dividere in modo opportuno le varie classi, quindi se ancora non sei molto pratico con la programmazione strutturata direi che ti conviene approfondire meglio quella.
Se hai difficoltà a capire fammi sapere.
Messaggi: 933
Discussioni: 71
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: Jun 2010
Reputazione:
0
Scusate se mi sono lasciato trasportare, giustamente mi limito ad aiutare zape nel miglior modo possibile avendo fatto un pochino di C++
Allora secondo le mie conoscenze con il DB il termine più giusto sarebbe integrare al progetto principale dei sottoprogetti, che per l'appunto hanno funzioni comuni
Immaginiamo appunto parte di un gioco di navi spaziali. Abbiamo una navetta player e varie navette enemy.
In comune hanno: la possibilità di morire, la possibilità di cambiare velocità, la possibilità di sparare, ecc...
La navetta player ha: i comandi (sterzo, attacco, ecc...) gestiti dall'utente, un dato numero di vite, un punteggio, ecc...
Le navette enemy hanno: i comandi gestiti dall'AI, un dato numero di navette (il player è perforza uno), ecc...
Quindi si può strutturare in questo modo:
DIM ClasseAmica$(10) : REM Di cui la prima array sei tu e le altre i tuoi amici (IA)
DIM TipoMotore$(10) : REM Combustione, Impulso etc etc
ClasseAmica$(1) = "Navetta"
TipoMotore$(1)= "Impulso"
VelocitaAttuale(1)=1
REM CONTROLLI
If Inkey$()="+"
If TipoMotore$="Impulso"=1 and VelocitaAttuale<5
Inc VelocitaAttuale
Endif
Endif
Metodi = "cambiaVelocità(int numero)", "controllaMorte(void)", "spara(void)" ecc...
Questa parte non l'ho capita benissimo:
Classe = "player" figlia di classe navetta (la classe player fa tutte le cose di navetta oltre le sue, questa cosa si chiama ereditarietà tra classi)
Attributi = "vite", "punteggio", ecc...
Metodi = "aggiungi_sottrai_Vita(int numero)", "gestisciControlli(void)", "aggiungi_sottrai_Punti(int numero)", ecc...
Comunque si può riprodure con un etichetta Aggiungi_Sottrai_Vita: insieme a Goto/Gosub oppure con una funzione
Quindi ricapitolando, se vogliamo strutturare graficamente "Classe" per una migliore lettura:
-ClasseAmica$(1) = "Navetta"
|---TipoMotore$(1)= "Impulso"
|---VelocitaAttuale(1)=1
Spero di essermi reso utile
grazie! mi hai schiarito le idee ora mi esercito con l0oop
zapetino per usare l'oop del C++ con darkgdk, perché non ti basta una spiegazione di due righe, io lo studiato un po' su un libro, e ci sono molte cose da sapere, e non per nulla facile, devi sbatterti un bel po', e poi non serve nemmeno con darkgdk, ti torturi solo.
si allora per fare un gioco scrivo 10000 righe su un "foglio" solo???
Crei più file .cpp nello stesso progetto e puoi creare anche dei file .h i quali conterranno le: classi, strutture, funzioni, etc... e anche delle dll xD, cosi ti basta sapere le basi del c++ e non tutto il c++ perché poi i comandi etc.. sono tutti di DarkGDK, e il c++ la non c'entra poco e nulla, e le basi credo che già le hai. E poi se usi DrakGDK oop, cambieranno molte cose nel codice secondo me, e poi sul forum della TGC non credo che ti sapranno aiutare, perché nessuno lo usa, e tra l'altro, l'ultimo aggiornamento di DarkGDK oop risale al: May 2008.
Poi se vuoi usare darkgdk oop, ti conviene prendere un libro sul C++ che tratta l'oop e studiarlo per bene.
Messaggi: 1,021
Discussioni: 28
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: May 2010
Reputazione:
9
@Jonathan Archer :
Immagina di creare una variabile di tipo enemy ( dim nemico1 as enemy ) e di definire a tua scelta quello che è e quello che può fare. Questo è parte di ciò che ci permette di fare la programmazione orientata agli oggetti.
esempio:
dim nemico1 as enemy
dim nemico2 as enemy
nemico1.sposta x,y,z
nemico2.spara
Ora ammettiamo che mi accorgo che è brutto un gioco con un solo tipo di nemico, voglio il nemico "caccia cover" oppure il nemico "caccia speeder". Creando una classe figlia di enemy mi basta aggiungere quelle 2 o 3 caratteristiche che diversificano un "caccia cover" da un nemico normale e basta, dopo potrò definire nemico 1 come cacciaCover (dim nemico1 as cacciaCover).
Molto comoda come cosa! Mettendo queste classi in un file a parte le posso usare anche in altri progetti (sempre se le ho scritte come si deve).
Ma questo con il darkbasic pro non posso farlo, perché non è un linguaggio di programmazione orientato agli oggetti.
Pensa che la variabile "string" in c++ non è una vera e propria variabile (come int, float, char, ecc...), è una classe.
@Zapetino:
OOGDK è solo un wrapper per darkgdk non è indispensabile per fare un gioco strutturato OOP, però può tornare utile.
Come ti ha consigliato Kira ti consiglio anche io... se non sei molto pratico di c++ vai di programmazione strutturata, se sei già abbastanza pratico prova pure la OOP (ma prima leggiti bene qualche guida perché io ti ho detto giusto quattro cose, c'è molto di più).
steve il c++ un po lo so devo "solo" studiarmi l'oop ..ora mi cerco qualche libro e vedo che riesco a fare
Messaggi: 1,021
Discussioni: 28
Thanks Received:
0 in 0 posts
Thanks Given: 0
Thanks Received:
0 in 0 posts
Thanks Given: 0
Registrato: May 2010
Reputazione:
9
Si... era solo per sottolineare che l'oop non è poca roba.
Con devo solo studiarmi l'oop me la sminuisci alquanto XD
si vabe solo per modo di dire XD
spero solo do trovare tempo dopo la scuola per studiarlo!
scusate il doppio post ma tanto qui modero io XD ...
no a parte gli scherzi:
@kira io non voglio usare il gdk oop ma la versione "normale" ma "orientandola" agli ogetti
perche non credo (visto quello che voglio imparare) mi serva molto usare la programmazione strutturale