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.