>> ROB BOWDEN: Oi
Estou Rob.
Quere saber como aplicar este xogo?
Ben, imos saír a solución persoal.
>> Entón, imos primeiro cabeza para abaixo para o arranque funcións que lle dixo para
aplicar en primeiro lugar.
Primeiro un, imos dar un ollo para el é o init remo.
Todo ben, entón recorda que queremos que o remar para ser exactamente centrado en
o eixe-x.
Entón, necesitamos descubrir onde que debería ir.
>> Dada a anchura da tarxeta - que Tamén se define enriba de hash -
necesitamos restar o ancho da pa e dividir por dous, de xeito que o
centro da raqueta está en o centro do taboleiro.
Lembre que a coordenada x refírese a na esquina superior esquerda da pa,
e por iso este é exactamente onde queremos que sexa.
A coordenada y non importa tanto porque podemos poñer
lo onde queiramos.
Entón, nós instanciar o remo, montar a cor negra, montar cubrir como True
polo que é un rectángulo cuberto, e nós logo engadilo á fiestra e retorno
o remo.
E iso é para arrincar o remo.
>> Será semellante ao init marcador.
Entón, nós estamos indo a iniciar a etiqueta, imos definir a cor de
gris claro - podes elixir o que quere - imos establecer a fonte de
sans serif 48 -
Tamén podes escoller o que quere -
nós imos engadir lo á ventá.
Agora este Enviar cara atrás non é realmente necesario, é só no caso de algo
máis pasa a sobrepasar-se na etiqueta.
Entón, cando usar a detección de colisión, Detección de colisión detectará o outro
cousa antes que detecta a etiqueta.
Pero iso realmente non debe afectar nós neste programa.
>> Por último, temos o presente panel de actualización función que escribimos.
Entón, imos dar un ollo niso.
Agora, aquí vemos algo que é case o mesmo que o que
vimos no label.c.
Polo tanto, temos unha etiqueta -
un buffer de caracteres de 12 caracteres, que é só o suficiente para tratar con calquera
número enteiro, positivo ou negativo.
Entón usamos sprintf para copiar o apunta no que o tapón.
Entón s este contén unha cadea que representa o número de puntos.
>> Por último, imos definir a etiqueta para esa secuencia.
E entón necesitamos centrar a etiqueta no caso pasamos de nove a 10
apunta e nós desprazouse lo.
Así, calcúlase a x e y-coordenadas da etiqueta que vai
obter o ancho ea altura da xanela.
Aínda que, tamén pode simplemente usar o constantes de ancho e alto de hash
definido enriba.
Tamén obter o ancho ea altura da etiqueta e dividir
que por 2 a centro.
E entón usamos Set Location para realmente poñelas no lugar.
Entón é iso para o init marcador.
>> Aceptar.
Entón, bola de arranque será moi similar ao init pas tamén.
Vemos aquí que estamos usando newgoval a fin de instanciar un novo balón.
E aquí estamos usando dúas veces o raio como o ancho do balón, e 2
veces o seu radio, como o altura do balón.
Agora, tamén para newgoval, o xe coordinada y que pasamos en que vai
para referirse ao esquina superior esquerda da pelota, que é en realidade
fóra da propia bola.
Polo tanto, a fin de obter o balón exactamente centrada no consello, necesitamos pasar
ancho dividido por 2 ao centro, e entón restar o raio para empurrar
o centro real da bóla o centro do taboleiro.
E facemos exactamente a mesma cousa ao eixe y, agás a usar
altura, no canto do ancho.
>> Así que pon o balón no centro.
E esta instancia o balón, estableza a cor para negro, encha o balón,
logo finalmente, engadir a el o fiestra e devolve-lo.
E iso é para arrincar o balón.
>> Entón, agora imos dar un ollo a init ladrillos que é lixeiramente máis
complicado, pero é moi semellante a inicialización remo.
Agora, primeiro necesitamos descubrir o ancho de cada ladrillo.
Lembre que temos unha constante chamada chamadas que especifica o
número de columnas de ladrillos que temos.
Entón, nós estamos indo para determinar o ancho dun único ladrillo, tendo o ancho
de toda a dirección, subtraindo o tamaño do noso gap -
que se define enriba de hash e se refire ao número de píxeles que
debe situarse entre cada ladrillo -
e así nós imos ter un total de veces gap chama píxeles en branco nun
soa liña.
E iso tamén se refiren a algunhas en branco píxeles á esquerda e á dereita do
columna da esquerda e ladrillo columna da dereita.
>> Entón restar os píxeles en branco déixanos cun número de píxeles que
ladrillos están realmente a usar.
E, entón, dividir por chamadas para o número de píxeles por ladrillo.
Entón, imos establecer unha matriz que só especifica as cores que quere para cada
fileira de ladrillos.
Se tivésemos máis filas de ladrillos que cores que nós especificados, veremos
que imos loop de volta de todo e usar o vermello de novo, e logo de laranxa e
amarelo e así por diante.
>> Así, como os consellos de especificación-p definido, estamos vai varrer todas as liñas e
columnas dos ladrillos.
Pero, antes de loop sobre as columnas, nós ver aquí que estamos especificando o
posición y de cada ladrillo nesa liña particular.
Tamén podería mover este para o segundo loop, pero entón nós seriamos só
facer o cálculo, unha e outra novo cando non precisa.
>> Así, a posición y do ladrillo vai á marxe, a cal é de hash
definido enriba e só se refire ao espazo entre a parte superior da tarxeta e
o inicio de todos os ladrillos.
E nós estamos indo a engadir ao que a liña que estamos en tempos a altura dun
ladrillo individual, máis a diferenza é dicir, entre cada ladrillo.
Polo tanto, este é tamén un proxecto vertical intervalo entre cada ladrillo.
Así que nos dá a coordenada y do ladrillo.
>> Entón, aquí imos calcular a coordenada x do ladrillo.
Agora, temos lagoa dividido por 2 xa que, Teña en conta que antes, eu dixen que o
lado esquerdo da placa, imos deixar un pouco de espazo.
Así lagoa dividida por 2 é que o espazo.
E entón nós estamos engadindo a iso a columna que estamos en tempos máis ancho
lagoa, onde o ancho é a cantidade de espazo que un único ladrillo retoma e
entón lagoa é o espazo entre cada ladrillo.
Así que calcula a coordenada x do ladrillo.
>> Agora só necesitamos instanciar a ladrillo dado que x e y de coordenadas
usar ancho que calculamos para cada altura de ladrillos, e romper o que é
botar definido enriba.
Nós axustar a cor do ladrillo.
Teña en conta que estamos a usar a nosa matriz de cores e estamos pasando na liña que foron
en cores Nume mod que vai facer nos participa en torno de volta ao vermello
ten máis liñas do que as cores.
Finalmente, imos cubrir o ladrillo color e engadir lo á ventá.
>> E é iso.
Entón, iso é para todos os nosos métodos de arranque.
Agora, necesitamos mirar que, mentres loop que tivo a cubrir
Entón aquí vemos que este é o noso tempo loop que continuará ata que
xogo rematou, o que quere medios corremos para fóra da vida ou
corremos para fóra de ladrillos.
>> Entón o primeiro que temos é unha espera para Preme.
Así, o xogo nos espera para realmente click antes de que o balón comeza a moverse.
E entón nós imos para diminuír a vida.
Entón, se tivemos tres vidas, agora estamos ata dúas vidas, estamos usando a nosa
terceira vida.
Estamos indo para o centro do balón.
Entón, agora, iso non é realmente vai axudar nós na primeira vida que xogamos
sempre que o balón xa vai foron centradas dende cando
instanciado el.
Pero vemos cando acabar perdendo o vida e loop de volta ao redor, entón estamos
Vai querer recentrar o balón de a parte inferior da tarxeta de volta para
o centro.
>> Entón, agora aquí é que xerar x a velocidade da bóla.
E, segundo a especificación, estamos usando d rand 48 para xerar un número aleatorio
para especificar a velocidade.
Estamos engadindo un para que, xa que só quere a velocidade durante o período dun
de dous en vez de cero a un.
Por último, estamos usando d rand 48 de novo en Para determinar se a esfera
vai mover á esquerda ou o dereito de comezar.
>> Rand Entón d 48 retorna un número aleatorio entre cero e un, e así por pedir
se iso é menos de 0,5, temos unha 50 50 posibilidade de cambiar a velocidade de
o balón sendo negativo.
Finalmente, estableza a velocidade vertical o balón a ser só unha constante.
Nós escoller tres.
E agora temos outro loop.
>> Polo tanto, este lazo interno é continuará.
Teña en conta aquí, mentres ladrillos é maior que cero -
por iso, se ficarmos sen ladrillos, temos gañou o partido e podemos
romper con ese ciclo -
e todos Obter y balón a menos de altura menos dúas veces o raio.
Entón, o que este está recoñecendo é o balón pasa a ir alén do remo, en
caso en que perdeu a vida.
>> Mirando para dentro deste loop for, temos a verificación de un evento de rato.
E así, se hai un evento de rato, que significa que queremos comprobar a
ver se o rato foi trasladado, e se o rato movida, queremos ter a
pa manter-se co rato.
Entón, para facelo, calcúlase a nova posición da raqueta, o que está pasando
para incorporarse a posición do rato - que agarra a posición usando o
evento que foron pasados ​​-
e logo, imos restar ancho pa dividido por 2, para que o
estadías de remo centradas no rato en vez de na parte esquerda da pa
permanecer centrado.
>> Entón, agora nós tamén queremos estar seguro de que nós non vaia para o lado esquerdo ou dereito
lado do taboleiro.
E por iso aquí estamos só comprobando se o pa estaría fóra á esquerda da
a bordo, se ater só ao lado esquerdo.
E aquí estamos comprobando se o remo sería para o lado dereito da
bordo, só poñelas ao lado dereito.
E, finalmente, nós realmente definir a localización da pa.
>> Agora, se non houbese un movemento de rato, isto significa que nós imos
quere mover o balón.
E así xa temos o x e velocidade y da bóla
e así nós movelo.
Pero agora queremos detectar algunhas cousas.
Entón, aquí estamos detectando se bater ou o lado esquerdo ou dereito do
consello, queremos que o balón a ir.
E así, nese caso, definimos x velocidade ax velocidade negativo.
>> Se o balón bater na parte superior da placa, entón nós tamén queremos o balón quicar.
Pero agora queremos cambiar a velocidade y.
Lembra que non temos unha condición para o balón bater no fondo da
consello sempre que xa foi capturado aquí neste loop while.
>> Por último, queremos detectar algún colisións onde se hit bola
ou o remo ou o ladrillo, queremos facer algunhas cousas de casos especiais.
Así, se hai unha colisión, na que obxectos de caso non será nulo, entón,
se o obxecto chegou a remo, teriamos só quero devolver o balón.
E aquí, tamén, imos establecer a localización de o balón para un pouco por enriba do remo.
Teña en conta que estamos tomando a posición x o balón e só reutilizando iso.
Pero aquí estamos empezando a posición y da pa e mover o balón
enriba do remo.
>> Este é un caso especial, de xeito que o balón non bate o remo e entón,
antes de que sexa capaz de moverse para fóra da pa, outro ciclo xira en torno e
el pensa que aínda está no panel e así a velocidade y comeza o xogo de volta a
negativa e, a continuación, o balón só tipo de varas saltando sobre o remo.
Entón, se nós non bater a raqueta, entón nós tamén queremos comprobar
se bater o ladrillo.
E por iso esta é a forma na que podemos comprobar a ver se se loita un ladrillo.
>> Necesitamos comprobar iso, porque podemos realmente bater a etiqueta e nós
Non quero eliminar a etiqueta.
Entón, se se loita un ladrillo, podemos eliminar a ladrillo pola fiestra, decremento
nosa conta dos ladrillos, incrementar a nosa número de puntos, e agora necesitamos
actualizar o marcador que é o mesmo que vimos antes, cando vimos
panel de arranque.
Pero agora estamos só actualizar o panel desde que cambiei o
número de puntos.
E debe agora amosar que se loita máis unha pausa.
>> E, finalmente, se se loita un ladrillo tamén queremos ir.
Entón, finalmente, facemos unha pausa só para que o balón non está movendo super rápido e nós
realmente pode acadar-lo coa nosa pa.
E iso é moi bonito iso.
Entón, agora nós faría loop de volta ao principio ese loop while e continúe ata
ou perdemos unha vida ou corremos para fóra de ladrillos.
>> Qué acontece se perder a vida?
Entón imos saír desta mentres loop, e imos ver o lazo fará a copia de seguridade
para o inicio do ciclo, mentres exterior.
Neste caso, nós imos realizar esta configuración de novo.
E esta configurado terá connosco esperar por un clic, diminuír o noso número
de vidas, recentrar o balón, recalcular unha velocidade x e y, e
logo retomar o xogo.
>> E así, que continuará ata ladrillos acaba sendo menor que
ou igual a cero -
no caso de que gañou o xogo que -
ou a vida é inferior a cero, no que caso perdemos o partido.
Así, unha vez que é o caso, nós saír dese loop while, e chegamos aquí
onde nós imos esperar por prema antes de saír do xogo para que o
xogo non só inmediatamente pechar sobre nós.
E, finalmente, imos pechar a fiestra e é iso.
O meu nome é Rob, e esta foi Breakout.