Dibujado simple en pantalla
Hasta ahora hemos mostrado en la pantalla fondos y actores que originalmente estaban almacenados en el disco de la computadora cómo imágenes.
En esta sección veremos como dibujar libremente, ya sean lineas, círculos, texto etc..
Comenzaremos con una forma de dibujado muy sencilla, y luego veremos algunas alternativas que ofrecen mas flexibilidad.
Ten en cuenta que el dibujo avanzado y mas flexible lo vamos a ver en el siguiente capítulo Dibujo avanzado con Superficies.
Usando la Tortuga para dibujar
El actor Tortuga
está inspirado en una de
las actividades mas divertidas, didácticas y simbólicas
del lenguaje de programación logo, creado
por Seymour Papert.
La Tortuga
básicamente es un actor que sabe
dibujar sobre la ventana de pilas. Para ello el
programador tiene que indicarle a la tortuga qué
movimiento debe realizar.
La siguiente imagen muestra lo que podría dibujar la tortuga con algunas sentencias de movimientos:
La imagen no alcanza a mostrar por completo el concepto, pero en pocas palabras se puede sintetizar lo que realmente hace.
El dibujo de la imagen anterior es una traza que va dibujando la tortuga a partir de su movimiento.
El siguiente código es el que se utilizó para dibujar esa linea de dos colores:
import pilasengine
pilas = pilasengine.iniciar()
tortuga = pilas.actores.Tortuga()
tortuga.avanzar(30)
tortuga.color = pilas.colores.azul
tortuga.avanzar(200)
Algo muy valioso en términos didácticos, es que uno podría animarse a realizar dibujos simples cómo una casa, un hexágono o cualquier otra figura diseñando una estrategia de movimiento para la tortuga.
Inspeccionando a la tortuga
Para manejar a este actor tienes varios comandos inspirados en logo.
Esta es una lista de los comandos mas utilizados:
Método completo | nombre corto | ejemplo | ¿que hace? |
---|---|---|---|
avanzar | av | tortuga.av(10) |
avanza en dirección a donde mira la tortuga. |
giraderecha | gd | tortuga.gd(45) |
gira hacia la derecha los grados indicados. |
giraizquierda | gi | tortuga.gi(45) |
gira hacia la izquierda los grados indicados. |
subelapiz | sl | tortuga.sl() |
deja de dibujar cuando se mueve la tortuga. |
bajalapiz | bl | tortuga.bl() |
comienza a dibujar cuando la tortuga se mueve. |
pon_color | pc | tortuga.pc(pilas.colores.rojo) |
dibuja con el color indicado. |
pintar | pintar | tortuga.pintar(pilas.colores.blanco) |
pinta toda la pantala del mismo color. |
Por supuesto hay algunos mas, pero esos quedan para investigar en la clase propiamente dicha. Recuerda que el auto-completado del intérprete de python es bastante útil para estas cosas.
Usando una Pizarra
Si quieres dibujar sobre la pantalla pero
de forma inmediata y con algunas posibilidades mas
elaboradas, puedes
usar un actor llamado Pizarra
. Esta no es la
forma mas avanzada, pero es el siguiente paso después
de dominar al actor Tortuga
.
Este actor Pizarra
es cómo un lienzo invisible sobre
el que podemos pintar imágenes, figuras
geométricas y trazos de cualquier tipo. De hecho, el actor
Tortuga
que vimos antes, en realidad estaba
dibujando sobre una pizarra, solo que lo hacía con
animaciones y algo lento.
Comencemos con algo sencillo: para crear la pizarra y dibujar un punto en el centro de la pantalla se puede usar el siguiente código:
pizarra = pilas.actores.Pizarra()
pizarra.dibujar_punto(0, 0)
incluso podrías usar el argumento opcional color
si prefieres otro color, o trazar una linea:
pizarra.linea(0, 0, 200, 200, pilas.colores.verdeoscuro, grosor=5)
Pintando imágenes
Las pizarras también pueden dibujar imágenes sobre la superficie, y esto es útil cuando quieras crear pinceles especiales sobre la pizarra o construir un escenario usando bloques tipo ladrillos.
Para pintar una imagen solo tienes que cargarla e indicarla a la pizarra que la dibuje en una posicion determinada.
imagen = pilas.imagenes.cargar("pelota.png")
pizarra.pintar_imagen(imagen, 0, 0)
Así se verá:
Ten en cuenta que en estos casos, cuando estamos dibujando una imagen sobre otra, el punto destino (x, y) siempre indica la esquina superior izquierda de la imagen, no el centro u otra posición relativa como en el caso de los actores.
Pintando porciones de imágenes
Hay ocasiones en las que te resultará útil poder
pintar solamente porciones de una imagen sobre otra. Para
estos casos está el método pintar_parte_de_imagen
.
Veamos la definición del método::
def pintar_parte_de_imagen(self, imagen, origen_x, origen_y, ancho, alto, x, y):
Dibujando grillas
De manera similar a las imágenes normales, sobre las pizarras también se pueden pintar grillas.
Solamente tenemos que crear la grilla, seleccionar el cuadro de animación y después decirle a la pizarra que pinte el cuadro actual de la grilla:
grilla = pilas.imagenes.cargar_grilla("pingu.png", 10)
pizarra.pintar_grilla(grilla, 0, 0)
Así se verá:
Esto es útil cuando se quieren pintar bloques de un escenario completo, por ejemplo podríamos tener una grilla con distintos tipos de suelos (pasto, piedra, tierra) y luego ir imprimiendo sobre una pizarra para formar un escenario completo.
La pizarra como actor
Recuerda que la pizarra también es un actor, así que puedes enseñarle habilidades, cambiar su posición, rotación o lo que quieras.