Package pilas :: Package actores :: Module tortuga
[hide private]
[frames] | no frames]

Source Code for Module pilas.actores.tortuga

  1  # -*- encoding: utf-8 -*- 
  2  # Pilas engine - A video game framework. 
  3  # 
  4  # Copyright 2010 - Hugo Ruscitti 
  5  # License: LGPLv3 (see http://www.gnu.org/licenses/lgpl.html) 
  6  # 
  7  # Website - http://www.pilas-engine.com.ar 
  8   
  9  import pilas 
 10  from pilas.actores import Actor 
 11   
 12   
13 -class Tortuga(Actor):
14 """Representa una tortuga que se puede mover por la pantalla. 15 16 Este actor está profundamente inspirado por la tortuga de Logo, creada 17 por Seymour Papert en el año 1967. 18 """ 19
20 - def __init__(self, x=0, y=0, dibuja=True):
21 """Inicializa la tortuga. 22 23 :param x: Posición horizontal inicial. 24 :param y: Posición vertical inicial. 25 :param dibuja: Indica si a tortuga dejará marcada una linea al moverse. 26 """ 27 self.pizarra = pilas.actores.Pizarra() 28 29 imagen = pilas.imagenes.cargar('tortuga.png') 30 Actor.__init__(self, imagen, x=x, y=y) 31 32 self.rotacion = 0 33 self.velocidad = 6 34 35 self.anterior_x = x 36 self.anterior_y = y 37 38 if dibuja: 39 self.bajalapiz() 40 else: 41 self.subelapiz() 42 43 self.color = pilas.colores.negro
44
45 - def avanzar(self, pasos):
46 """Se mueve hacia adelante la cantidad de pasos indicada. 47 48 :param pasos: Los pasos que debe avanzar. 49 """ 50 self.hacer_luego(pilas.comportamientos.Avanzar(pasos, self.velocidad))
51
52 - def giraderecha(self, delta):
53 """Da un giro hacia la derecha de la tortuga. 54 55 :param delta: Los grados que digará en ese sentido. 56 """ 57 self.hacer_luego(pilas.comportamientos.Girar(abs(delta), self.velocidad))
58
59 - def giraizquierda(self, delta):
60 """Realiza un giro hacia la izquierda. 61 62 :param delta: Los grados que digará en ese sentido. 63 """ 64 self.hacer_luego(pilas.comportamientos.Girar(-abs(delta), self.velocidad))
65
66 - def actualizar(self):
67 """Actualiza su estado interno.""" 68 if self.anterior_x != self.x or self.anterior_y != self.y: 69 self.dibujar_linea_desde_el_punto_anterior() 70 self.anterior_x = self.x 71 self.anterior_y = self.y
72
74 """Realiza el trazado de una linea desde su posición actual hacia la anterior.""" 75 self.pizarra.linea(self.anterior_x, self.anterior_y, self.x, self.y, self.color, grosor=4)
76
77 - def bajalapiz(self):
78 """Le indica a la tortuga si debe comenzar a dibujar con cada movimiento.""" 79 self.lapiz_bajo = True
80
81 - def subelapiz(self):
82 """Le indica a la tortuga que deje de dibujar con cada movimiento.""" 83 self.lapiz_bajo = False
84
85 - def pon_color(self, color):
86 """Define el color de trazado cuando comienza a moverse.""" 87 self.color = color
88
89 - def crear_poligono(self, lados=4, escala=100, sentido=-1):
90 """dibuja un poligono de lados de los lados indicados. 91 92 :param lados: La cantidad de lados a dibujar. 93 :param escala: El tamaño del polígono a dibujar. 94 :param sentido: El sentido de dibujado, -1 indica hacia la izquierda y 1 hacia la derecha. 95 """ 96 97 for i in range(lados): 98 rotacion = 360 / lados 99 self.avanzar(escala) 100 if sentido == 1: 101 self.giraderecha(rotacion) 102 else: 103 self.giraizquierda(rotacion)
104
105 - def crear_circulo(self, radio=30, sentido=-1):
106 """Dibuja un circulo. 107 108 :param radio: El radio que deberá tener el circulo. 109 :param sentido: El sentido de dibujado, -1 indica hacia la izquierda y 1 hacia la derecha. 110 """ 111 for i in range(36): 112 self.avanzar(radio) 113 if sentido == 1: 114 self.giraderecha(10) 115 else: 116 self.giraizquierda(10)
117 118 # Alias de metodos 119 av = avanzar 120 gd = giraderecha 121 gi = giraizquierda 122 bl = bajalapiz 123 sl = subelapiz 124 pc = pon_color 125
126 - def get_color(self):
127 """Retorna el color que se utilizará para trazar.""" 128 return self._color
129
130 - def set_color(self, color):
131 """Define el color que se utilizará para trazar. 132 133 :param color: El color a utilizar. 134 """ 135 self._color = color
136 137 color = property(get_color, set_color) 138
139 - def pintar(self, color=None):
140 """Pinta todo el fondo de un solo color. 141 142 :param color: El color que se utilizará para pintar el fondo. 143 """ 144 self.pizarra.pintar(color)
145