Crear un juego de Bubble Popping - Agregar interacción

Esta es la segunda entrega de nuestro tutorial del juego Corona SDK Bubble Popping. En el tutorial de hoy, agregaremos a nuestra interfaz codificando la interacción del juego. Sigue leyendo!


También disponible en esta serie:

  1. Crear un juego Bubble Popping - Creación de interfaz
  2. Crear un juego de Bubble Popping - Agregar interacción

Donde dejamos…

Asegúrese de revisar la parte 1 de la serie para comprender completamente y prepararse para este tutorial.


Paso 1: Iniciar los oyentes del botón

Esta función agrega los oyentes necesarios a la TitleView botones.

 function startButtonListeners (acción) if (acción == 'agregar') luego playBtn: addEventListener ('tap', showGameView) creditsBtn: addEventListener ('tap', showCredits) else playBtn: removeEventListener ('tap', showGameView) creditsBtn: removeEventListener 'tap', showCredits) end end end

Paso 2: Mostrar créditos

La pantalla de créditos se muestra cuando el usuario toca el botón Acerca de, un grifo El oyente se agrega a la vista de créditos para eliminarlo..

 función showCredits: toque (e) playBtn.isVisible = false creditsBtn.isVisible = false creditsView = display.newImage ('credits.png', 0, display.contentHeight) lastY = titleBg.y transition.to (titleBg, time = 300 , y = (display.contentHeight * 0.5) - (titleBg.height + 30)) transition.to (creditsView, time = 300, y = (display.contentHeight * 0.5) + 35, onComplete = function () creditsView: addEventListener ('tap', hideCredits) end) end

Paso 3: Ocultar Créditos

Cuando se toca la pantalla de créditos, se interpone fuera del escenario y se elimina.

 función hideCredits: toque (e) transition.to (creditsView, time = 300, y = display.contentHeight + 25, onComplete = function () creditsBtn.isVisible = true playBtn.isVisible = true creditsView: removeEventListener ('tap', hideCredits ) display.remove (creditsView) creditsView = nil end) transition.to (titleBg, time = 300, y = lastY); fin

Paso 4: Mostrar vista de juego

Cuando el comienzo se pulsa el botón, la vista de título se interpola y se elimina, revelando la vista del juego. Hay muchas partes involucradas en esta vista, así que las dividiremos en los siguientes pasos.

 función showGameView: toque (e) transition.to (titleView, time = 300, x = -titleView.height, onComplete = function () startButtonListeners ('rmv') display.remove (titleView) titleView = nil end)

Paso 5: Muros

A continuación añadimos las paredes al escenario. Se crean utilizando la API de dibujo..

 -- Paredes a la izquierda = display.newLine (0, 240, 0, 720) a la derecha = display.newLine (320, 240, 320, 720) top = display.newLine (160, 0, 480, 0) bottom = display.newLine (160) 480, 480, 480)

Paso 6: Burbujas

Esta parte crea cinco burbujas en la pantalla en una posición aleatoria..

 bubbles = display.newGroup () para i = 1, 5 do local rx = 21 + math.floor (math.random () * (display.contentWidth - 42)) ry local = 21 + math.floor (math.random ( ) * (display.contentHeight - 42)) local b = display.newImage ('bubble.png', rx, ry) b.name = 'bubble'

Paso 7: Física de la burbuja

Aquí añadimos la física a nuestra nueva burbuja..

 -- Bubble Physics physics.addBody (b, 'dynamic', radius = 21, bounce = 1) b: setLinearVelocity (100, 100) bubbles: insert (b) end

Paso 8: Física de la pared

Y hacer lo mismo con nuestros muros..

 -- Walls Physics physics.addBody (izquierda, 'estática') physics.addBody (derecha, 'estática') physics.addBody (arriba, 'estática') physics.addBody (abajo, 'estática')

Paso 9: Campos de texto

Ahora agregamos los campos de texto de nivel, burbujas y requeridos..

 -- Level TextField level = display.newImage ('level.png', 2, 0) levelN = display.newText ('1', 54, 5, native.systemFont, 15) levelN: setTextColor (255, 255, 255) - Popped TextField popped = display.newImage ('popped.png', 126, 0) poppedN = display.newText ('0', 187, 5, native.systemFont, 15) poppedN: setTextColor (255, 255, 255) - Campo de texto requerido requerido = display.newImage ('required.png', 231, 0) requiredN = display.newText ('4', 306, 5, native.systemFont, 15) requiredN: setTextColor (255, 255, 255) bullets = display.newGroup () end

Paso 10: Oyentes del juego

Esta función agrega los oyentes necesarios para iniciar la lógica del juego..

 function gameListeners (action) if (action == 'add') luego bg: addEventListener ('tap', createBullets) else bg: removeEventListener ('tap', createBullets) Runtime: removeEventListener ('enterFrame', update) end end

Paso 11: Crear balas

Este código se ejecuta cuando se toca el fondo.

Primero creamos los gráficos de bala..

 función createBullets (e) para i = 1, 4 do local bullet = display.newImage ('bullet.png', e.x, e.y)

Paso 12: Establecer dirección

Luego le damos una dirección ajustando la velocidad lineal.

 -- Establezca la dirección si (i == 1) entonces bullet.x = bullet.x - 8 physics.addBody (bullet, 'kinematic', radius = 7) bullet: setLinearVelocity (-150, 0) end --left if ( i == 2) entonces bullet.x = bullet.x + 8 physics.addBody (bullet, 'kinematic', radius = 7) bullet: setLinearVelocity (150, 0) end --right si (i == 3) entonces bullet.y = bullet.y - 8 physics.addBody (bullet, 'kinematic', radius = 7) bullet: setLinearVelocity (0, -150) final --up si (i == 4) luego bullet.y = bullet.y + 8 physics.addBody (bullet, 'kinematic', radius = 7) bullet: setLinearVelocity (0, 150) end - down bullet: addEventListener ('collision', onCollision) bullets: insert (bullet) bg: removeEventListener ('tap', createBullets) end Runtime: addEventListener ('enterFrame', actualización) end

Paso 13: Colisiones

Las colisiones son manejadas por la siguiente función. Se reproduce un sonido, la puntuación aumenta y elimina la burbuja de la pantalla..

 función onCollision (e) if (e.other.name == 'bubble') entonces audio.play (pop) display.remove (e.other) poppedN.text = tostring (tonumber (poppedN.text) + 1) end end end

Paso 14: Eliminar balas fuera del escenario

Este código eliminará cualquier bala que esté fuera de la vista..

 función de actualización (e): compruebe si hay viñetas fuera del escenario para i = 1, bullets.numChildren haga si (bullets [i] ~ = nil) entonces if (bullets [i] .x < 0 or bullets[i].x > 320 o balas [i] .y < 0 or bullets[i].y > 480) luego display.remove (bullets [i]) end end end end end

Paso 15: Nivel Completo

Aquí verificamos si las burbujas reventadas han alcanzado la cantidad requerida y llamamos a ganar alerta si es cierto.

 -- Verifique si se hicieron estallar las burbujas requeridas si (bullets.numChildren == 0 y tonumber (poppedN.text)> = tonumber (requiredN.text)) luego alert ('win') elseif (bullets.numChildren == 0 y tonumber (poppedN. texto) < tonumber(requiredN.text)) then alert('lose') end end

Paso 16: Alerta

La función de alerta muestra un mensaje según el tipo de alerta llamada (nivel completado o fallado).

 función alert (acción) gameListeners ('rmv') if (action == 'win') entonces alertView local = display.newImage ('won.png', 80, display.contentHeight * 0.5 - 41) transition.from (alertView, time = 300, y = -82, delay = 500) else local alertView = display.newImage ('lost.png', 80, display.contentHeight * 0.5 - 41) transition.from (alertView, time = 300, y = -82, retraso = 500) fin final

Paso 17: Llamar a la función principal

Para comenzar el juego, el Principal La función necesita ser llamada. Con el código anterior en su lugar, lo haremos aquí:

 Principal()

Paso 18: Cargando pantalla

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.


Paso 19: Icono

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..


Paso 20: Pruebas en simulador

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!


Paso 21: Construir

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!


Conclusión

Experimenta con el resultado final y trata de hacer tu versión personalizada del juego.!

Espero que les haya gustado esta serie de tutoriales y les resulte útil. Gracias por leer!