Un gioco per computer è un ciclo infinito di:
- Aggiornamento: fai avanzare lo stato del gioco di un piccolo intervallo di tempo (come 1/80 di secondo).
- Dipingi lo stato di gioco corrente.
Ci sono variazioni di questi. Alcuni giochi hanno più aggiornamenti tra ogni colore, oppure possono variare per rendere il flusso del gioco uniformemente uniforme su macchine diverse. Ma quelli sono dettagli tecnici.
La fase di aggiornamento che si verifica tra 50 e 100 volte al secondo (sì, è così spesso) fa questo:
- Aggiorna la fisica dei giochi. Dì che un attore ha una velocità. L'aggiornamento dovrebbe spostarlo di un po 'nella giusta direzione. Inoltre, se si utilizza un motore fisico, dovrebbe verificare la presenza di collisioni con altri attori o ostacoli.
- Aggiorna le regole dei giochi. Questo è ciò che lo rende un gioco e non un esperimento di fisica. Supponiamo che un proiettile abbia colpito l'attore giocatore. Le regole del gioco dicono al giocatore di dedurre X punti di salute e il proiettile di sparire.
- Aggiornamenti AI. A volte gli attori controllati dal computer dovrebbero meritare cosa fare. Vai a sinistra o a destra? Trova un percorso per un bel posto dove stare. Spara un'arma.
- Controllo di input. Aggiorna l'attore giocatore in base ai pulsanti premuti sulla tastiera.
- Aggiorna il grafico della scena. Questo può far avanzare un'animazione di un passo o aggiornare la GUI per mostrare che il giocatore ora ha 10 punti in meno di salute. Il suo unico scopo è quello di rendere il gioco bello e piacevole.
Da dove inizi?
Il requisito di base per un gioco grafico è programmare la grafica. Assicurati di poter aprire una finestra e disegnare una palla al suo interno.
Presumo che tu possa fare una sorta di lezione. Fai una lezione di ballo. Ha i seguenti membri: x, y, deltaX, deltaY. Tutti sono numeri interi e in scala di pixel. Ora scrivi questo ciclo.
forever, do this {
start measure time (in milliseconds)
//physics part
add deltaX to x
add deltaY to y
if x is bigger than the screen width, assign -deltaX to deltaX
if y is bigger than the screen height, assign -deltaY to deltaY
if x is less than 0, assign -deltaX to deltaX
if y is less than 0, assign -deltaY to deltaY
//paint
paint the ball at x, y
stop measuring time, assign this to workTime
make the thread sleep for (25 - workTime) milliseconds
}
Questo farà rimbalzare la palla dei confini delle finestre. Non è ancora un gioco , piuttosto una simulazione fisica. Se scrivi l'aggiornamento della fisica delle palline all'interno della classe delle palline, è facile aggiungere diverse palline. Memorizzali in un elenco e aggiorna e dipingi ciascuno per ciascun fotogramma.
È possibile aggiungere una paletta (simulare la fisica per essa e renderla controllabile con il mouse o la tastiera) e un obiettivo di gioco come impedire alla palla di raggiungere la parete sinistra. Se il gioco aggiunge sempre più palline nel tempo, la difficoltà aumenterà. Hai un gioco.
Perché dormire per (25 - workTime) millisecondi? Se lo fai in questo modo, la simulazione verrà eseguita a un ritmo costante di 40 aggiornamenti e vernici al secondo. Sarà abbastanza liscio. Se salti la parte sleep, l'animazione sarebbe a scatti e occuperebbe il 100% della CPU. Inoltre, la velocità della palla dipenderà dalla velocità della macchina che la esegue. Ora, la velocità verticale della palla è di 40 * deltaY pixel al secondo.