Crear un juego de pinball creación de interfaz

En esta serie de tutoriales de dos partes, aprenderás cómo crear un juego de Pinball. El objetivo del juego es golpear la bola usando las paletas para aumentar la puntuación. Sigue leyendo!


Paso 1: Descripción general de la aplicación

Usando gráficos prefabricados codificaremos un juego entretenido usando Lua y las API del SDK de Corona.

El jugador podrá golpear una pelota con los botones en el escenario. Puedes modificar los parámetros en el código para personalizar el juego..


Paso 2: Dispositivo objetivo

Lo primero que tenemos que hacer es seleccionar la plataforma en la que queremos ejecutar nuestra aplicación, de esa manera podremos elegir el tamaño para las imágenes que usamos.

La plataforma iOS tiene estas características:

  • iPad: 1024x768px, 132 ppi
  • iPhone / iPod Touch: 320x480px, 163 ppi
  • Iphone 4: 960x640px, 326 ppi

Debido a que Android es una plataforma abierta, hay muchos dispositivos y resoluciones diferentes. Algunas de las características de pantalla más comunes son:

  • Google Nexus One: 480x800px, 254 ppi
  • Motorola Droid X: 854x480px, 228 ppi
  • HTC Evo: 480x800px, 217 ppi

En este tutorial, nos centraremos en la plataforma iOS con el diseño gráfico, específicamente el desarrollo para la distribución a un iPhone / iPod touch, pero el código que se presenta aquí también debe aplicarse al desarrollo de Android con Corona SDK..


Paso 3: Interfaz

Se utilizará una interfaz sencilla y amigable, esto implica múltiples formas, botones, mapas de bits y más.

Los recursos gráficos de la interfaz necesarios para este tutorial se pueden encontrar en la descarga adjunta..


Paso 4: Exportar Gráficos

Dependiendo del dispositivo que haya seleccionado, es posible que deba exportar los gráficos en la ppi recomendada, puede hacerlo en su editor de imágenes favorito.

Usé el Ajustar el tamaño ... Funciona en la aplicación Preview en Mac OS X.

Recuerde dar a las imágenes un nombre descriptivo y guardarlas en la carpeta de su proyecto.


Paso 5: Sonido

Utilizaremos los efectos de sonido para mejorar la sensación del juego, puede encontrar los sonidos utilizados en este ejemplo en Soungle.com utilizando las palabras clave campana y zumbido.


Paso 6: Configuración de la aplicación

Se utilizará un archivo externo para hacer que la aplicación pase a pantalla completa en todos los dispositivos, el config.lua expediente. Este archivo muestra el tamaño de pantalla original y el método utilizado para escalar ese contenido en caso de que la aplicación se ejecute en una resolución de pantalla diferente.

 application = content = width = 320, height = 480, scale = "letterbox",

Paso 7: Main.lua

Vamos a escribir la aplicacion!

Abra su editor de Lua preferido (cualquier editor de texto funcionará, pero no tendrá resaltado de sintaxis) y prepárese para escribir su increíble aplicación. Recuerde guardar el archivo como main.lua en la carpeta de tu proyecto.


Paso 8: Estructura del código

Estructuraremos nuestro código como si fuera una clase. Si conoce ActionScript o Java, debería encontrar la estructura familiar.

 Clases necesarias. Variables y constantes. Funciones. Conductor. (Función principal). Métodos de clase (otras funciones).

Paso 9: Ocultar barra de estado

 display.setStatusBar (display.HiddenStatusBar)

Este código oculta la barra de estado. La barra de estado es la barra en la parte superior de la pantalla del dispositivo que muestra la hora, la señal y otros indicadores.


Paso 10: Importar Física

Usaremos la biblioteca de física para manejar las colisiones. Usa este código para importarlo:

 física local = requiere ('física') physics.start ()

Paso 11: Fondo del juego

Se utiliza un gráfico simple como fondo para la interfaz de la aplicación, la siguiente línea de código la almacena.

 -- Gráficos - [Fondo] local bg = display.newImage ('bg.png')

Paso 12: Vista del título

Esta es la Vista del título, será la primera pantalla interactiva que aparecerá en nuestro juego, estas variables almacenan sus componentes.

 -- [Vista de título] título localBg local playBtn créditos localesBtn título localVer

Paso 13: Vista de créditos

Esta vista mostrará los créditos y derechos de autor del juego, esta variable se utilizará para almacenarlo.

 -- [CreditsView] créditos localesView

Paso 14: Muros

Las paredes donde la pelota podrá rebotar..

Ya que usaremos la física para crear exactamente los mismos polígonos, dividiremos cada lado en cuatro partes. Las partes están marcadas con líneas rojas..

 -- [Muros] local l1 local l2 local l3 local l4 local r1 local r2 local r3 local r4

Paso 15: Bola

Este es el gráfico de la pelota, referenciado en la siguiente variable..

 -- Bola local

Paso 16: Hit Lines

Añadiremos algunos obstáculos en el juego, estos serán ellos..

 -- [Hit Lines] hitLine1 local hitLine2 local

Paso 17: golpear bolas

Estas bolas son el objetivo del pinball, golpearlas aumentará nuestra puntuación..

 -- [Hit Balls] local hitBall1 local hitBall2 local hitBall3

Paso 18: Paletas

Paleta izquierda y derecha. Solía ​​golpear la pelota

 -- [Paletas] pLeft local pRight local

Paso 19: Botones de control

Estos botones moverán las paletas haciendo rebotar la pelota..

 -- [Botones de la paleta] local lBtn local rBtn

Paso 20: Puntuación

Se agrega una variable de puntuación para mostrarla más tarde en la pantalla..

 -- Puntuación local

Paso 21: Sonidos

Las siguientes líneas almacenan una referencia para los archivos de sonido..

 local bell = audio.loadSound ('bell.caf') local buzz = audio.loadSound ('buzz.caf')

Paso 22: Variables

Esta es la variable que usaremos, lea los comentarios en el código para saber más sobre esto..

 -- Variables locales lastY - usadas para recordar el título de la posición bmp

Paso 23: Declarar funciones

Declara todas las funciones como local al principio.

 -- Funciones locales principales =  local startButtonListeners =  local showCredits =  local hideCredits =  local showGameView =  local gameListeners =  local movePaddle =  local onCollision =  local update = 

Paso 24: Constructor

A continuación, crearemos la función que inicializará toda la lógica del juego:

 Función principal () - código ... fin

Paso 25: Añadir vista de título

Ahora colocamos el TitleView en el escenario y llamamos a una función que agregará el grifo oyentes a los botones.

 función Main () titleBg = display.newImage ('title.png', display.contentCenterX - 97, 96) playBtn = display.newImage ('playBtn.png', display.contentCenterX - 30, display.contentCenterY + 10) creditsBtn = display.newImage ('creditsBtn.png', display.contentCenterX - 44.5, display.contentCenterY + 65) titleView = display.newGroup (titleBg, playBtn, creditsBtn) startButtonListeners ('add') end

Paso 26: 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 27: 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 + 50)) transition.to (creditsView, time = 300, y = (display.contentHeight * 0.5) + 35, onComplete = function () creditsView: addEventListener ('tap', hideCredits) end) end

Paso 28: 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

La próxima vez…

En esta parte de la serie, has aprendido la interfaz y la configuración básica del juego. En la siguiente y última parte de la serie, manejaremos el movimiento de la paleta, la detección de colisiones y los pasos finales que se deben tomar antes de lanzar la prueba, como la aplicación, crear una pantalla de inicio, agregar un icono y, finalmente, crear la aplicación. Estén atentos para la parte final!