>> ROB Bowden: Hi.
Sóc Rob.
Es pregunta com implementar aquest joc?
Bé, anem a trencar a terme la solució personal.
>> Per tant, primer anem a baixar a la init funcions que li vaig dir que
aplicar primer.
El primer que anem a fer una ullada pel que és pàdel init.
Molt bé, així que recordi que volem que el remar estar centrat exactament en
l'eix x.
Així que hem d'esbrinar on que ha d'anar.
>> Tenint en compte l'amplada de la taula - que També es hash de la part superior es defineix amunt -
hem de restar l'ample de paleta i dividir per 2, de manera que el
centre de la pala es troba en el centre del tauler.
Recordeu que la coordenada x es refereix a la cantonada superior esquerra de la paleta,
de manera que aquest és exactament on volem que sigui.
La coordenada i no importa tant perquè podem col · locar
on vulguem.
Així de crear instàncies de la paleta, establim el color negre, ens vam posar a omplir en True
així que és un ple en el rectangle, i a continuació, afegir-lo a la finestra i retorn
la paleta.
I això és tot per inicialitzar la paleta.
>> Serà similar per marcador d'inici.
Així que anem a inicialitzar l'etiqueta, establirem el color a
gris clar - ara pot recollir el que desitjar - que anem a establir la font de
sans serif 48 -
També podria triar el que vulguis -
l'afegirem a la finestra.
Ara bé, això Envia al fons no és realment necessària, és només en cas que alguna cosa
cosa passa a superposar-se a l'etiqueta.
Llavors quan fem servir Detectar col · lisió, Detecció de Col · lisió detectarà l'altra
cosa abans que detecta l'etiqueta.
Però això realment no hauria d'afectar nosaltres en aquest programa.
>> Finalment, tenim aquest marcador actualització funció que escrivim.
Així que anem a fer una ullada a això.
Ara, aquí veiem una cosa que és gairebé idèntic al que
vam veure al label.c.
Així que tenim una etiqueta -
un buffer de caràcters de 12 caràcters, que és just el suficient per manejar qualsevol
nombre enter, positiu o negatiu.
Després fem servir sprintf per copiar el punts en aquest memòria intermèdia.
Així que es aquesta conté una cadena que representa el nombre de punts.
>> Finalment, hem creat l'etiqueta a aquesta cadena.
I llavors hem de centrar l'etiqueta en cas que hem passat de nou a 10
punts i hem canviat ell.
Així es calcula el xi coordenades de l'etiqueta que es
aconseguir l'amplada i l'alçada de la finestra.
Encara que, també podríem simplement utilitzar el constants d'amplada i alçada de hash
definit dalt.
També vam rebre l'amplada i l'alçada de l'etiqueta i es divideixen
que per 2 a centre.
I llavors fem servir Establir ubicació per realment el va posar en aquest lloc.
Així que això és tot per marcador init.
>> D'acord.
Esfera Llavors init serà molt similar a init rems.
Veiem aquí que estem fent servir newgoval amb la finalitat de crear una instància d'un nou pilota.
I aquí estem utilitzant 2 vegades el radi que l'amplada de la pilota, i 2
vegades el radi com la alçada de la pilota.
Ara, també per newgoval, la x, i coordenada i que passem en què ocorre
per referir-se a la part superior esquerra de la pilota, que és en realitat
fora de la pròpia pilota.
Així que per tal d'aconseguir la bola exactament centrada a la junta, hem de passar
ample dividit per 2 per al centre, i després restar l'àrea per empènyer
el centre real de la pilota en el centre del tauler.
I ho fem exactament el mateix per a l'eix i, excepte per l'ús
alçada lloc de l'amplada.
>> Així que col · loca la pilota en el centre.
I això crea una instància de la pilota, ajusti el color a negre, ompli la pilota,
i finalment afegir a la finestra i el torna.
I això és tot per inicialitzar la pilota.
>> Així que ara anem a fer una ullada a init maons, que és una mica més
complicat, però és bastant similar al pàdel init.
Ara, primer hem de saber l'amplada de cada maó.
Recordeu que tenim una constant anomenada trucades que especifica el
nombre de columnes de maons que tenim.
Per tant, anem a determinar l'ample d'un sol maó prenent l'ample
de tot el tauler, restant la mida de la nostra bretxa -
que es defineix picada sobre de la tapa i es refereix per al nombre de píxels que
ha d'estar entre cada maó -
i així tindrem un total de temps bretxa trucades píxels en blanc en un
una sola fila.
I això també es referirà a alguns en blanc píxels a l'esquerra i dreta de la
columna i maó columna dreta esquerra.
>> Així restar els píxels en blanc ens deixa amb un nombre de píxels que
maons estan utilitzant realment.
I després ens vam dividir per trucades a aconseguir el nombre de píxels per maó.
Així que aquí definim una matriu que només especifica els colors que volem per a cada
fila de maons.
Si tinguéssim més files de maons que colors que hem especificat, ja veurem
que només haurem de bucle al voltant i utilitzar el vermell de nou, i després taronja i
groc i així successivament.
>> Així que, com els consells d'especificacions p-set, som anar al bucle sobre totes les files i
columnes dels maons.
Però abans de bucle que sobre les columnes, ens Veiem aquí que estem especificant la
i la posició de cada maó en aquesta fila en particular.
També podríem moure això en el segon per al llaç, però llavors acabàvem d'estar
fent el càlcul una vegada i una de nou quan no cal.
>> Així que la posició i del totxo va ser marge, que és Hash
definit per la part superior i només es refereix a la l'espai entre la part superior de la taula i
l'inici de tots els maons.
I anem a afegir que la fila que estem en temps de l'altura d'un
maó individu més la bretxa és a dir, entre cada maó.
Així que això és també una línia vertical bretxa entre cada maó.
Així que això ens dóna la coordenada del totxo.
>> Així que aquí anem a calcular la coordenada x del totxo.
Ara, tenim buit dividit per 2, ja que, recordar abans, em va dir que en el
costat esquerre de la placa, anem per deixar una mica d'espai.
Així bretxa dividit per 2 és que l'espai.
I després anem a afegir a la columna que estem en temps més ample
bretxa, on l'amplada és la quantitat d'espai que un sol maó ocupa i
llavors bretxa és l'espai entre cada maó.
Així que calcula la coordenada x del totxo.
>> Ara només hem de crear una instància del maó atès que X i Y de la coordenada
utilitzant l'ample que es va calcular per a cada que l'altura de maó i descans és
hash de la part superior es defineix dalt.
Fixem el color del maó.
Noteu que estem utilitzant la nostra gamma de colors i estem passant a la fila que eren
en colors num mod que farà ens emboliquem tornada a vermell si
tenir més files que colors.
Finalment, anem a omplir en el totxo pintar i afegir-lo a la finestra.
>> I això és tot.
Per tant, això és tot per tot el nostre mètodes d'inicialització.
Ara hem de mirar que, si bé bucle que calia omplir polz
Així que aquí veiem que aquest és el nostre temps bucle que es va a continuar fins
joc ha acabat, que ja sigui de forma ens quedem sense vida o
ens quedem sense maons.
>> Així que el primer que hem una espera de Click.
Així que el joc ens espera per realment feu clic abans que la pilota comença a moure.
I després ens anem per disminuir vides.
Així que si hem tingut tres vides, ara estem a dues vides, estem utilitzant la nostra
tercera vida.
Ens centrarem la pilota.
Així que ara, això no és realment va a ajudar a nosaltres a la primera vida que juguem
ja que la pilota ja va a s'han centrat des del moment en què
instanciarlo.
Però veiem quan ens vam acabar perdent la la vida i el llaç de nou al voltant, llavors estem
voldrà tornar a centrar la pilota la part inferior de la placa posterior de
el centre.
>> Així doncs, ara aquí hem de generar la velocitat x de la pilota.
I, d'acord amb l'especificació, fem servir d rand 48 per generar un nombre aleatori
per especificar la velocitat.
Estem sumant un al que ja que només desitja que la velocitat en el rang d'un
a dos en lloc de zero a un.
Finalment, estem fent servir d rand 48 de nou en Per determinar si la pilota
es va a moure cap a l'esquerra o el dret a començar.
>> Així d rand 48 retorna un nombre aleatori entre zero i un, i així preguntant
si és menor de 0,5, tenim un 50 50 oportunitat de canviar la velocitat de
la pilota sigui negatiu.
Finalment, hem creat la velocitat vertical del la pilota per només ser una constant.
Triem 3.
I ara tenim un altre bucle.
>> Així que aquest bucle interior és continuarà.
Noteu aquí, mentre que els maons és més gran que zero -
pel que si ens quedem sense maons, hem va guanyar el joc i el que puguem
sortir d'aquest bucle -
i tots obtenim i Bola menys d'altura almenys 2 vegades el radi.
Llavors, què és això és reconèixer si l' bola passa a anar més enllà de la paleta, a
aquest cas s'ha perdut una vida.
>> Mirant dins d'aquest bucle tenim la comprovació d'un esdeveniment de ratolí.
I així, si hi ha un esdeveniment de ratolí, que vol dir que volem comprovar per
veure si el ratolí es mou, i si el ratolí es movia, volem tenir la
pàdel mantenir-se al dia amb el ratolí.
Així que, per fer això, es calcula el nou posició de la pala, que va
per captar la posició del ratolí - que agafa la posició utilitzant el
cas que ens van passar -
i després anem a restar Ample de pàdel divideix per 2, de manera que el
estades de pàdel es van centrar en el ratolí en lloc de la part esquerra de la paleta
romandre centrat.
>> Així que ara també volem estar segurs que no van sobre la part esquerra o dreta
costat del tauler.
Així que aquí només estem comprovant si l' paleta seria cap al costat esquerre de
la junta directiva, només s'adhereixen que cap al costat esquerre.
I aquí estem comprovant si la pala seria sobre el costat dret de la
bord, només enganxar-lo al costat dret.
I, finalment, que en realitat establim la ubicació de la paleta.
>> Ara bé, si no hi havia un moviment del ratolí, això vol dir que anem a
voleu moure la pilota.
I així ja tenim la x i i velocitat de la pilota
i així ho movem.
Però ara volem detectar un parell de coses.
Així que aquí estem detectant si colpegem, ja sigui el costat esquerre o dret de la
tauler, volem que la pilota rebot.
I així, en aquest cas, establim x velocitat a la velocitat x negatiu.
>> Si la pilota va pegar a la part superior del tauler, a continuació, també volem que el rebot de la pilota.
Però ara volem canviar la velocitat i.
Noti que no tenim una condició per la bola que colpeja la part inferior de la
junta des que ja va ser capturat aquí en aquest bucle while.
>> Finalment, volem detectar alguns col · lisions en la qual si el cop la bola
ja sigui la pala o el maó, volem per fer algunes coses especials de valoració.
Així que si hi va haver una col · lisió, en què oposi no serà nul, a continuació,
si l'objecte va colpejar la pala, ho faríem només vull fer rebotar la pilota.
I aquí, també, ens vam proposar la ubicació d' la pilota just per sobre de la paleta.
Noteu que estem prenent la posició x la pilota i només la reutilització d'això.
Però aquí estem rebent la posició i de la paleta i moure la pilota
per sobre de la paleta.
>> Aquest és un cas especial perquè la pilota no colpeja la pala i després,
abans que sigui capaç de moure fora de la paleta, un altre bucle dóna voltes i
que pensa que encara està en el panell i de manera que la velocitat i es torna a establir en
negativa i després la pilota només una mica de pals rebotant a la paleta.
Per tant, si no ens colpegem la pala, llavors nosaltres també volem comprovar
si colpegem el maó.
I així és com podem comprovar per veure si arribem a un maó.
>> Hem de comprovar això perquè pot realment han afectat l'etiqueta i ens
no vull treure l'etiqueta.
Així que si colpegem un maó, podem eliminar aquesta maó per la finestra, decrement
nostre recompte dels maons, incrementar la nostra nombre de punts, i ara hem de
actualitzar la taula d'indicadors que és exactament el mateix que vam veure abans quan vam veure
marcador init.
Però ara només estem actualitzant la marcador, ja que hem canviat la
nombre de punts.
I ara ha de mostrar que arribem a una més descans.
>> I finalment, si arribem a un maó també volem rebotar.
Així que, finalment, ens aturem només perquè la bola no es mou molt ràpid i ens
en realitat pot colpejar amb la nostra paleta.
I això és pràcticament tot.
Així que ara ho faríem bucle de nou a la part superior de aquest bucle while i continuar fins
ja sigui que perdem una vida o ens quedem sense maons.
>> Què passa si perdem una vida?
Llavors anem a sortir d'això mentre llaç, i veurem bucle donarà suport
a la part superior del bucle while exterior.
En aquest cas, anem a Executeu aquest configurat de nou.
I aquesta configuració tindrà a esperar per cada clic, disminuirà el nostre número
de vides, centrar la pilota, recalcular una velocitat de X i Y, i
a continuació, reprendre el joc.
>> I és així, que continuarà fins que maons acaba sent menys de
o igual a zero -
en aquest cas, vam guanyar el partit -
o vides és menor que zero, en què cas s'ha perdut el joc.
Així, una vegada que aquest és el cas, trenquem d'aquest bucle while, i vam arribar a aquí
on anem a esperar que faci clic abans de sortir del joc perquè el
joc no fa precisament immediatament tancar en nosaltres.
I finalment anem a tancar la finestra i ja està.
El meu nom és Rob, i això va ser Breakout.