Saltar la navegación

Azar. Múltiples tortugas

Vamos a realizar un juego en el que la tortuga, dirigida con el teclado, tiene que ir chocando con los cuadrados rojos que van apareciendo  al azar. Cada vez que choca con uno de ellos se gana un punto y el cuadrado cambia de color (negro). Si la tortuga toca uno de los cuadrados negros, o el propio marco, el juego finaliza.

azar número
Devuelve un número entero positivo aleatorio inferior al argumento, que también debe ser entero positivo.
Ejemplos:
azar 50 ;genera un número entre 0 y 49
10 + azar 21 ;genera un número entre 10 y 30
-100 + azar 201 ;genera un número entre -100 y 100

 En el programa anterior necesitamos colocar la tortuga en posiciones aleatorias, podemos hacerlo de la siguente manera:

haz "x azar 100
haz "y azar 100
ponXY :x :y
;o directamente sin usar variables
ponXY azar 100 azar 100

FMSLogo puede trabajar con varias tortugas a la vez, manteniendo cada tortuga su propia dirección, posición y control del lápiz. Para seleccionar una determinada tortuga se utiliza la instrucción activa:

activa número de la tortuga
Selecciona y activa la tortuga indicada para poder controlarla. Las tortugas empiezan por el número 0, que es la tortuga por defecto.
Ejemplo:
para multiples
siempre [
activa 0 gd 1 av 1 espera 1
activa 1 gd 1 av 1 espera 1
[
fin

alto
Finaliza la ejecución del procedimiento en el que se encuentra.
Ejemplo:
;cuando la tortuga toca un punto negro
;finaliza el procedimiento en curso
si pixel = [0 0 0] [alto]

Actividades

1.- Dibujar un rectángulo negro de 500 x 400 puntos y grosor 8. Debe quedar centrado en la pantalla gráfica de FMSLogo.

para campoJuego
sl ponXY  bl
  8   "negro
2 [av 400 gd 90 av 500 gd 90]
fin

2.- Completar el programa adjunto para que, cada vez que se ejecute, dibuje un cuadrado de color rojo y 27 puntos de lado en posiciones aleatorias, dentro del cuadrado que hemos dibujado en la actividad anterior (ejecutar primero campoJuego y después ir ejecutando repetidas veces cuadradoRojoAzar para ver los resultados).

para cuadradoRojoAzar
-250 + azar 501
-200 + azar 401
sl  
ponColorRelleno "rojo
rectanguloRelleno
fin

3.- Si ejecutáis el programa anterior varias veces observaréis que algunos cuadrados se salen del campo de juego, hacer los ajustes necesarios en los valores de x e y para que ésto no suceda.

4.- Realizar un programa para que cuatro tortugas se vayan alejando del centro de la pantalla en diagonal.

para multiplesTortugas
siempre [
0 45 av 1
1 135 av 1
2 225 av 1
3 av 1
1
]
fin

5.- Vamos a programar el juego completo del vídeo anterior. Utilizaremos dos tortugas, una para la que se mueve y otra para dibujar los cuadrados. La moveremos con las teclas "o" (arriba), "l" (abajo), "k" (izquierda), "ñ" (derecha). La instrucción pixel servirá para detectar los choques con los bordes y los cuadrados.

para juegoCuadrados
bp
;habilitar los eventos del teclado

[controlTeclado]
campoJuego
;ponemos el primer cuadrado rojo al azar
activa 1
;colocamos la tortuga en la posición de salida
0 muestraTortuga
ponXY 0 -190 ponRumbo 0
siempre [
300000 []
;si toca el color negro terminamos
[0 0 0] [alto]
;si toca rojo cambia el color a negro
;y genera otro cuadrado rojo
= [ 0 0] [
       ponColorRelleno [ ]
       27 27
      cuadradoRojoAzar
       0 28]
]
fin

para controlTeclado

:tecla = "o [ ]
:tecla = "l [ ]
:tecla = "k [ ]
:tecla = "ñ [ ]
fin

para campoJuego
------
fin

para cuadradoRojoAzar
------
fin

Obra publicada con Licencia Creative Commons Reconocimiento Compartir igual 4.0