Codigo fuente del nuevo PONG-O
Strict #rem Script: Pongo.Monkey Descripcion: Script de ejemplo del capitulo #2 de el libro "Monkey Game Development Beginners guide" de PacktPub Autor: Michael Hartlef Traduccion: Single Tech Games El Script original lo pueden encontrar en http://www.packtpub.com/article/2d-game-development-monkey #end 'Vamos a usar el framework de mojo Import mojo 'La clase App nos permite generar un aplicativo Class pongo Extends App 'La posicion X e Y de la paleta Field paletaX:Float 'Posicion X del lado derecho de la pantalla Field paletaY:Float 'Posicion Y de la mitad de la pantalla 'La posicion X e Y de la bola Field bolaX:Float 'Posicion X de la mitad de la pantalla Field bolaY:Float 'Posicion Y de la mitad de la pantalla Field bolaVelX:Float = 3.5 'Velocidad X de la bola Field bolaVelY:Float = 1.5 'Velocidad Y de la bola 'La posicion X e Y para ambos enemigos, y la velocidad Field enemigoX:Float[] 'Posicion X de ambas paletas Field enemigoY:Float[] 'Posicion Y de ambas paletas Field enemigoVelY:Float[] = [-10.0, 5.0] 'Velocidad Y de ambas paletas 'En estas variables guardaremos el puntaje del juego, el modo en el que se encuentra el juego y la ayuda Field puntosJugador:Int = 0 'Puntos Jugador Field puntosEnemigo:Int = 0 'Puntos Enemigo Field modoJuego:Int = 0 'modoJuego 0=Inicio Juego, 1=Juego, 2=Juego Terminado Field modoMensaje:Int = 0 '0=mensaje puede ser mostrado Field cAncho:Int = 0 'X largo del canvas Field cAlto:Int = 0 'Y ancho del canvas 'Este metodo se ejecuta cuando llamamos por primera vez a la aplicación, sirve para cargar valores iniciales Method OnCreate:Int() cAncho = DeviceWidth() cAlto = DeviceHeight() paletaX = cAncho - 10 paletaY = cAlto / 2 bolaX = cAncho / 2 bolaY = cAlto / 2 enemigoX =[5.0, 55.0] 'Posicion X de ambas paletas enemigoY =[bolaY, bolaY] 'Posicion Y de ambas paletas 'Codigo de inicio va aqui SetUpdateRate(60) Return True End Method DrawPlayField:Int() 'dibujamos un rectangulo en la parte de arriba DrawRect(0, 0, cAncho, 5) 'uno en la parte de abajo DrawRect(0, cAlto - 5, cAncho, 5) 'hacemos una linea media, 13 partes, cada una de 10 pixeles de longitud For Local i:= 5 To cAlto Step 20 DrawRect(cAncho / 2 - 2, i, 4, 10) Next Return True End Method ControlPlayer:Int() If KeyDown(KEY_UP) Then 'revisamos si la tecla "flecha arriba" ha sido presionada paletaY -= 5.0 'Restamos 5 pixeles de la posicion Y If paletaY < 25.0 Then paletaY = 25.0 'Si la paleta llega a la parte superior de la pantalla Endif If KeyDown(KEY_DOWN) Then 'revisamos si la tecla "flecha abajo" ha sido presionada paletaY += 5.0 'Sumamos 5 pixeles de la posicion Y If paletaY > 455.0 Then paletaY = 455.0 'Si la paleta llega a la parte inferior de la pantalla Endif Return True End Method UpdateGame:Int() ControlPlayer() 'Controla la subida y bajada del jugador ControlEnemies() 'Controla la subida y bajada de los enemigos UpdateBall() 'Actualiza la posicion de la bola Return True End Method ControlEnemies:Int() For Local i:Int = 0 To 1 'Recorremos las listas que controlan al enemigo enemigoY[i] += enemigoVelY[i] 'Actualiza la posicion Y de las paletas If enemigoY[i] < 25.0 Then 'Si la paleta llega a la parte superior de la pantalla enemigoY[i] = 25.0 enemigoVelY[i] *= -1 'La velocidad Y pasa a ser negativa Endif If enemigoY[i] > 455.0 Then 'Si la paleta llega a la parte inferior de la pantalla enemigoY[i] = 455.0 enemigoVelY[i] *= -1 'La velocidad Y pasa a ser positiva Endif Next Return True End Method UpdateBall:Int() bolaX += bolaVelX 'Avanzamos en la posicion X de la bola bolaY += bolaVelY 'Avanzamos en la posicion Y de la bola If bolaY < 10.0 Then 'Si la bola llega a la parte superior de la pantalla bolaY = 10.0 'Que se regrese a la posicion 10 bolaVelY *= -1 'La velocidad Y pasa a ser negativa Endif If bolaY > cAlto - 10 Then 'Si la bola llega a la parte inferior de la pantalla bolaY = cAlto - 10 'Que se regrese a la posicion 470.0 bolaVelY *= -1 'La velocidad Y pasa a ser positiva Endif If bolaX < 5.0 Then 'Si la bola llega a la parte izquierda de la pantalla bolaX = 5.0 bolaVelX *= -1 'La velocidad X pasa a ser positiva puntosJugador += 1 'Agregamos 1 a los puntos del jugador If puntosJugador >= 10 Then modoJuego = 2 'Si el jugador llega a 10 puntos acabo el juego Print (puntosEnemigo + ":" + puntosJugador) 'Imprimimos en consola los puntos Endif If bolaX > cAncho - 5 Then 'Si la bola llega a la parte derecha de la pantalla bolaX = cAncho - 5 bolaVelX *= -1 'La velocidad X pasa a ser negativa puntosEnemigo += 1 'Agregamos 1 a los puntos del enemigo If puntosEnemigo >= 10 Then modoJuego = 2 'Si el enemigo llega a 10 puntos acabo el juego Print (puntosEnemigo + ":" + puntosJugador) 'Imprimimos en consola los puntos Endif Return True End 'Aca se modifica el comportamiento del juego, lee las entradas de teclado, mouse, movimiento de jugadores, colisiones, etc. Method OnUpdate:Int() 'Codigo de Juego va aqui UpdateGame() Return True End 'Aca es donde todo se dibuja en pantalla, escenarios, fondo, sprites, etc Method OnRender:Int() 'Codigo de dibujado va aqui Cls 'limpiamos la pantalla en cada frame DrawPlayField() 'llamamos al metodo DrawPlayField DrawRect(paletaX, paletaY-30, 5, 60) 'Dibujamos la paleta del jugador DrawRect(enemigoX[0], enemigoY[0]-30, 5, 60) 'Dibujamos la primera paleta del enemigo DrawRect(enemigoX[1], enemigoY[1]-30, 5, 60) 'Dibujamos la segunda paleta del enemigo DrawCircle(bolaX, bolaY, 5) 'Dibujamos una bola con un radio de 5 Return True Return True End End 'Funcion Principal que hará funcionar todo el codigo atras escrito Function Main:Int() New pongo Return True End
[…] Primero tiene que hacer lo que yo hice para probar en el simulador por la tanto vayan a mi tutorial anterior de publicar tu juego en html5. […]
Para el icono prueba:
“48”: “/icon48.png”,
Incluyendo la “/”.
Tienes mucha razon, Gracias, actualizando el post!
Habrá que estar atento a este nuevo sistema operativo, porque Android parece que está cada vez más saturado de aplicaciones…
y si, parece que la coza ha tomado forma en el mobile congress de Barcelona, habra que estar atento
http://www.omicrono.com/2013/02/firefox-os-toma-forma-en-el-mobile-world-congress/