¡Bienvenido al tutorial final de nuestra serie de juegos de Frenzic! En este tutorial, manejaremos la lógica de los bloques y los pasos para crear la aplicación final.
Por favor, asegúrese de comprobar parte 1 y parte 2 De la serie para entender completamente este tutorial..
Esta función se ejecuta cuando el jugador toca cualquiera de los cuadrados del contenedor. Básicamente comprueba si la posición correcta está disponible para colocar el cuadrado y la coloca si es verdadera. La función en el siguiente paso se llama cuando se coloca el bloque.
función placeBlock: toque (e) eventTarget = e.target - Verifique si la posición está disponible posición local = currentXPosition, currentYPosition if (posición [1] == 5 y posición [2] == 5 y eventTarget.a == false) luego bloquea [#blocks] .x = eventTarget.x + position [1] blocks [#blocks] .y = eventTarget.y + position [2] eventTarget.a = true blockPlaced () elseif (position [1] = = 35 y posición [2] == 5 y eventTarget.b == falso) luego bloquea [#blocks] .x = eventTarget.x + position [1] bloquea [#blocks] .y = eventTarget.y + position [2 ] eventTarget.b = true blockPlaced () elseif (position [1] == 5 y position [2] == 35 y eventTarget.c == false) luego bloquea [#blocks] .x = eventTarget.x + position [1 ] bloquea [#bloques] .y = eventTarget.y + posición [2] eventTarget.c = true blockPlaced () elseif (posición [1] == 35 y posición [2] == 35 y eventTarget.d == falso) luego bloquea [#blocks] .x = eventTarget.x + posición [1] bloquea [#blocks] .y = eventTarget.y + posición [2] eventTarget.d = true blockPlaced () end end
Cuando el bloque se coloca en el contenedor, agregamos el bloque a la matriz que mantiene el registro de los bloques almacenados en ese contenedor. Esto nos ayudará a determinar cuándo está lleno el contenedor. También reproducimos un sonido y aumentamos la puntuación en uno cada vez que se coloca un bloque..
function blockPlaced () - Empuja el bloque a la matriz de bloques de contenedores si (eventTarget.name == 'up') luego table.insert (up.blocksGFX, blocks [#blocks]) up.blocks = up.blocks + 1 elseif (eventTarget) .name == 'right') luego table.insert (right.blocksGFX, blocks [#blocks]) right.blocks = right.blocks + 1 elseif (eventTarget.name == 'down') luego table.insert (down. blocksGFX, blocks [#blocks]) down.blocks = down.blocks + 1 elseif (eventTarget.name == 'left') luego table.insert (left.blocksGFX, blocks [#blocks]) left.blocks = left.blocks + 1 final - Puntuación = puntuación + 1 - Sonido media.playEventSound ('bell.caf')
El siguiente código verifica si el contenedor fue llenado por un solo bloque de color usando la matriz de contenedores. Incrementa la puntuación en 150 y reproduce el sonido correspondiente. Una función para eliminar los bloques se llama: la crearemos en los siguientes pasos.
if (up.blocks == 4) entonces if (up.blocksGFX [1] .name == up.blocksGFX [2] .name y up.blocksGFX [2] .name == up.blocksGFX [3] .name y up.blocksGFX [3] .name == up.blocksGFX [4] .name) luego score = puntuación + 150 completo () end elseif (right.blocks == 4) entonces if (right.blocksGFX [1] .name = = right.blocksGFX [2] .name and right.blocksGFX [2] .name == right.blocksGFX [3] .name and right.blocksGFX [3] .name == right.blocksGFX [4] .name) luego puntúa = puntuación + 150 completa () final elseif (down.blocks == 4) entonces if (down.blocksGFX [1] .name == down.blocksGFX [2] .name y down.blocksGFX [2] .name == down .blocksGFX [3] .name y down.blocksGFX [3] .name == down.blocksGFX [4] .name) luego score = score + 150 complete () end elseif (left.blocks == 4) then if (left .blocksGFX [1] .name == left.blocksGFX [2] .name and left.blocksGFX [2] .name == left.blocksGFX [3] .name and left.blocksGFX [3] .name == left.blocksGFX [4] .nombre) luego puntuación = puntuación + 150 completo () final fin
Este código se ejecuta cuando el contenedor está lleno, pero los bloques en el interior no son del mismo color.
if (up.blocks == 4 or right.blocks == 4 or down.blocks == 4 o left.blocks == 4) entonces puntuación = puntuación + 50 completa () final
Después de limpiar los contenedores completos, la puntuación se establece en el campo de texto en la etapa, el temporizador se restablece y se llama a otro bloque..
scoreTF.text = score timer.cancel (timerSource) timerSource = nil timerSource = timer.performWithDelay (3000, timesUp, 0) newBlock (false) end
Esta función limpia los bloques en los contenedores y restablece las variables correctas para preparar el contenedor para nuevos bloques.
function complete () media.playEventSound ('bell4.caf') removeBlocks () eventTarget.a = false eventTarget.b = false eventTarget.c = false eventTarget.d = false final función removeBlocks () if (eventTarget.name == ' arriba ') luego para i = 1, 4 do display.remove (up.blocksGFX [i]) up.blocksGFX [i] = nil end up.blocks = 0 elseif (eventTarget.name ==' right ') luego para i = 1, 4 do display.remove (right.blocksGFX [i]) right.blocksGFX [i] = nil end right.blocks = 0 elseif (eventTarget.name == 'down') luego para i = 1, 4 se muestran .remove (down.blocksGFX [i]) down.blocksGFX [i] = nil end down.blocks = 0 elseif (eventTarget.name == 'left') luego para i = 1, 4 do display.remove (left.blocksGFX [i]) left.blocksGFX [i] = nil end left.blocks = 0 end end
La función de alerta se ejecuta cuando el jugador está fuera de vida, muestra la puntuación final alcanzada y agrega un oyente para volver a la pantalla de título.
function alert () timer.cancel (timerSource) timerSource = nil native.showAlert ('Game Over', 'Your Score:'? score, 'OK', alertHandler) fin de la función alertHandler (e) if (e.action = = 'haga clic') entonces si (e.index == 1) entonces reinicie () final fin final final
La siguiente función volverá a cargar el juego y volverá a la Vista del título.
función restart (e) display.remove (gameView) Main () end
Para comenzar el juego inicialmente,PrincipalSe necesita llamar a la función. 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 512? 512 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 la jaArchivo> Construiry 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!
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!