1
2
3
4
5
6
7
8
9 import pilas
10 from pilas.actores import Actor
11 from pilas import colores
12
14 """Representa una superficie de dibujo inicialmente transparente.
15
16 Puedes pintar sobre esta pizarra usando métodos que simulan
17 un lapiz, que se puede mover sobre una superficie.
18 """
19
20 - def __init__(self, x=0, y=0, ancho=None, alto=None):
34
36 """Dibuja un punto sobre la pizarra.
37
38 El punto será 3 pixels de radio, y si no se especifica tendrá
39 color negro.
40
41 Este es un ejemplo de invocación:
42
43 >>> pizarra.dibujar_punto(20, 30, pilas.colores.rojo)
44
45 :param x: Posición horizontal para el punto.
46 :param y: Posición vertical para el punto.
47 :param color: El color para el punto.
48 """
49
50 x, y = self.obtener_coordenada_fisica(x, y)
51 self.imagen.dibujar_punto(x, y, color=color)
52
54 """Convierte las coordenadas de pantalla a coordenadas físicas.
55
56 Una coordenanda de pantalla, comienza en el punto (0, 0) y corresponde
57 al centro de la pizarra. Mientras que una coordenada física tiene un
58 sistema parecido al de los juegos viejos, donde (0, 0) es la esquina
59 superir izquierda de la pantalla.
60
61 :param x: Coordenada x a convertir.
62 :param y: Coordenada y a convertir.
63 """
64 x = (self.imagen.ancho()/2) + x
65 y = (self.imagen.alto()/2) - y
66 return x, y
67
69 """Dibuja una imagen sobre la pizarra.
70
71 :param imagen: Referencia a la imagen que se quiere pintar.
72 :param x: Coordenada destino horizontal.
73 :param y: Coordenada destino vertical.
74 """
75 self.pintar_parte_de_imagen(imagen, 0, 0, imagen.ancho(), imagen.alto(), x, y)
76
78 """Dibuja una porción de una imagen sobre la pizarra.
79
80 Este método, a diferencia de "pintar_imagen", capturará un rectángulo
81 de la imagen fuente.
82
83 :param imagen: Imagen fuente que se quiere dibujar sobre la pizarra.
84 :param origen_x: Marca la esquina superior izquierda desde donde se recortar.
85 :param origen_y: Marca la esquina superior izquierda desde donde se recortar.
86 :param ancho: Ancho del rectángulo de corte.
87 :param alto: Alto del rectángulo de corte.
88 """
89 x, y = self.obtener_coordenada_fisica(x, y)
90 self.imagen.pintar_parte_de_imagen(imagen, origen_x, origen_y, ancho, alto, x, y)
91
93 """Dibuja un cuadro de animación sobre la pizarra.
94
95 :param grilla: La grilla a dibujar.
96 :param x: Coordenada horizontal sobre la pizarra.
97 :param y: Coordenada vertical sobre la pizarra.
98 """
99 grilla.dibujarse_sobre_una_pizarra(self, x, y)
100
102 """Pinta toda la pizarra de un solo color.
103
104 Por ejemplo:
105
106 >>> pizarra.pintar(pilas.colores.rojo)
107
108 :param color: El color que pintará toda la pizarra.
109 """
110 self.imagen.pintar(color)
111
113 """Dibuja una linea recta sobre la pizarra.
114
115 :param x: Coordenada horizontal desde donde comenzará la linea.
116 :param y: Coordenada vertical desde donde comenzará la linea.
117 :param x2: Coordenada horizontal desde donde terminará la linea.
118 :param y2: Coordenada vertical desde donde terminará la linea.
119 :param color: El color de la linea.
120 :param grosor: Cuan gruesa será la linea en pixels.
121 """
122 x, y = self.obtener_coordenada_fisica(x, y)
123 x2, y2 = self.obtener_coordenada_fisica(x2, y2)
124 self.imagen.linea(x, y, x2, y2, color, grosor)
125
127 """Dibuja un rectángulo sobre la pizarra.
128
129 Si el rectángulo se dibuja con relleno, el color será el que pintará todo
130 el rectángulo, en caso contrario, el color será utilizado para dibujar el
131 contorno del rectángulo.
132
133 :param x: Posición horizontal de la esquina superior izquierda.
134 :param y: Posición horizontal de la esquina superior izquierda.
135 :param ancho: Ancho del rectángulo.
136 :param alto: Altura del rectángulo.
137 :param relleno: Indica con True o False si el rectángulo se tiene que pintar completamente.
138 :param grosor: Grosor del contorno del rectángulogulo.
139 """
140 x, y = self.obtener_coordenada_fisica(x, y)
141 self.imagen.rectangulo(x, y, ancho, alto, color, relleno, grosor)
142
143 - def texto(self, cadena, x=0, y=0, magnitud=10, fuente=None, color=colores.negro):
144 """Dibuja una cadena de texto sobre la pizarra.
145
146 :param cadena: El string que se quiere dibujar.
147 :param x: Coordenada horizontal.
148 :param y: Coordenada vertical.
149 :param magnitud: Tamaño que tendrá la tipografía.
150 :param fuente: Nombre de la tipografía a utilizar.
151 :param color: Color del texto a dibujar.
152 """
153 x, y = self.obtener_coordenada_fisica(x, y)
154 self.imagen.texto(cadena, x, y, magnitud, fuente, color)
155
157 """Dibuja un polígono sobre la pizarra.
158
159 Ejemplo:
160
161 >>> pizarra = pilas.actores.Pizarra()
162 >>> pizarra.poligono([(10, 20), (100, 140)], color=pilas.colores.verde, grosor=4)
163
164 :param puntos: Una lista de puntos en forma de tupla (x, y) que conforman el polígono.
165 :param color: El color de la linea a trazar.
166 :param grosor: El grosor de la linea a trazar en pixels.
167 """
168 puntos = [self.obtener_coordenada_fisica(*p) for p in puntos]
169 self.imagen.poligono(puntos, color, grosor)
170
172 """Borra toda la pizarra y los dibujos que hay en ella."""
173 self.imagen.limpiar()
174