Vai al contenuto

Curiosità Sulla Programmazione App


Messaggi raccomandati

Ciao a tutti! Ho scaricato qualche giorno fa dal sito Apple Developers una demo su come può essere usato Swift per creare un gioco in 2D. Leggendo il codice ho notato la totale assenza di cicli, per cui mi è venuta spontanea questa domanda: come è possibile che il programma non si chiuda fino a quando non decido io di uscirne? Quello che intendo dire è che non capisco come, dopo aver premuto W per andare avanti (ad esempio), come fa il programma ad eseguire un'altra qualsiasi istruzione e capire che quando premo W deve far muovere il mio personaggio nuovamente? In tutti i programmi che ho visto/programmato finora se non vi è un ciclo vengono eseguite a cascata tutte le operazioni. L'unico modo per tornare indietro nel codice è inserire un go to, ma in quel programma non ho visto niente che assomigliasse neanche lontanamente al go to (o a qualsiasi cosa esista in Swift al suo posto)... Come è possibile tutto ciò? Grazie in anticipo per le risposte :)

Link al commento
Condividi su altri siti

forse ti posso rispondere... anche se non ho visto quella demo e con i videogiochi ho molta più familiarità con Unity3d.

Prima di tutto:

"come è possibile che il programma non si chiuda fino a quando non decido io di uscirne?" "come fa il programma ad eseguire un'altra qualsiasi istruzione e capire che quando premo W deve far muovere il mio personaggio nuovamente?"

 

da quel che dici probabilmente hai programmato in C o in un linguaggio simile (e hai in testa una programmazione di tipo imperativa)... L'approccio di tutti i linguaggi di programmazione moderni è però ad oggetti o al massimo ad eventi... tutto questo è possibile grazie all'uso di processi e thread.

Difficile spiegare tutto in poche righe e non voglio farti un poema, sappi comunque che il tutto si basa sul mettere in pausa l'esecuzione di funzioni mentre se ne eseguono altre e con dei semafori di decide quale processo/thread bisogna far partire...

I processi, i semafori ecc... comunque esistono anche in C.

fare un ciclo while significa fare un'attesa attiva, e non conviene quasi mai.

 

tutta roba che però, alla fine dei giochi, non serve a te che vuoi creare un videogioco (o meglio la programmazione multithread potrebbe servirti perchè migliora le prestazioni se si usa nella maniera corretta, ma non è necessaria).

 

Di tutto infatti si occupa il motore grafico, il framework grafico e le varie librerie grafiche, tu non devi fare altro che utilizzarle...

si potrebbe anche pensare il tutto come un sistema di scripting, il programma base c'è già, tu ci aggiungi solo le parti che servono a distinguerlo da tutti gli altri... come programmatore potresti fare anche tutto da zero, ma reinventare la ruota non conviene.. i programmatori che lavorano sul programma di base non lavorano sulla creazione dei videogiochi.

 

per finire ti informo un po' sul goto... il goto è un salto senza condizione e nei linguaggi di programmazione di alto livello, se esiste (ad esempio in java non esiste), non va mai usato. La condizione di uscita da un ciclo/una funzione/metodo ricorsivo deve sempre essere chiara, qualsiasi cosa non prevista va gestita con un sistema di eccezioni o con dei salti con condizioni (if else, switch case ecc...).

Sui linguaggi di basso livello non c'è altra scelta se non usare il goto.

Link al commento
Condividi su altri siti

Grazie per il chiarimento Leif. Io vengo dal C ed ho appena cominciato a studiare il C++, per quello ti ho fatto l'esempio del go to (mai usato, tra il prof a lezione ed internet ho capito i danni che è in grado di fare). Quindi in poche parole tutte le parti del codice del gioco sono collegate a quelle della grafica, la quale gestisce tutto... Gentilissimo come sempre, grazie :)

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...