Dibujar constelaciones y mapas de estrellas en Scratch

Home / Nivel / Avanzado / Dibujar constelaciones y mapas de estrellas en Scratch

Introducción

Lo bueno de trabajar con un ordenador es que podemos trabajar con muchos datos y procesarlos. Aunque Scratch no sea una herramienta muy potente para trabajar con gran cantidad de datos podemos plantearnos trabajar con grandes listas de variables si activamos el Modo Turbo.

En estos retos podrás intentar manejar listas de variables que guarden miles de datos. Para ello intentarás crear un sistema que guarde una gran cantidad de estrellas.

En este proyecto de ejemplo se puede: generar mapas de estrellas aleatorios, pintar mapas de estrellas manualmente, mostrar mapas almacenados y dibujar constelaciones sobre los mapas.

Deberías saber

  • Manejo de listas de variables
  • Utilizar clones
  • Mensajes
  • Lápiz

Objetivos

  • Aprender a programar listas grandes de variables
  • Relacionar elementos de un listado con posiciones en la pantalla
  • Idear estructuras de datos

Generar un mapa de estrellas aleatorio

Crea un programa que dibuje puntos por la pantalla en posiciones aleatorias.

Haz que el programa pida al usuario cuántos puntos (estrellas) quiere dibujar.

Guardar el mapa de estrellas en listas

Ahora intenta almacenar en una sola lista el mapa de estrellas.  Para cada estrella debes almacenar su posición en x y su posición en y.

¿Eres capaz de guardar varios mapas de estrellas en una sola lista? Hay muchas formas de hacerlo: separadores, otra lista que almacene índice de mapas, tamaños fijos…

PISTA: Aquí tienes un bloque que puedes crear para añadir mapas de estrellas a una lista. Utiliza un separador (*) entre mapas y añade en la primera posición la x y en la siguiente la y, y así sucesivamente.

Dibujar mapas de estrellas almacenados anteriormente

Ahora llega el momento de utilizar esos mapas que hemos almacenados. Añade a tu programa una funcionalidad que le permita al usuario pintar un mapa de estrellas almacenado.

PISTA: Es bueno tener una segunda lista que almacene dónde empieza cada mapa dentro de la lista de todas las estrellas. Una lista de índices. De esta forma mejoraremos los tiempos del programa. Aquí puedes ver un ejemplo del recorrido de la lista de estrellas partiendo de un dato de otra lista llamada Menú de galaxias.

Dibujar mapas manualmente haciendo clic

En el ejemplo de la introducción muestra el mapa 7, no parece ser eso muy aleatorio, ¿verdad?

Hasta ahora teníamos la funcionalidad de dibujar y almacenar un mapa de estrellas aleatorio, pero podríamos hacer que el usuario, si quiere, pudiera dibujar su propio mapa de estrellas haciendo clic por la pantalla.

Almacena este mapa con el resto de mapas de estrellas aleatorias de esta forma podremos dibujar más adelante el mapa que hayamos creado manualmente.

PISTA: Esto es muy similar al generador de mapas aleatorio, lo que cambia es que las posiciones, en vez de aleatorias, son las del ratón en el momento de hacer clic.

Dibujar constelaciones sobre un mapa de estrellas

Tenemos un programa que genera mapas de estrellas o nos permite dibujarlos manualmente. También es capaz de pintar estos mapas en la pantalla. Es buen momento para el reto final.

Crea una opción para que el usuario pueda dibujar constelaciones entre las estrellas de cualquiera de los mapas.

Podrías diseñar un sistema de datos que guarde las constelaciones dibujadas, pero eso con Scratch sería un poco jaleo. Puedes dejarlo para cuando trabajes con bases de datos.

Las nuevas ideas son inagotables.

Mejora la interfaz de tu programa añadiendo nuevas opciones de borrado y visionado de las estrellas.

No olvides compartir con nosotros tus creaciones. También puedes encontrar más bananas siguiéndonos en BananaCoders en la comunidad de Scratch o en nuestro Twitter @BananaCoders.

Deja un comentario