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
Import mojo
Class pongo Extends App
Field paletaX:Float = 630.0
Field paletaY:Float = 240.0
Field bolaX:Float = 320.0
Field bolaY:Float = 240.0
Field bolaVelX:Float = 3.5
Field bolaVelY:Float = 1.5
Field enemigoX:Float[] = [5.0, 55.0]
Field enemigoY:Float[] = [240.0, 240.0]
Field enemigoVelY:Float[] = [-10.0, 5.0]
Field puntosJugador:Int = 0
Field puntosEnemigo:Int = 0
Field modoJuego:Int = 0
Field modoMensaje:Int = 0
Method OnCreate:Int()
SetUpdateRate(60)
Return True
End
Method DrawPlayField:Int()
DrawRect(0,0,640,5)
DrawRect(0,475,640,5)
For Local i:= 5 To 465 Step 20
DrawRect(318,i,4,10)
Next
Return True
End
Method ControlPlayer:Int()
If KeyDown(KEY_UP) Then
paletaY -= 5.0
If paletaY < 25.0 Then paletaY = 25.0
Endif
If KeyDown(KEY_DOWN) Then
paletaY += 5.0
If paletaY > 455.0 Then paletaY = 455.0
Endif
Return True
End
Method UpdateGame:Int()
ControlPlayer()
ControlEnemies()
UpdateBall()
If (CheckPaddleCollP() = True And bolaVelX > 0) Then
bolaVelX *= -1
If ((bolaY - paletaY) > 7) Then bolaVelY = 1.5
If ((bolaY - paletaY) < -7) Then bolaVelY = -1.5
If ((bolaY - paletaY) <= 7) And ((bolaY - paletaY) >= -7) Then bolaVelY = 0
Endif
Local i:Int = CheckPaddleCollE()
If (i >=0 And bolaVelX < 0) Then
bolaVelX *= -1
If ((bolaY - enemigoY[i]) > 7) Then bolaVelY = 1.5
If ((bolaY - enemigoY[i]) < -7) Then bolaVelY = -1.5
If ((bolaY - enemigoY[i]) <= 7) And ((bolaY - enemigoY[i])>= -7) Then bolaVelY = 0
Endif
Return True
End
Method ControlEnemies:Int()
For Local i:Int = 0 To 1
enemigoY[i] += enemigoVelY[i]
If enemigoY[i] < 25.0 Then
enemigoY[i] = 25.0
enemigoVelY[i] *= -1
Endif
If enemigoY[i] > 455.0 Then
enemigoY[i] = 455.0
enemigoVelY[i] *= -1
Endif
Next
Return True
End
Method UpdateBall:Int()
bolaX += bolaVelX
bolaY += bolaVelY
If bolaY < 10.0 Then
bolaY = 10.0
bolaVelY *= -1
Endif
If bolaY > 470.0 Then
bolaY = 470.0
bolaVelY *= -1
Endif
If bolaX < 5.0 Then
bolaX = 5.0
bolaVelX *= -1
puntosJugador += 1
If puntosJugador >= 10 Then modoJuego = 2
Print (puntosEnemigo + ":" + puntosJugador)
Endif
If bolaX > 635.0 Then
bolaX = 635.0
bolaVelX *= -1
puntosEnemigo += 1
If puntosEnemigo >= 10 Then modoJuego = 2
Print (puntosEnemigo + ":" + puntosJugador)
Endif
Return True
End
Method OnRender:Int()
Cls
DrawPlayField()
DrawRect(paletaX, paletaY-30, 5, 60)
DrawRect(enemigoX[0], enemigoY[0]-30, 5, 60)
DrawRect(enemigoX[1], enemigoY[1]-30, 5, 60)
DrawCircle(bolaX, bolaY, 5)
Return True
Return True
End
Method CheckPaddleCollP:Bool()
If bolaX > 625.0 Then
If ((bolaY >= paletaY-25.0) And (bolaY <= paletaY+25.0)) Then
Return True
Endif
Endif
Return False
End
Method CheckPaddleCollE:Int()
For Local i:Int = 0 To 1
If (bolaX > (enemigoX[i]-5)) And (bolaX < (enemigoX[i]+5)) Then
If ((bolaY >= enemigoY[i]-25.0) And (bolaY <= enemigoY[i]+25.0)) Then
Return i
Endif
Endif
Next
Return -1
End
Method StartGame:Int()
If modoMensaje = 0 Then
modoMensaje = 1
Print ("Presione P para iniciar")
Endif
If KeyHit(KEY_P) Then
modoMensaje = 0
modoJuego = 1
Endif
Return True
End
Method GameOver:Int()
If modoMensaje = 0 Then
modoMensaje = 1
Print ("G A M E O V E R")
If puntosEnemigo >= 10 Then
Print ("No llores! la computadora gano, quizas a la siguiente.")
Else
Print ("Felicitaciones, Ganaste! Debe ser tu dia de suerte.")
Endif
Print ("Presiona P para reiniciar el juego")
Endif
If KeyHit(KEY_P) Then
puntosEnemigo = 0
puntosJugador = 0
Print (puntosEnemigo + ":" + puntosJugador)
paletaY = 240.0
bolaX = 320.0
bolaY = 240.0
bolaVelX = 3.5
bolaVelY = 1.5
enemigoY[0] = 240.0
enemigoY[1] = 240.0
modoMensaje = 0
modoJuego = 1
Endif
Return True
End
Method OnUpdate:Int()
Select modoJuego
Case 0
StartGame()
Case 1
UpdateGame()
Case 2
GameOver()
End
Return True
End
End
Function Main:Int()
New pongo
Return True
End
![pong o juego final pong o juego final](data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20300%20272'%3E%3C/svg%3E)
Páginas: 1 2
Hola Donde esta el codigo?
Hola, al final de mi post dice Me gusta: mas abajo dice “Páginas: 1 2” haz click en el 2, suerte!!
[…] Bueno primero y antes que cualquier cosa les digo que voy a utilizar el MonkeyCoder, específicamente el código resultante de este y este post. […]
[…] pidieron que hiciera un review del libro que les comente aquí, y del cual hice un tutorial aquí y aquí, bueno la verdad es que esta semana no tengo nada que postear ya que me la pase aprendiendo a […]