Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
como se puede crear un disparo
#1
Estaba mirando el ejemplo de naves de c para saber como realizar un disparo y la verdad es que no he entendido nada del codigo.Lo he hecho a mi manera pero no he conseguido nada,simplemente aparece el disparo al pulsar un boton pero este no se mueve y solo se crea el numero que hay puesto en el create.

Te voy a poner el codigo para que me digas que estoy haciendo mal.
Code:
import tilengine
import random
#inicio-------------------------------------------------------------
engine = tilengine.Engine.create(640,480,2,64,4)
ventana = tilengine.Window.create()
ventana.disable_crt_effect()
engine.set_background_color(tilengine.Color(120,215,242))
#jugador------------------------------------------------------------
class Jugador(object):
   def __init__(self):
       self.x = 320
       self.y = 420
       self.velocidad = 5
       #obtener el sprite para poder crear muchos sprites
       self.sprite_id = engine.get_available_sprite()
       self.imagen = tilengine.Spriteset.fromfile("hero")
       engine.sprites[self.sprite_id].setup(self.imagen)
       engine.sprites[self.sprite_id].set_position(self.x,self.y)
       engine.sprites[self.sprite_id].set_scaling(2,2)
       engine.sprites[self.sprite_id].enable_collision(True)
       self.disparo_jugador = DisparoJugador(self.x,self.y)
       
   def update(self):
       self.mover()
       self.colision()
       self.disparar()
   
   def mover(self):
       if(ventana.get_input(tilengine.Input.LEFT) and self.x > 0):
           engine.sprites[self.sprite_id].set_position(self.x,self.y)
           engine.sprites[self.sprite_id].set_flags(tilengine.Flags.FLIPX)
           self.x -= self.velocidad
       elif(ventana.get_input(tilengine.Input.RIGHT) and self.x < 608):
           engine.sprites[self.sprite_id].set_position(self.x,self.y)
           engine.sprites[self.sprite_id].set_flags(0)
           self.x += self.velocidad
       if(ventana.get_input(tilengine.Input.UP) and self.y > 16):
           engine.sprites[self.sprite_id].set_position(self.x,self.y)
           self.y -= self.velocidad
       elif(ventana.get_input(tilengine.Input.DOWN) and self.y < 430):
           engine.sprites[self.sprite_id].set_position(self.x,self.y)
           self.y += self.velocidad
   
   def colision(self):
       if(engine.sprites[enemigo.sprite_id].check_collision()):
           engine.sprites[self.sprite_id].set_scaling(1,1)
       else:
           engine.sprites[self.sprite_id].set_scaling(2,2)
           
   def disparar(self):
       if(ventana.get_input(tilengine.Input.A)):
           self.disparo_jugador = DisparoJugador(self.x,self.y)
           self.disparo_jugador.update()
   
#enemigo------------------------------------------------------------
class Enemigo(object):
   def __init__(self):
       random.seed()
       self.x = random.randint(32,608)
       self.y = random.randrange(32,129)
       #obtener el sprite para poder crear muchos sprites
       self.sprite_id = engine.get_available_sprite()
       self.imagen = tilengine.Spriteset.fromfile("hero2")
       engine.sprites[self.sprite_id].setup(self.imagen)
       engine.sprites[self.sprite_id].set_position(self.x,self.y)
       engine.sprites[self.sprite_id].set_scaling(2,2)
       engine.sprites[self.sprite_id].enable_collision(True)
       
   def update(self):
       pass

#disparo jugador-----------------------------------------------------
class DisparoJugador(object):
   def __init__(self,x,y):
       self.x = x
       self.y = y
       self.velocidad = 2
       #obtener el sprite para poder crear muchos sprites
       self.sprite_id = engine.get_available_sprite()
       self.imagen = tilengine.Spriteset.fromfile("hero2")
       engine.sprites[self.sprite_id].setup(self.imagen)
       engine.sprites[self.sprite_id].set_picture(25)
       engine.sprites[self.sprite_id].set_position(self.x,self.y)
       engine.sprites[self.sprite_id].set_scaling(1,1)
       engine.sprites[self.sprite_id].enable_collision(True)
       
   def update(self):
       self.mover()
       self.eliminar()
   
   def mover(self):
       engine.sprites[self.sprite_id].set_position(self.x,self.y)
       self.y -= self.velocidad
       
   def eliminar(self):
       if(self.y < 32):
           engine.sprites[self.sprite_id].disable()

#instanciar objetos--------------------------------------------------
jugador = Jugador()
enemigo = Enemigo()

#bucle---------------------------------------------------------------
while(ventana.process()):
   jugador.update()
   
   ventana.draw_frame()

Por cierto,hay alguna manera de colocar los frames por segundo que yo quiera,parece que tilengine va a 60 fps y yo suelo usar en otros engine 30 fps para ganar rendimiento.
Reply


Messages In This Thread
como se puede crear un disparo - by Hokuto40 - 03-24-2020, 02:22 AM
RE: como se puede crear un disparo - by megamarc - 03-26-2020, 03:10 AM
RE: como se puede crear un disparo - by Hokuto40 - 03-26-2020, 06:18 AM
RE: como se puede crear un disparo - by megamarc - 03-26-2020, 07:12 PM
RE: como se puede crear un disparo - by Hokuto40 - 03-26-2020, 07:31 PM
RE: como se puede crear un disparo - by Hokuto40 - 03-26-2020, 11:16 PM
RE: como se puede crear un disparo - by megamarc - 03-27-2020, 01:42 AM
RE: como se puede crear un disparo - by Hokuto40 - 03-27-2020, 05:39 AM
RE: como se puede crear un disparo - by megamarc - 03-27-2020, 06:07 AM
RE: como se puede crear un disparo - by Hokuto40 - 03-27-2020, 08:34 PM
RE: como se puede crear un disparo - by megamarc - 03-28-2020, 01:36 AM
RE: como se puede crear un disparo - by Hokuto40 - 03-28-2020, 04:43 AM

Forum Jump:


Users browsing this thread: 3 Guest(s)