>> ROB BOWDEN: Ciao.
Sono Rob.
Chiedendosi come implementare questo gioco?
Bene, rompiamo fuori la soluzione personale.
>> Quindi, si deve prima la testa verso il init funzioni che vi abbiamo detto di
attuare prima.
Prima daremo uno sguardo esso è init pagaia.
Va bene, quindi ricordatevi che vogliamo che il pagaia per essere esattamente centrata
l'asse x.
Quindi abbiamo bisogno di capire dove che dovrebbe andare.
>> Data la larghezza della tavola - che è hash definito anche sulla parte superiore -
dobbiamo sottrarre la larghezza della pala e dividere per 2, in modo che la
centro della pala è in al centro della tavola.
Ricordate che la coordinata x si riferisce a l'angolo superiore sinistro della pagaia,
e quindi questo è esattamente dove noi vogliamo che sia.
Coordinata y non importa tanto perché possiamo collocare
ovunque vogliamo.
Così abbiamo istanziare la pagaia, abbiamo impostato il colore nero, abbiamo fissato riempimento True
quindi è un pieno in rettangolo, e noi quindi aggiungerlo alla finestra e ritorno
la pagaia.
E questo è tutto per l'inizializzazione la pagaia.
>> Sta andando essere simile per init tabellone.
Quindi stiamo andando a inizializzare l'etichetta, stiamo andando a impostare il colore
grigio chiaro - si può scegliere quello che desiderare - stiamo andando a impostare il tipo di carattere
sans serif 48 -
potrebbe anche prendere quello che vuoi -
lo aggiungeremo alla finestra.
Ora, questo invio per eseguire non è davvero necessario, è solo nel caso qualcosa
altro succede a sovrapporsi l'etichetta.
Poi, quando usiamo Rileva Collision, Rileva Collision rileverà l'altra
cosa prima di rilevare l'etichetta.
Ma che in realtà non dovrebbe incidere noi in questo programma.
>> Infine, abbiamo il quadro di valutazione di aggiornamento funzione che abbiamo scritto.
Quindi diamo un'occhiata a questo.
Ora, qui vediamo qualcosa che è quasi identico a quello
abbiamo visto nella label.c.
Così abbiamo una label -
un buffer di caratteri di 12 caratteri, che è appena sufficiente per gestire qualsiasi
numero intero, positivo o negativo.
Poi usiamo sprintf per copiare il punti nel buffer.
Quindi s questo contiene una stringa che rappresenta il numero di punti.
>> Infine, abbiamo impostato l'etichetta a tale stringa.
E allora dobbiamo centrare l'etichetta nel caso in cui siamo passati da nove a 10
punti e abbiamo spostato esso.
Così si calcola la x e y le coordinate dell'etichetta che sarà
ottenere la larghezza e l'altezza della finestra.
Anche se, potremmo anche semplicemente utilizzare il costanti Larghezza e Altezza hash
definito sulla parte superiore.
Abbiamo anche la larghezza e l'altezza dell'etichetta e dividere
che dal 2 al centro.
E poi usiamo Set Location effettivamente metterlo in quella posizione.
Ecco, questo è per init tabellone.
>> OK.
Palla in modo init sta per essere molto simile a init pagaie pure.
Vediamo qui che stiamo usando newgoval al fine di creare un'istanza di un nuovo pallone.
E qui stiamo usando due volte il raggio come la larghezza della palla e 2
volte il raggio del altezza della palla.
Ora, anche per newgoval, X e y-coordiniamo che passiamo in sta
per riferirsi alla parte superiore sinistra del sfera, che è in realtà
fuori della sfera stessa.
Quindi, al fine di ottenere esattamente la palla centrato nel consiglio, abbiamo bisogno di passare
larghezza diviso per 2 per il centro, e quindi sottrarre il raggio di spingere
il centro effettivo della palla in al centro della tavola.
E facciamo la stessa cosa per l'asse y, tranne usando
Altezza invece di larghezza.
>> Così che pone la palla al centro.
E questo crea un'istanza della palla, impostare il colore nero, compilare la palla,
infine aggiungere alla finestra e restituirlo.
E questo è tutto per l'inizializzazione la palla.
>> Così ora diamo uno sguardo a init Mattoni che è leggermente più
complicato, ma è abbastanza simile a init pagaia.
Ora, prima dobbiamo capire la larghezza di ciascun mattone.
Ricordati che abbiamo una costante chiamata chiede che specifica l'
numero di colonne di mattoni che abbiamo.
Quindi, stiamo andando a determinare la larghezza di un singolo mattone prendendo la larghezza
di tutto il consiglio, sottraendo la dimensione del nostro gap -
che è hash definita sulla parte superiore e si riferisce il numero di pixel che
dovrebbe essere tra ogni mattone -
e così stiamo andando ad avere un totale di tempi gap invita pixel vuote in un
fila unica.
E che anche riferirsi ad una certa vuoto pixel a sinistra ea destra del
colonna di sinistra e di destra mattoni colonna.
>> Quindi sottrarre quei pixel in bianco ci lascia con un numero di pixel che
mattoni sono effettivamente utilizzano.
E poi ci dividiamo da chiamate per ottenere il numero di pixel per mattoni.
Così qui definiamo una matrice che appena specifica i colori che vogliamo per ogni
fila di mattoni.
Se avessimo più file di mattoni che colori che abbiamo specificato, vedremo
che ci limiteremo a loop back intorno e utilizzare nuovamente rosso, e poi arancione e
giallo e così via.
>> Così, come i suggerimenti spec p-set, siamo andando a ciclo su tutte le righe e
colonne di mattoni.
Ma prima di anello sopra le colonne, abbiamo vediamo qui che stiamo specificando il
y posizione di ciascun mattone in quella riga particolare.
Potremmo anche spostare questo nella seconda per il ciclo, ma poi saremmo solo essere
eseguire il calcolo più e più di nuovo quando non abbiamo bisogno di.
>> Quindi la posizione y del mattone sta essere margine, che è hash
definito sulla parte superiore e solo si riferisce alla spazio tra la parte superiore della scheda e
l'inizio di tutti i mattoni.
E abbiamo intenzione di aggiungere che la riga che siamo sulla volte l'altezza di un
mattone individuo più il divario cioè tra ogni mattone.
Quindi questo è anche un verticale spazio tra ogni mattone.
Quindi, che ci dà la coordinata y del mattone.
>> Così qui stiamo andando a calcolare la coordinata x del mattone.
Ora, abbiamo gap diviso 2 in quanto, ricordare prima, ho detto che al
lato sinistro della scheda, stiamo andando per lasciare un piccolo spazio.
Quindi gap diviso 2 è quello spazio.
E poi stiamo aggiungendo a che la colonna che siamo in tempi più larghezza
gap, in cui la larghezza è la quantità di spazio che un singolo mattone riprende e
poi gap è lo spazio tra ogni mattone.
Così che calcola l'ascissa del mattone.
>> Ora abbiamo solo bisogno di creare un'istanza del mattoni dato che xey coordinate
con larghezza che abbiamo calcolato per ogni che l'altezza del mattone, e rottura è
hash definito sulla parte superiore.
Abbiamo impostato il colore del mattone.
Notate che stiamo usando la nostra gamma di colori e stiamo passando nella riga che erano
sui colori num mod che sta andando a fare ci avvolgere di nuovo intorno al rosso se
avere più righe di colori.
Infine, verrà compilato il mattone colore e aggiungerlo alla finestra.
>> E questo è tutto.
Quindi, questo è tutto per tutti i nostri metodi di inizializzazione.
Ora dobbiamo guardare che mentre ciclo che si doveva riempire pollici
Così qui vediamo che questa è la nostra, mentre ciclo che sta per proseguire fino
gioco è finito, che sia i mezzi siamo a corto di vita o di
siamo a corto di mattoni.
>> Quindi prima cosa che dobbiamo è un Wait for Click.
Così il gioco ci aspetta realmente fare clic prima che la palla inizia a muoversi.
E poi stiamo andando per diminuire la vita.
Quindi, se abbiamo avuto tre vite, ora siamo fino a due vite, stiamo usando il nostro
terza vita.
Stiamo andando a centrare la palla.
Così ora, questo non è davvero intenzione di aiutare noi sulla prima vita che giochiamo
poiché la palla è già andando centrate da quando siamo
istanziato esso.
Ma vediamo quando si finisce per perdere il vita e loop back in giro, poi ci sono
andando a voler centrare la palla da la parte inferiore del bordo posteriore per
centro.
>> Così, ora qui abbiamo bisogno di generare la velocità x palla.
E, come da specifiche, stiamo usando d rand 48 a generare un certo numero casuale
per specificare la velocità.
Stiamo aggiungendo uno che da quando abbiamo appena desiderare la velocità nell'intervallo di uno
a due invece di zero a uno.
Infine, stiamo usando d rand 48 di nuovo in Per determinare se la palla
sta per spostarsi verso sinistra o il diritto di iniziare.
>> Così d rand 48 restituisce un numero casuale tra zero e uno, e così chiedendo
se è inferiore a 0,5, abbiamo un 50 50 possibilità di commutazione della velocità di
la palla a essere negativo.
Infine, abbiamo impostato la velocità verticale la palla viene solo alcuni costante.
Abbiamo scelto tre.
E ora abbiamo un altro ciclo.
>> Quindi questo ciclo interno è intenzione di continuare.
Si noti qui, mentre i mattoni è maggiore di zero -
quindi se siamo a corto di mattoni, abbiamo vinto la partita e possiamo
uscire da questo ciclo -
e tutti Get y Palla a meno di altezza meno 2 volte il raggio.
Così che cosa è riconoscere è se il palla capita di dribblare la pagaia, in
qual caso hai perso una vita.
>> Guardando all'interno di questo ciclo for abbiamo la verifica di un evento del mouse.
E così, se c'è un evento del mouse, che significa che vogliamo controllare
vedere se il mouse è stato spostato, e se la mouse è stato spostato, vogliamo avere la
paddle tenere il passo con il mouse.
Così, per fare questo, si calcola il nuovo posizione della pagaia, che sta
per afferrare la posizione del mouse - che afferra la posizione utilizzando l'
evento che eravamo passati -
e poi andremo a sottrarre larghezza paddle diviso per 2, quindi la
soggiorni paddle centrate sul mouse anziché sul lato sinistro della pala
stare centrato.
>> Così ora vogliamo anche essere sicuri che non andare oltre il lato sinistro o destro
lato del tabellone.
Ed ecco stiamo solo verificando se l' paddle sarebbe il lato sinistro
il consiglio, proprio bastone al lato sinistro.
E qui stiamo controllando se la pagaia sarebbe sul lato destro della
bordo, solo bastone sul lato destro.
E, infine, abbiamo effettivamente impostato la posizione della pagaia.
>> Ora, se non ci fosse un movimento del mouse, questo significa che stiamo andando a
desidera spostare la palla.
E così abbiamo già la x ey velocità della pallina
e così ci spostiamo.
Ma ora vogliamo rilevare un paio di cose.
Così qui stiamo rilevare se ci ha colpito sia il lato sinistro o destro del
bordo, vogliamo la palla a rimbalzo.
E così, in quel caso, noi mettemmo x velocità per x velocità negativo.
>> Se la palla ha colpito la parte superiore della scheda, poi vogliamo anche il rimbalzo del pallone.
Ma ora vogliamo cambiare la velocità y.
Notate che non abbiamo una condizione per la palla colpisce il fondo del
bordo dopo che è stato già catturato qui in questo ciclo while.
>> Infine, vogliamo rilevare alcuni collisioni dove se il colpo palla
sia la pala o il mattone, vogliamo per fare alcuni casi di cose speciali.
Quindi se ci fosse una collisione, in cui oggetti caso non sarà nullo, poi,
se l'oggetto ha colpito la pagaia, avremmo vogliono solo far rimbalzare la palla.
E qui, anche, impostiamo la posizione di la palla appena sopra la pagaia.
Notate che stiamo prendendo la posizione x di la palla e appena riutilizzare quello.
Ma qui stiamo ottenendo la posizione y della pala e spostare la palla
sopra la pagaia.
>> Questo è un caso speciale in modo che la palla non ha colpito la pagaia e poi,
prima che sia in grado di spostare fuori la paletta, un altro ciclo va in giro e
si pensa che sia ancora sul pannello e così la velocità y viene reimpostato a
negativo e poi la palla solo tipo di bastoni rimbalzare sul paddle.
Quindi, se non avessimo colpito la pagaia, allora vogliamo anche verificare
se ci ha colpito il mattone.
E così questo è come possiamo controllare per vedere se ci ha colpito un mattone.
>> Dobbiamo controllare per questo, perché possiamo hanno effettivamente colpito il marchio e noi
non si vuole rimuovere l'etichetta.
Quindi, se abbiamo colpito un mattone, possiamo rimuovere che mattoni dalla finestra, decremento
il nostro conteggio dei mattoni, incrementare la nostra numero di punti, e ora abbiamo bisogno di
aggiornare il tabellone che è esattamente lo stesso che abbiamo visto prima, quando abbiamo visto
init tabellone.
Ma ora stiamo solo aggiornando l' risultato da quando abbiamo cambiato il
numero di punti.
E dovrebbe ora mostrare che ci ha colpito ancora una pausa.
>> E infine, se abbiamo colpito un mattone vogliamo anche a rimbalzo.
Così alla fine, ci fermiamo solo in modo che l' palla non si muove super veloce e noi
può effettivamente colpire con la pagaia.
E questo è praticamente.
Così ora ci sarebbe loop back all'inizio questo ciclo while e proseguire fino
sia perdiamo una vita o siamo a corto di mattoni.
>> Cosa succede se perdiamo una vita?
Poi andremo a uscire da questo mentre loop, e vedremo volontà ciclo backup
all'inizio del ciclo while esterno.
In questo caso, stiamo andando a eseguire questo nuovamente impostata.
E questa impostazione sta per farci aspettare per un clic, diminuire il nostro numero
di vite, centrerà la palla, ricalcolare una velocità x ed y, e
poi riprendere il gioco.
>> E così, che continuerà fino a quando mattoni finisce per essere meno
o uguale a zero -
in questo caso abbiamo vinto la partita -
o vite è minore di zero, in cui caso abbiamo perso la partita.
Quindi, una volta che questo è il caso, usciamo di tale ciclo while, e raggiungiamo qui
dove stiamo andando aspettare per click prima di uscire dal gioco in modo che la
gioco non solo immediatamente chiudere su di noi.
E infine ci chiudiamo l' finestra e il gioco è fatto.
Il mio nome è Rob, e questo era Breakout.