1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
# -*- encoding: utf-8 -*-
# Pilas engine - A video game framework.
#
# Copyright 2010 - Hugo Ruscitti
# License: LGPLv3 (see http://www.gnu.org/licenses/lgpl.html)
#
# Website - http://www.pilas-engine.com.ar
import pilas
from pilas.actores import Actor
class Tortuga(Actor):
"Representa una tortuga que se mueve por la pantalla como la tortuga de Logo."
def __init__(self, x=0, y=0, dibuja=True):
self.pizarra = pilas.actores.Pizarra()
imagen = pilas.imagenes.cargar('tortuga.png')
Actor.__init__(self, imagen, x=x, y=y)
self.rotacion = 0
self.velocidad = 6
self.anterior_x = x
self.anterior_y = y
if dibuja:
self.bajalapiz()
else:
self.subelapiz()
self.color = pilas.colores.negro
def avanzar(self, pasos):
self.hacer_luego(pilas.comportamientos.Avanzar(pasos, self.velocidad))
def giraderecha(self, delta):
self.hacer_luego(pilas.comportamientos.Girar(abs(delta), self.velocidad))
def giraizquierda(self, delta):
self.hacer_luego(pilas.comportamientos.Girar(-abs(delta), self.velocidad))
def actualizar(self):
if self.anterior_x != self.x or self.anterior_y != self.y:
self.dibujar_linea_desde_el_punto_anterior()
self.anterior_x = self.x
self.anterior_y = self.y
def dibujar_linea_desde_el_punto_anterior(self):
self.pizarra.linea(self.anterior_x, self.anterior_y, self.x, self.y, self.color, grosor=4)
def bajalapiz(self):
self.lapiz_bajo = True
def subelapiz(self):
self.lapiz_bajo = False
def pon_color(self, color):
self.color = color
def crear_poligono(self, lados = 4, escala = 100, sentido = -1):
"dibuja un poligono de n lados"
for i in range(lados):
rotacion = 360 / lados
self.avanzar(escala)
if sentido == 1:
self.giraderecha(rotacion)
else:
self.giraizquierda(rotacion)
def crear_circulo(self, radio = 30, sentido = -1):
"dibuja un circulo"
for i in range(36):
self.avanzar(radio)
if sentido == 1:
self.giraderecha(10)
else:
self.giraizquierda(10)
# Alias de metodos
av = avanzar
gd = giraderecha
gi = giraizquierda
bl = bajalapiz
sl = subelapiz
pc = pon_color
def get_color(self):
return self._color
def set_color(self, color):
self._color = color
color = property(get_color, set_color)
def pintar(self, color=None):
self.pizarra.pintar(color)
|