COMO PAUSAR UN JUEGO

Para explicar como pausar un juego vamos a utilizar el programa desarrollado en los ejercicios con sprites donde el Ovni dispara un misil. Este es el código del programa:

Program OvniPausa

                Structure Imagen

                               x As Int

                               y As Int

                               incX As Int

                               incY As Int

                End Structure

                Define ovni As Imagen

                Define misil As Imagen

                Define hayMisil As Bool = False

                Define TiempoImagen As Int[6] = {40, 40, 40, 40, 40, 40}

                Method cargarOvni()

                               LoadSprite("OVNI", "UFO.gif")

                               ovni.x = 50

                               ovni.y = 50

                               ovni.incX = 5

                               ovni.incY = 5

                               MoveSpriteToPoint("OVNI", ovni.x, ovni.y)

                               SetSpriteAnimationTimeline("OVNI", True, TiempoImagen)

                               ShowSprite("OVNI")

                End Method

                Method cargarMisil()

                               LoadSprite("MISIL", "missile1.gif")

                               ScaleSprite("MISIL", 0.8)

                               SetSpriteAnimationTimeline("MISIL", True, TiempoImagen)

                               RotateSprite("MISIL", 90)

                               misil.incY = 5

                End Method

                Method moverMisil()

                               If misil.y < ScreenHeight() + GetSpriteHeight("Misil") Then

                                               MoveSpriteByAmount("MISIL", 0, misil.incY)

                                               misil.y = misil.y + misil.incY

                               Else

                                               hayMisil = False

                                               HideSprite("MISIL")

                               End If

                End Method

                Method tecla()

                               If IsKeyDown("UP") And ovni.y > 0 Then

                                               ovni.y = ovni.y - ovni.incY

                               End If

                               If IsKeyDown("Down") And ovni.y < ScreenHeight() - GetSpriteHeight("OVNI") Then

                                               ovni.y = ovni.y + ovni.incY                             

                               End If

                               If IsKeyDown("Right") And  ovni.x < ScreenWidth() - GetSpriteWidth("OVNI") Then

                                               ovni.x = ovni.x + ovni.incX                              

                               End If

                               If IsKeyDown("Left") And ovni.x > 0 Then

                                               ovni.x = ovni.x - ovni.incX

                               End If

                               If IsKeyDown("A") And hayMisil = False Then

                                               hayMisil = True

                                               misil.x = ovni.x

                                               misil.y = ovni.y

                                               MoveSpriteToPoint("MISIL", misil.x, misil.y + GetSpriteHeight("OVNI"))

                                               ShowSprite("MISIL")

                               End If

                               MoveSpriteToPoint("OVNI", ovni.x, ovni.y)

                End Method

// Para crear el efecto de pausa en el juego incluimos este método

                Method Pausar()

                               If IsKeyDown("Space") Then

                                               // Se espera a que se suelte la barra espaciadora

                                               While IsKeyDown("Space")

                                                               RefreshScreen()

                                               End While

                                               // Se imprime el mensaje de PAUSA

                                               SetFont("Arial", 64, True, False, False)

                                               Color(137)

                                               Pen(False)

                                               MoveTo(100, 100)

                                               Rectangle(500, 200, True)

                                               MoveTo(120, 120)

                                               Color(20)

                                               Rectangle(460, 160, True)

                                               Color(139)

                                               MoveTo(117, 150)

                                               Print("PAUSADO")

                                               RefreshScreen()

                                               // Se espera a que se vuelva a presionar y soltar la

// barra espaciadora. De esta manera el programa se

// queda bloqueado en un ciclo de ejecución infinito

// hasta que se retire la pausa

                                               While IsKeyDown("Space") = False

                                                               RefreshScreen()

                                               End While

                                               While IsKeyDown("Space")

                                                               RefreshScreen()

                                               End While

                                               // Se borra el mensaje de PAUSA

                                               BorrarPantalla()

                               End If

                End Method

// Este método vuelve a pintar toda la pantalla de blanco

// nuevamente ocultando el letrero de PAUSA

                Method BorrarPantalla()

                               MoveTo(0, 0)

                               Color(White)

                               Rectangle(700, 390, True)

                End Method

                Method Main()

                               cargarOvni()

                               cargarMisil()

                               Loop 10000

                                               tecla()

                                               moverMisil()

                                               Delay(10)

                                               // Aquí se hace uso del método que detiene el juego

                                               // cuando se usa la pausa

                                               Pausar()

                               End Loop 

                End Method

End Program

<< Anterior