Saludos IrvingProg,
bueno respondiendo a tu pregunta, en la siguiente parte del codigo al parecer existe un error:
- Código: Seleccionar todo
self.animacion_detenido = pilas.imagenes.Grilla("./data/personajei.png", 8)
self.animacion_caminar = pilas.imagenes.Grilla("./data/personajei.png", 7)
self.animacion_caminar2 = pilas.imagenes.Grilla("./data/personajei.png", 9)
cuando deseas crear un actor que contiene varias animaciones debes crear una grilla que
contiene todos los cuadros.
eso se hace de la siguiente manera.
- Código: Seleccionar todo
actor = pilas.actores.Actor()
self.animacion = pilas.imagenes.Grilla("./data/personajei.png", 10)
# asignamos a actor la grilla
animacion.asignar(actor)
suponiendo que personajei.png tiene 10 cuadros
y si ahora quieres mostrar el cuadro 7 debes escribir:
self.animacion.definir_cuadro(7)
self.animacion.asignar(actor)
ahora en la parte del codigo siguiente:
- Código: Seleccionar todo
irving = pilas.actores.Actor(jugador)
deberia ser
- Código: Seleccionar todo
# para crear una instancia ya que (pilas.actores.Actor('recibe_imagen.png')) recibe una imagen y no una clase
i
rving = jugador()
cree un ejemplo muy claro de como se usan las grillas, al parecer el codigo
que escribiste lo adaptaste de la documentacion y en esa parte se estaban ocupando mas de un archivo con animaciones.
bueno qui va el codigo.
ocupe a pingu.png que esta dentro de la imagenes de el motor.
puse algunos comentarios para que entiendas mas claro, espero que sirva.
Saludos
- Código: Seleccionar todo
#!/usr/bin/python
# ######################
# Juego:
# Irving Rodriguez
# Usando libreria pilas
# ######################
#Imporando la libreria
import pilas
#iniciando pantalla, y nombre
pilas.iniciar(titulo = "irving-juego")
#Creando actor 'jugador'
class jugador(pilas.actores.Actor):
def __init__(self, x=0, y=0):
pilas.actores.Actor.__init__(self, x=x, y=y)
# cargamos una grilla de 10 cuadros horizontales
self.animacion= pilas.imagenes.Grilla("pingu.png", 10)
# variable que controla el avance de cuadro a cuadro
self.paso = 0
# variable encargada de la velocidad que se desplaza pingu
self.velocidad = 5
def en_movimiento(self, derecha = True):
# si derecha == True avanza a la derecha
if derecha == True:
self.x += self.velocidad
# de lo contrario avanza a la izquierda
elif derecha == False:
self.x -= self.velocidad
# definimos los cuadros de animacion que queremos mostrar
self.cuadros = [5, 5, 6, 6, 7, 7, 8, 8, 9, 9]
# esta funcion es la encargada de moverse entre un cuadro y otro
def avanzar_animacion(self):
# avanzamos un cuadro
self.paso += 1
# si llega al ultimo cuadro volver al inicio
if self.paso >= len(self.cuadros):
self.paso = 0
# ejecuta funciona anterior
avanzar_animacion(self)
# mostramos los cambios en pantalla
self.definir_cuadro(self.cuadros[self.paso])
def en_reposo(self):
# mostramos cuadro 4 de pingu en reposo
self.definir_cuadro(4)
def definir_cuadro(self, indice):
#cambiamos de cuadro actual al que contiene la variable indice
self.animacion.definir_cuadro(indice)
self.animacion.asignar(self)
# creamos una instancia de nuestra clase jugador con el nombre irving
irving = jugador()
irving.en_reposo()
def presionamos_tecla(eventos):
if pilas.mundo.control.izquierda:
irving.en_movimiento(derecha = False)
elif pilas.mundo.control.derecha:
irving.en_movimiento(derecha = True)
# si hemos dejado de presionar las flechas izquierda o derecha
# mostramos a pingu en reposo
else:
irving.en_reposo()
pilas.eventos.actualizar.connect(presionamos_tecla)
# Cargando jugador
#ejecutamos el codigo
pilas.ejecutar()