¡Bienvenido al tutorial final de nuestra serie de juegos Brick Breaker! En este tutorial, manejaremos la lógica de las colisiones restantes, comprobaremos los estados de ganancia y pérdida, los niveles de cambio y más.
Asegúrate de leer parte 1 y parte 2 de esta serie para entender completamente el código presentado en este tutorial..
Cuando la pelota colisiona con un ladrillo, usaremos la misma técnica aplicada a la paleta para determinar el lado que seguirá la pelota:
función removeBrick (e): verifique en qué lado del ladrillo golpea la bola, izquierda, derecha si (e.other.name == 'brick' y (ball.x + ball.width * 0.5) < (e.other.x + e.other.width * 0.5)) then xSpeed = -5 elseif(e.other.name == 'brick' and (ball.x + ball.width * 0.5) >= (e.other.x + e.other.width * 0.5)) luego xSpeed = 5 end end
Cuando se golpea un ladrillo, usamos el otro parámetro del colisión evento para averiguar exactamente qué ladrillo fue golpeado, y luego eliminarlo del escenario y del grupo de ladrillos:
-- Bounce, Remove if (e.other.name == 'brick') luego ySpeed = ySpeed * -1 e.other: removeSelf () e.other = nil bricks.numChildren = bricks.numChildren - 1
Cada golpe de ladrillo agregará 100 puntos a la puntuación. La puntuación se tomará de la constante de puntuación y se agregará a la puntuación actual como texto.
puntuación = puntuación + 1
scoreNum.text = score * SCORE_CONST
scoreNum: setReferencePoint (display.CenterLeftReferencePoint)
scoreNum.x = 54
fin
Este código verifica si quedan más ladrillos en el escenario y muestra un mensaje "usted ganó" si no:
if (bricks.numChildren < 0) then alert(' You Win!', ' Next Level ?') gameEvent = 'win' end end
La velocidad de la pelota está determinada por la xSpeed y ySpeed variables Cuando el actualizar se ejecuta la función, la bola comienza a moverse usando estos valores para colocarlos en cada cuadro.
Actualización de la función (e) - Movimiento de la bola ball.x = ball.x + xSpeed ball.y = ball.y + ySpeed
Este código verifica las colisiones en la pared con la pelota y responde enviando la pelota en la dirección opuesta cuando sea necesario:
si (bola.x < 0) then ball.x = ball.x + 3 xSpeed = -xSpeed end--Left if((ball.x + ball.width) > display.contentWidth) luego ball.x = ball.x - 3 xSpeed = -xSpeed end - Derecha si (ball.y < 0) then ySpeed = -ySpeed end--Up
Una sentencia if se usa para verificar si la paleta pierde la pelota. Si es verdadero, se muestra una alerta preguntando al usuario si desea volver a intentarlo.
if (ball.y + ball.height> paddle.y + paddle.height) entonces alerta ('¿Perdiste', 'Jugar de nuevo?') gameEvent = 'pierde' final - abajo / pierde
La pantalla de alerta muestra la información del jugador sobre el estado del juego. Se muestra cuando se alcanza un evento de ganar / perder.
Se utilizan dos parámetros en esta función:
función alert (t, m) gameListeners ('remove') alertBg = display.newImage ('alertBg.png') box = display.newImage ('alertBox.png', 90, 202) transition.from (box, time = 300, xScale = 0.5, yScale = 0.5, transition = easing.outExpo) titleTF = display.newText (t, 0, 0, 'akashi', 19) titleTF: setTextColor (254,203,50) titleTF: setReferencePoint (display.CenterReferencePoint ) titleTF.x = display.contentCenterX titleTF.y = display.contentCenterY - 15 msgTF = display.newText (m, 0, 0, 'akashi', 12) msgTF: setTextColor (254,203,50) msgTF: setReferencePoint (display.CenterReference) ) msgTF.x = display.contentCenterX msgTF.y = display.contentCenterY + 15 cuadro: addEventListener ('tap', reiniciar) alertScreen = display.newGroup () alertScreen: insert (alertBg) alertScreen: insert (box) alertScreen: insert (alert) titleTF) alertScreen: insert (msgTF) end
La siguiente función verifica el estado del juego (ganar, perder, finalizar) y realiza la acción correspondiente:
función reinicio (e) si (gameEvent == 'win' y table.maxn (niveles)> currentLevel) luego currentLevel = currentLevel + 1 changeLevel (niveles [currentLevel]) - siguiente nivel levelNum.text = tostring (currentLevel) elseif ( gameEvent == 'win' y table.maxn (niveles) <= currentLevel) then box:removeEventListener('tap', restart) alertScreen:removeSelf() alertScreen = nil alert(' Game Over', ' Congratulations!') gameEvent = 'finished' elseif(gameEvent == 'lose') then changeLevel(levels[currentLevel])--same level elseif(gameEvent == 'finished') then addMenuScreen() transition.from(menuScreen, time = 300, y = -menuScreen.height, transition = easing.outExpo) box:removeEventListener('tap', restart) alertScreen:removeSelf() alertScreen = nil currentLevel = scoreText:removeSelf() scoreText = nil scoreNum:removeSelf() scoreNum = nil levelText:removeSelf() levelText = nil levelNum:removeSelf() levelNum = nil ball:removeSelf() ball = nil paddle:removeSelf() paddle = nil score = 0 end end
Esta función cambia las actualizaciones del nivel cuando es necesario:
function changeLevel (level) - Borrar ladrillos de nivel ladrillos: removeSelf () bricks.numChildren = 0 bricks = display.newGroup () - Eliminar el cuadro de alerta: removeEventListener ('toque', reiniciar) alertScreen: removeSelf () alertScreen = nil - - Restablecer la posición de la bola y la paleta ball.x = (display.contentWidth * 0.5) - (ball.width * 0.5) ball.y = (paddle.y - paddle.height) - (ball.height * 0.5) -2 paddle. x = display.contentWidth * 0.5 - Redraw Bricks buildLevel (level) - Fondo de inicio: addEventListener ('tap', startGame) final
Para comenzar el juego inicialmente, el Principal La función necesita ser llamada. Con el código anterior en su lugar, lo haremos aquí:
Principal()
El archivo Default.png es una imagen que se mostrará justo al iniciar la aplicación, mientras que iOS carga los datos básicos para mostrar la pantalla principal. Agregue esta imagen a su carpeta de origen del proyecto, se agregará automáticamente por el complemento de Corona.
Usando los gráficos que creó antes, ahora puede crear un ícono agradable y atractivo. El tamaño del icono para el icono del iPhone sin retina es de 57x57px, pero la versión de la retina es de 114x114px y la tienda de iTunes requiere una versión de 512x512px. Sugiero crear primero la versión 512x512 y luego reducir la escala para los otros tamaños..
No es necesario que tenga las esquinas redondeadas o el brillo transparente, iTunes y el iPhone lo harán por usted..
Es hora de hacer la prueba final. Abra el simulador de Corona, busque la carpeta de su proyecto y luego haga clic en Abrir. Si todo funciona como se espera, estás listo para el paso final!
En el simulador de corona ir a Archivo> Construir y seleccione su dispositivo de destino. Rellene los datos requeridos y haga clic construir. Espere unos segundos y su aplicación estará lista para la prueba del dispositivo y / o el envío para su distribución!
El resultado final es un juego personalizable y entretenido. Intenta agregar tus propios gráficos y niveles personalizados para condimentar las cosas!
Espero que les haya gustado esta serie de tutoriales y les resulte útil. Gracias por leer!