Single Tech Games

mozilla firefox os

Desarrollando un juego en HTML5 para Firefox OS

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

Páginas: 1 2

0 0 votes
Article Rating
Subscribe
Notify of
guest
5 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments

[…] 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. […]

Jero Soler

Para el icono prueba:
“48”: “/icon48.png”,
Incluyendo la “/”.

Rober

Habrá que estar atento a este nuevo sistema operativo, porque Android parece que está cada vez más saturado de aplicaciones…