Recrea el juego Pong in Small Basic

Paso 1/4: Recordatorio de episodios anteriores

Small Basic es un lenguaje de iniciación a la programación diseñado para divertirse mientras se programa. Es parte de esta nueva iniciativa de Microsoft para animar a los más jóvenes (de 7 a 77 años) a descubrir las alegrías de la programación. Para obtener más información, haga clic aquí — aquí –.

En nuestro primer episodio (ver aquí), presentamos elEntorno de desarrollodemostró que el software permite no sólo crear pequeñas aplicaciones simples (en modo consola), sino también las más sofisticadas capaces de consultar servicios Web tales como Flickr (aquí)

En el segundo episodio (ver aquí), estudiamos algunos conceptos fundamentales del lenguaje tales como variables, bucles y pruebas. Los ilustramos con el Misterioso juego de números (ver aquí).

En el tercer episodio (ver aquí), vimos que Small Basic se inspiró en el lenguaje LOGOTIPO para ofrecer instrucciones gráficas muy divertidas y educativas (ver aquí)!

En este cuarto episodio, descubriremos el papel de los subprogramas y la instrucción SUB. Y, al mismo tiempo, crearemos un remake de los más famosos PONGel antepasado de los videojuegos modernos!

Paso 2/4; Aviso previo

Small Basic, en su primera edición beta llamada «Octubre 2008», es víctima de un bug que impide el correcto funcionamiento de los programas en un Windows configurado en la región francesa.

Para que las aplicaciones funcionen correctamente, debe configurar temporalmente la configuración regional de Windows en «English (United States)»:
– Ir al panel de control
– Ir a los ajustes regionales (opciones regionales y lingüísticas)
– Abrir la pestaña Formatos
– En el menú emergente Formato actual, seleccione Inglés (Estados Unidos)
– Haga clic en Aplicar.

Nota:

Este error se corregirá en la próxima Small Basic «beta» («Christmas Release 2008») prevista para finales de diciembre de 2008.

Paso 3/4: Noción de subprogramas

Un programa es ante todo una sucesión de órdenes secuenciales. Sin embargo, es muy común que ciertas secuencias de código se repitan. En lugar de duplicar estas líneas una y otra vez, tiene más sentido escribirlas sólo una vez dentro de un subprograma que se llama cuando se necesita. Por lo tanto, si necesita modificar estas líneas, sólo tendrá que modificar el subprograma en lugar de repetir la modificación en cada una de sus ocurrencias, como habría tenido que hacer si hubiera repetido las instrucciones.

Por lo tanto, un subprograma es una parte del código que normalmente hace una cosa específica y que puede llamarse tantas veces como sea necesario desde cualquier punto del programa principal.

Los subprogramas tienen la ventaja de hacer el código más legible. Esto se denomina programación estructurada. Todos los programas aquí toman la siguiente forma:
1ª instrucción del programa principa
l


2ª instrucción del programa principa
l


..
.


enésima instrucción del programa principal llamando al subprograma n°
x


..
.


Última instrucción del programa principa
l




SUB Subprograma1


1ª instrucción del subprograma
1


..
.


Última instrucción del subprograma
1


ENDSUB




SUB Subprograma2


Primera instrucción del subprograma
2


..
.


Última instrucción del subprograma
2


ENDSUB

Por ejemplo, el siguiente programa muestra la hora cada vez que el usuario pulsa una tecla (excepto la tecla[Q], que se utiliza aquí para salir del programa).

Inicio del programa principal
Entrada =»»»
Mientras (Text.ConvertToLowerCase(Input) «q»)
DisplayTime()
Entrada = TextWindow.Read()
EndWhile
Fin del programa principal
Subprograma:
Sub PosterTim
e


TextWindow.WriteLine(«»»
)


TextWindow.Write(«It is currently:»
)


TextWindow.WriteLine(Clock.Time
)


FinSub

Paso 4/4: El juego PONG

Los subprogramas también se utilizan para gestionar eventos de Windows e interactuar con el ratón. Ilustraremos este principio con el juego Pong, cuya raqueta se controlará con el ratón y un subprograma para gestionarla «OnMouseMove».

Este programa utiliza un concepto que aún no hemos estudiado pero que veremos en nuestro quinto episodio: Las Formas. Estos objetos gráficos son muy útiles para los juegos, ya que se les puede dar nombres y luego se utilizan para indicar que desea moverlos. El siguiente programa utiliza dos «Shapes». Una para la pelota (llamada pelota) y otra para la raqueta (llamada paleta).

Así que aquí está el programa del juego PONG. Depende de ti mejorarlo después……

Inicio del programa principal
Inicializaciones(
)


Bucle principal(
)


Fin de programa()

Fin del programa principal
Este subprograma inicializa la pantalla y las variables
Subsidios de Inicialización
GraphicsWindow.BackgroundColor = «DarkBlue»
GraphicsWindow.PenColor = «Red»
gw = GraphicsWindow.Width
gh = GraphicsWindow.Height
Turtle.Show()
Velocidad de tortuga = 10
Turtle.PenUp()
Turtle.turn(180)
Movimiento de tortuga(gh/2 – 2)
Turtle.TurnRight()
Movimiento de tortuga(gw/2 – 2)
Turtle.PenDown()
Turtle.TurnRight()
Turtle.Move(gh-4)
Turtle.TurnRight()
Turtle.Move(gw-4)
Turtle.TurnRight()
Turtle.Move(gh-4)
Turtle.Hide()
GraphicsWindow.PenColor = «Blue»
paleta = GraphicsWindow.AddRectangle(120, 12)
GraphicsWindow.MoveShape(paleta, 0, GraphicsWindow.Height – 12)
bola = GraphicsWindow.AddEllipse(16, 16)
GraphicsWindow.MouseMove = OnMouseMove
x = 0
y = 0
deltaX = 1
deltaY = 1
Puntuación = 0
FinSub
Este subprograma gestiona el movimiento de la pelota y la puntuación.
Lazo principal secundario

Mientras (y

x = x + deltaX
y = y + deltaY
Si (x >= gw – 16 o x deltaX = -deltaX
FinSi
Si (y deltaY = -deltaY
FinSi
padX = GraphicsWindow.GetLeftOfShape(paddle)
Si (y = gh – 28 y x >= padX y x deltaY = -deltaY
Puntuación = Puntuación+1
GraphicsWindow.BrushColor = «DarkBlue»
GraphicsWindow.FillRectangle(gw/2-60, 10, 100, 22)
GraphicsWindow.BrushColor = «Yellow»
GraphicsWindow.DrawText(gw/2-60,20,»Partitura: «+Puntaje)
FinSi
GraphicsWindow.MoveShape(bola, x, y)
Programa de Retraso(5)
EndWhile
GraphicsWindow.ShowMessage(«You Lost!», «Paddle»)
FinSub
Este subprograma gestiona el movimiento de la raqueta
Sub OnMouseMove
paddleX = GraphicsWindow.MouseX
GraphicsWindow.MoveShape(paleta, paddleX – 60, GraphicsWindow.Height – 12)
FinSub

No Responses

Write a response