Movimiento por teclado

Estimados no logro que el Marciano se mueva con el teclado ¿dónde me estoy equivocando?
import pilasengine

pilas = pilasengine.iniciar()
fondo = pilas.fondos.Espacio()
marciano = pilas.actores.Marciano()
marciano.x = 0
marciano.y = 0
marciano.escala = 2.0
marciano.rotacion = 0
pilas.avisar(“Utiliza el teclado para mover al personaje.”)
class Moverse ConElTeclado(habilidades.Habilidad):
class MiActor(pilasengine.actores.Actor):
marciano.aprender(pilas.habilidades.MoverseConElTeclado, control=mi_control))

teclas = {
        pilas.simbolos.a: 'izquierda',
        pilas.simbolos.d: 'derecha',
        pilas.simbolos.w: 'arriba',
        pilas.simbolos.s: 'abajo',
        pilas.simbolos.ESPACIO: 'boton',
    }

marciano = pilas.actores.Marciano(x = 200)
marciano = pilas.actores.Marciano()
mi_control = pilas.control.Control(teclas)

marciano.aprender(pilas.habilidades.Disparar()

planeta_azul = pilas.actores.Planeta()
planeta_azul.x=0
planeta_azul.y=120
planeta_azul.escala = 2.0

)

pilas.ejecutar()

Muchas gracias

Buenas, @marisacon

Aquí te paso tu código rectificado. :wink:

Bśicamente lo he ordenado, ya que estaba todo mezclado, y he creado la class Marciano corectamente.

A veces, cuando algo no funciona puede ser algo tan tonto como que una línea de código esté por delante de otra a la que hace referencia… Por ejemplo, si pongo mi_control = pilas.control.Control(teclas) antes que la definición de las teclas, no me las va a reconocer. Igualmente, si escribo esa linea después de la class Marciano, el actor Marciano no la va a reconocer, o incluso puede que Python dé un error.

De aquí que sea importante tener claro el orden en el cual se escribe el código y qué debe ir antes y qué después. :cold_sweat:

Quizás deberias tambien repasar en el manual la creación de actores personalizados, para acabar de aclarar algunos conceptos…

Espero que esto te ayude !

Un saludo.

# -*- encoding: utf-8 -*-

import pilasengine

pilas = pilasengine.iniciar()

fondo = pilas.fondos.Espacio()


pilas.avisar("Utiliza el teclado para mover al personaje.")


teclas = {
        pilas.simbolos.a: 'izquierda',
        pilas.simbolos.d: 'derecha',
        pilas.simbolos.w: 'arriba',
        pilas.simbolos.s: 'abajo',
        pilas.simbolos.ESPACIO: 'boton',
    }

mi_control = pilas.control.Control(teclas)

# Creamos un actor personalizado:
class Marciano(pilasengine.actores.Actor):
	def iniciar(self):
		self.imagen = 'data/alien.png'
		self.x = 0
		self.y = 0
		self.escala = 2.0 
		self.rotacion = 0
		self.aprender('moverseconelteclado', control=mi_control)
		self.aprender('disparar')
pilas.actores.vincular(Marciano) # Vinculamos nuestro actor personalizado


marciano = pilas.actores.Marciano() #Inicializamos nuestro actor personalizado

planeta_azul = pilas.actores.Planeta()
planeta_azul.x=0
planeta_azul.y=120
planeta_azul.escala = 2.0

pilas.ejecutar()

Muchas Gracias @jordinur por tu disponibilidad y por tus aclaraciones. Las voy a tener en cuenta!! :slight_smile:.

De nada… :blush:

siempre es un placer ayudar!

Si teneis más dudas aprovechad ahora, por que en dos dias se me acaban las vacaciones… :sweat:

Un saludo.