>> ROB BOWDEN: Hi.
Soy Rob.
Se pregunta cómo implementar este juego?
Bueno, vamos a romper a cabo la solución personal.
>> Por lo tanto, primero vamos a bajar a la init funciones que le dije que se
aplicar primero.
El primero que vamos a echar un vistazo por lo que es paddle init.
Muy bien, así que recuerde que queremos que el remar estar centrado exactamente en
el eje x.
Así que tenemos que averiguar donde que debe ir.
>> Teniendo en cuenta el ancho de la tabla - que También se hash de la parte superior se define arriba -
tenemos que restar el ancho de paleta y dividir por 2, por lo que el
centro de la pala se encuentra en el centro del tablero.
Recuerde que la coordenada x se refiere a la esquina superior izquierda de la paleta,
por lo que este es exactamente donde queremos que sea.
La coordenada y no importa tanto porque podemos colocar
donde queramos.
Así que crear instancias de la paleta, establecemos el color negro, nos pusimos a llenar en True
así que es un lleno en el rectángulo, y a continuación, agregarlo a la ventana y regreso
la paleta.
Y eso es todo para inicializar la paleta.
>> Va a ser similar por marcador de inicio.
Así que vamos a inicializar la etiqueta, vamos a establecer el color a
gris claro - ahora puede recoger lo que desear - que vamos a establecer la fuente de
sans serif 48 -
También podría elegir lo que quieras -
lo añadiremos a la ventana.
Ahora bien, esto Enviar al fondo no es realmente necesaria, es sólo en caso de que algo
cosa pasa a superponerse a la etiqueta.
Entonces cuando usamos Detectar colisión, Detección de Colisión detectará la otra
cosa antes de que detecta la etiqueta.
Pero eso realmente no debería afectar nosotros en este programa.
>> Por último, tenemos este marcador actualización función que escribimos.
Así que vamos a echar un vistazo a eso.
Ahora, aquí vemos algo que es casi idéntico a lo
vimos en el label.c.
Así que tenemos una etiqueta -
un búfer de caracteres de 12 caracteres, que es justo lo suficiente para manejar cualquier
número entero, positivo o negativo.
Luego usamos sprintf para copiar el puntos en ese búfer.
Así que s esta contiene una cadena que representa el número de puntos.
>> Por último, hemos creado la etiqueta a esa cadena.
Y entonces tenemos que centrar la etiqueta en caso de que hemos pasado de nueve a 10
puntos y hemos cambiado él.
Así se calcula el x y coordenadas de la etiqueta que se
conseguir la anchura y la altura de la ventana.
Aunque, también podríamos simplemente utilizar el constantes de anchura y altura de hash
definido arriba.
También recibimos la anchura y la altura de la etiqueta y se dividen
que por 2 a centro.
Y entonces usamos Establecer ubicación para realmente lo puso en ese lugar.
Así que eso es todo por marcador init.
>> Aceptar.
Esfera Entonces init va a ser muy similar a init remos.
Vemos aquí que estamos usando newgoval con el fin de crear una instancia de un nuevo balón.
Y aquí estamos utilizando 2 veces el radio que la anchura de la pelota, y 2
veces el radio como la altura de la pelota.
Ahora, también para newgoval, la x, y coordenada y que pasamos en que ocurre
para referirse a la parte superior izquierda de la pelota, que es en realidad
fuera de la propia pelota.
Así que con el fin de conseguir la bola exactamente centrada en la junta, tenemos que pasar
ancho dividido por 2 para el centro, y luego restar el área para empujar
el centro real de la pelota en el centro del tablero.
Y lo hacemos exactamente lo mismo para el eje y, excepto por el uso
altura lugar de la anchura.
>> Así que coloca el balón en el centro.
Y esto crea una instancia de la pelota, ajuste el color a negro, rellene el balón,
y por último añadir a la ventana y lo devuelve.
Y eso es todo para inicializar la pelota.
>> Así que ahora vamos a echar un vistazo a init ladrillos, que es un poco más
complicado, pero es bastante similar al paddle init.
Ahora, primero tenemos que averiguar la anchura de cada ladrillo.
Recuerde que tenemos una constante llamada llamadas que especifica el
número de columnas de ladrillos que tenemos.
Por lo tanto, vamos a determinar el ancho de un solo ladrillo tomando el ancho
de todo el tablero, restando el tamaño de nuestra brecha -
que se define picadillo encima de la tapa y se refiere para el número de píxeles que
debe estar entre cada ladrillo -
y así vamos a tener un total de tiempos brecha llamadas píxeles en blanco en un
una sola fila.
Y eso también se referirá a algunos en blanco píxeles a la izquierda y derecha de la
columna y ladrillo columna derecha izquierda.
>> Así restar los píxeles en blanco nos deja con un número de píxeles que
ladrillos están utilizando realmente.
Y luego nos dividimos por llamadas a conseguir el número de píxeles por ladrillo.
Así que aquí definimos una matriz que sólo especifica los colores que queremos para cada
fila de ladrillos.
Si tuviéramos más filas de ladrillos que colores que hemos especificado, ya veremos
que sólo tendremos que bucle alrededor y utilizar el rojo de nuevo, y luego naranja y
amarillo y así sucesivamente.
>> Así que, como los consejos de especificaciones p-set, somos ir al bucle sobre todas las filas y
columnas de los ladrillos.
Pero antes de bucle que sobre las columnas, nos Vemos aquí que estamos especificando la
y la posición de cada ladrillo en esa fila en particular.
También podríamos mover esto en el segundo para el lazo, pero entonces acabábamos de estar
haciendo el cálculo una y otra de nuevo cuando no es necesario.
>> Así que la posición y del ladrillo va ser margen, que es Hash
definido por la parte superior y sólo se refiere a la el espacio entre la parte superior de la tabla y
el inicio de todos los ladrillos.
Y vamos a añadir a que la fila que estamos en tiempos de la altura de un
ladrillo individuo más la brecha es decir, entre cada ladrillo.
Así que esto es también una línea vertical brecha entre cada ladrillo.
Así que eso nos da la coordenada del ladrillo.
>> Así que aquí vamos a calcular la coordenada x del ladrillo.
Ahora, tenemos hueco dividido por 2, ya que, recordar antes, me dijo que en el
lado izquierdo de la placa, vamos para dejar un poco de espacio.
Así brecha dividido por 2 es que el espacio.
Y luego vamos a añadir a que la columna que estamos en tiempos más ancho
brecha, donde el ancho es la cantidad de espacio que un solo ladrillo ocupa y
entonces brecha es el espacio entre cada ladrillo.
Así que calcula la coordenada x del ladrillo.
>> Ahora sólo tenemos que crear una instancia del ladrillo dado que X e Y de la coordenada
utilizando el ancho que se calculó para cada que la altura de ladrillo y descanso es
hash de la parte superior se define arriba.
Fijamos el color del ladrillo.
Nótese que estamos usando nuestra gama de colores y estamos pasando en la fila que eran
en colores num mod que va a hacer nos envolvemos vuelta a rojo si
tener más filas que colores.
Por último, vamos a llenar en el ladrillo colorear y agregarlo a la ventana.
>> Y eso es todo.
Por lo tanto, eso es todo por todo nuestro métodos de inicialización.
Ahora tenemos que mirar en que, si bien bucle que había que llenar pulg
Así que aquí vemos que este es nuestro tiempo bucle que se va a continuar hasta
juego ha terminado, que ya sea de forma nos quedamos sin vida o
nos quedamos sin ladrillos.
>> Así que lo primero que tenemos una espera de Click.
Así que el juego nos espera para realmente haga clic antes que la pelota comienza a moverse.
Y luego nos vamos para disminuir vidas.
Así que si hemos tenido tres vidas, ahora estamos a dos vidas, estamos usando nuestra
tercera vida.
Nos vamos a centrar la pelota.
Así que ahora, esto no es realmente va a ayudar a nosotros en la primera vida que jugamos
ya que la pelota ya va a se han centrado desde el momento en que
instanciarlo.
Pero vemos cuando nos terminamos perdiendo la la vida y el lazo de nuevo alrededor, entonces estamos
va a querer volver a centrar el balón la parte inferior de la placa posterior de
el centro.
>> Así pues, ahora aquí tenemos que generar la velocidad x del balón.
Y, de acuerdo con la especificación, usamos d rand 48 para generar un número aleatorio
para especificar la velocidad.
Estamos sumando uno al que ya que sólo desea que la velocidad en el rango de uno
a dos en lugar de cero a uno.
Por último, estamos usando d rand 48 de nuevo en Para determinar si la pelota
se va a mover hacia la izquierda o el derecho a empezar.
>> Así d rand 48 devuelve un número aleatorio entre cero y uno, y así preguntando
si es menor de 0,5, tenemos un 50 50 oportunidad de cambiar la velocidad de
la pelota sea negativo.
Por último, hemos creado la velocidad vertical del la pelota para sólo ser una constante.
Elegimos tres.
Y ahora tenemos otro bucle.
>> Así que este bucle interior es va a continuar.
Nótese aquí, mientras que los ladrillos es mayor que cero -
por lo que si nos quedamos sin ladrillos, hemos ganó el juego y lo que podamos
salir de este bucle -
y todos obtenemos y Bola menos de altura menos 2 veces el radio.
Entonces, ¿qué es esto es reconocer si el bola pasa a ir más allá de la paleta, en
cuyo caso se ha perdido una vida.
>> Mirando dentro de este bucle tenemos la comprobación de un evento de ratón.
Y así, si hay un evento de ratón, que significa que queremos comprobar para
ver si el ratón se mueve, y si el ratón se movía, queremos tener la
paddle mantenerse al día con el ratón.
Así que, para hacer eso, se calcula el nuevo posición de la pala, que se va
para captar la posición del ratón - que agarra la posición utilizando el
caso de que nos pasaron -
y luego vamos a restar Ancho de paddle divide por 2, por lo que el
estancias de pádel se centraron en el ratón en lugar de la parte izquierda de la paleta
permanecer centrado.
>> Así que ahora también queremos estar seguros de que no van sobre la parte izquierda o derecha
lado del tablero.
Así que aquí sólo estamos comprobando si el paleta sería hacia el lado izquierdo de
la junta directiva, sólo se adhieren que hacia el lado izquierdo.
Y aquí estamos comprobando si la pala sería sobre el lado derecho de la
bordo, sólo pegarlo en el lado derecho.
Y, por último, que en realidad establecemos la ubicación de la paleta.
>> Ahora bien, si no había un movimiento del ratón, eso significa que vamos a
desee mover el balón.
Y así ya tenemos la x e y velocidad de la pelota
y así lo movemos.
Pero ahora queremos detectar un par de cosas.
Así que aquí estamos detectando si golpeamos, ya sea el lado izquierdo o derecho de la
tablero, queremos que la pelota rebote.
Y así, en ese caso, establecemos x velocidad a la velocidad x negativo.
>> Si la pelota pegó en la parte superior del tablero, a continuación, también queremos que el rebote de la pelota.
Pero ahora queremos cambiar la velocidad y.
Note que no tenemos una condición para la bola que golpea la parte inferior de la
junta desde que ya fue capturado aquí en este bucle while.
>> Por último, queremos detectar algunos colisiones en la que si el golpe la bola
ya sea la pala o el ladrillo, queremos para hacer algunas cosas especiales de valoración.
Así que si hubo una colisión, en la que oponga a ello no será nulo, a continuación,
si el objeto golpeó la pala, lo haríamos sólo quiero hacer rebotar la pelota.
Y aquí, también, nos propusimos la ubicación de la pelota justo por encima de la paleta.
Nótese que estamos tomando la posición x la pelota y sólo la reutilización de eso.
Pero aquí estamos recibiendo la posición y de la paleta y mover el balón
por encima de la paleta.
>> Este es un caso especial para que la pelota no golpea la pala y luego,
antes de que sea capaz de moverse fuera de la paleta, otro bucle da vueltas y
que piensa que todavía está en el panel y por lo que la velocidad y se vuelve a establecer en
negativa y luego la pelota sólo un poco de palos rebotando en la paleta.
Por lo tanto, si no nos golpeamos la pala, entonces nosotros también queremos comprobar
si golpeamos el ladrillo.
Y así es como podemos comprobar para ver si llegamos a un ladrillo.
>> Tenemos que comprobar esto porque puede realmente han afectado la etiqueta y nos
no quiero quitar la etiqueta.
Así que si golpeamos un ladrillo, podemos eliminar esa ladrillo por la ventana, decremento
nuestro conteo de los ladrillos, incrementar nuestra número de puntos, y ahora tenemos que
actualizar la tabla de indicadores que es exactamente el mismo que vimos antes cuando vimos
marcador init.
Pero ahora sólo estamos actualizando la marcador, ya que hemos cambiado la
número de puntos.
Y ahora debe mostrar que llegamos a una más descanso.
>> Y finalmente, si llegamos a un ladrillo también queremos rebotar.
Así que, finalmente, nos detenemos sólo para que la bola no se mueve muy rápido y nos
en realidad puede golpear con nuestra paleta.
Y eso es prácticamente todo.
Así que ahora lo haríamos bucle de nuevo a la parte superior de este bucle while y continuar hasta
ya sea que perdamos una vida o nos quedamos sin ladrillos.
>> ¿Qué pasa si perdemos una vida?
Entonces vamos a salir de esto mientras lazo, y veremos bucle respaldará
a la parte superior del bucle while exterior.
En este caso, vamos a Ejecute este configurado de nuevo.
Y esta configuración va a tener a esperar por cada clic, disminuirá nuestro número
de vidas, centrar el balón, recalcular una velocidad de X e Y, y
a continuación, reanudar el juego.
>> Y es así, que continuará hasta que ladrillos termina siendo menos de
o igual a cero -
en cuyo caso, ganamos el partido -
o vidas es menor que cero, en la que caso se ha perdido el juego.
Así, una vez que ese es el caso, rompemos de ese bucle while, y llegamos a aquí
donde vamos a esperar a que haga clic antes de salir del juego para que el
juego no hace precisamente inmediatamente cerrar en nosotros.
Y finalmente vamos a cerrar la ventana y ya está.
Mi nombre es Rob, y esto fue Breakout.