def __init__(self):
        super( CombatScene, self ).__init__()

        # Render da text
        self.title = combatText.CombatText()
        self.add(self.title)

        # Initialize the ship
        self.bookCraft = ship.Ship()

        self.collisionManager = CollisionManagerBruteForce()
        # Initialize the enemies
        self.enemyList = []
        self.enemyTimer = 0
        self.enemycounter = 0
        self.explosionList = []

        self.roomBorder = roomBorder()
        self.collisionManager.add(self.bookCraft)
        self.roomBorder.addTilesToCollision(self.collisionManager)
        self.add(self.roomBorder)
        self.add(self.bookCraft )
        self.mouserel = (0, 0)

        self.schedule_interval(self.mainCombatTimer, 0.05)
Exemplo n.º 2
0
    def __init__(self, game, interface, meta):
        super().__init__(242, 242, 242, 255)

        background_sprite = Sprite('fondo_final.svg', anchor=(0, 0))
        background_sprite.position = (0, 0)
        background_sprite.scale = 0.1
        self.add(background_sprite, z=0)

        self.game = game
        self.toaster = None
        self.meta = meta

        self.meta["current_world"] = 0
        self.current_screen = 0
        self.space_used = 1
        self.interface = interface
        self.main_character = CollidableSprite('ppepotato.svg', anchor=(0, 0))
        self.collision_manager = CollisionManagerBruteForce()
        self.collision_manager.add(self.main_character)
        self.add(self.main_character)
        self.sprites_by_id = {}
        self.explosions = []

        self.do_draw()

        self.schedule_interval(self.check_collisions, 0.1)
        self.schedule_interval(self.check_finished, 0.1)
Exemplo n.º 3
0
 def __init__(self, HUD):
     super().__init__()
     self.ancho_ventana, self.alto_ventana = director.get_window_size()
     self.man_col = CollisionManagerBruteForce()
     self.HUD = HUD
     self.lanzar_personaje()
     self.enemigo()
     self.schedule(self.update)
     # Cargamos el fondo
     self.fondo = Sprite(load('Fondo3.png'), (400, 325))
     self.add(self.fondo, z=0)
Exemplo n.º 4
0
    def __init__(self, fastmode=False, net=None):
        from Main import Main

        self.fastmode = fastmode
        self.net = net
        self.bat = Bat((0, Main.SCREEN_HEIGHT / 2))
        self.collision_manager = CollisionManagerBruteForce()
        self.ball = Ball((1280 / 2, 720 / 2))
        self.enemy = PerfectEnemy(self.ball,
                                  (Main.SCREEN_WIDTH - 0 - PerfectEnemy.WIDTH,
                                   Main.SCREEN_HEIGHT / 2))
        self.gamestate = Gamestate.RUNNING

        wall_width = 10
        self.wall_left = CollidableColorLayer((40 - wall_width, 0),
                                              wall_width,
                                              Main.SCREEN_HEIGHT,
                                              color=(255, 0, 0))
        self.wall_right = CollidableColorLayer((Main.SCREEN_WIDTH - 50, 0),
                                               wall_width,
                                               Main.SCREEN_HEIGHT,
                                               color=(255, 0, 0))
        self.wall_top = CollidableColorLayer(
            (0, Main.SCREEN_HEIGHT - wall_width),
            Main.SCREEN_WIDTH,
            wall_width,
            color=(255, 0, 0))
        self.wall_bottom = CollidableColorLayer((0, 0),
                                                Main.SCREEN_WIDTH,
                                                wall_width,
                                                color=(255, 0, 0))

        self.score = 0.0
Exemplo n.º 5
0
class RunnerLayer(cocos.layer.ColorLayer, Layer):
    """State"""

    is_event_handler = True

    def __init__(self, game, interface, meta):
        super().__init__(242, 242, 242, 255)

        background_sprite = Sprite('fondo_final.svg', anchor=(0, 0))
        background_sprite.position = (0, 0)
        background_sprite.scale = 0.1
        self.add(background_sprite, z=0)

        self.game = game
        self.toaster = None
        self.meta = meta

        self.meta["current_world"] = 0
        self.current_screen = 0
        self.space_used = 1
        self.interface = interface
        self.main_character = CollidableSprite('ppepotato.svg', anchor=(0, 0))
        self.collision_manager = CollisionManagerBruteForce()
        self.collision_manager.add(self.main_character)
        self.add(self.main_character)
        self.sprites_by_id = {}
        self.explosions = []

        self.do_draw()

        self.schedule_interval(self.check_collisions, 0.1)
        self.schedule_interval(self.check_finished, 0.1)

    def do_draw(self):
        """Draw a screen."""
        self.main_character.x = 0
        self.main_character.y = 0
        self.main_character.do(
            MoveTo((self.interface.width, self.main_character.y), 10))

        for character in self.characters:
            with suppress(Exception):
                self.remove(character.sprite)

        for explosion in self.explosions:
            with suppress(Exception):
                self.remove(explosion)

        self.explosions = []
        self.collision_manager.clear()
        if self.toaster:
            self.remove(self.toaster)
        self.toaster = CollidableSprite("toaster00.svg")
        self.toaster.scale = 0.1
        self.toaster.position = (2 * random.randint(0, self.width) / 3 +
                                 self.width / 3), (random.randint(
                                     0, round(2 * self.height / 3)))
        self.add(self.toaster)
        self.collision_manager.add(self.toaster)

        self.current_screen += 1
        for character in self.characters:
            self.sprites_by_id[id(character.sprite)] = character
            self.collision_manager.add(character.sprite)
            self.add(character.sprite)

        self.draw()

    def check_finished(self, *args, **kwargs):
        """Check if has finished."""
        if self.main_character.x > self.interface.width:
            self.do_draw()

    def check_collisions(self, *args, **kwargs):
        """Check for collisions."""
        for elem in self.collision_manager.iter_colliding(self.main_character):
            if elem == self.toaster:
                position = self.toaster.position
                self.remove(self.toaster)
                self.toaster = CollidableSprite("toaster01.svg")
                self.toaster.scale = 0.1
                self.toaster.position = position
                self.add(self.toaster)
                director.replace(
                    FadeTRTransition(self.meta['scenes']['toaster']))
                continue
            if not id(elem) in self.sprites_by_id:
                continue
            self.sprites_by_id[id(elem)].touched = True
            explosion = Sprite('explosion.svg')
            explosion.scale = 0.5
            explosion.position = elem.position
            self.explosions.append(explosion)

            with suppress(Exception):
                self.remove(elem)
            self.add(explosion)

    def on_key_press(self, key, _):
        """Jumps."""
        if key == pyglet.window.key.SPACE:
            self.main_character.do(
                JumpTo((self.main_character.x + 50, 10), 100, 1, 0.8))

    @property
    def world(self):
        """Get current world."""
        return self.game.state[self.meta["current_world"]]

    @property
    def characters(self):
        """Get current drawable characters"""
        return self.interface.screens[self.current_screen].characters
class CombatScene( cocos.scene.Scene ):
    collisionManager = None
    title = None
    def __init__(self):
        super( CombatScene, self ).__init__()

        # Render da text
        self.title = combatText.CombatText()
        self.add(self.title)

        # Initialize the ship
        self.bookCraft = ship.Ship()

        self.collisionManager = CollisionManagerBruteForce()
        # Initialize the enemies
        self.enemyList = []
        self.enemyTimer = 0
        self.enemycounter = 0
        self.explosionList = []

        self.roomBorder = roomBorder()
        self.collisionManager.add(self.bookCraft)
        self.roomBorder.addTilesToCollision(self.collisionManager)
        self.add(self.roomBorder)
        self.add(self.bookCraft )
        self.mouserel = (0, 0)

        self.schedule_interval(self.mainCombatTimer, 0.05)
        #self.mainCombatTimer(10)

    def on_mouse_motion(self, x, y, dx, dy):
        self.mouserel = (dx, dy)
        self.bookCraft.rotate((x, y))

    def on_mouse_press(self, *args):
        self.bookCraft.shoot(self)

    def on_key_press(self, key, modifiers):
        # Determine what direction the ship is moving
        if key==pyglet.window.key.W:
            self.bookCraft.craftMovingUp = True
        if key==pyglet.window.key.S:
            self.bookCraft.craftMovingDown = True
        if key==pyglet.window.key.A:
            self.bookCraft.craftMovingLeft = True
        if key==pyglet.window.key.D:
            self.bookCraft.craftMovingRight = True

    def on_key_release(self, key, modifiers):
        if key == pyglet.window.key.W:
            self.bookCraft.craftMovingUp = False
        if key == pyglet.window.key.S:
            self.bookCraft.craftMovingDown = False
        if key == pyglet.window.key.A:
            self.bookCraft.craftMovingLeft = False
        if key == pyglet.window.key.D:
            self.bookCraft.craftMovingRight = False

    def on_enter(self):
        super(CombatScene,self).on_enter()
        if(not get_busy()):
            load(os.path.normpath(r'../assets/RoRFight2.mp3'))
            set_volume(1)
            play(loops=-1)
        cocos.director.director.window.push_handlers(self)

    def on_exit(self):
        super(CombatScene,self).on_exit()
        cocos.director.director.window.remove_handlers(self)
        stop()

    # The update loop for the combat scene
    def mainCombatTimer(self, test):
        self.bookCraft.updateCraftVelocity()
        self.bookCraft.updateBulletPosition()
        self.updateEnemies()
        self.bookCraft.updateCollisionPos()
        self.roomBorder.updateCollisionPos()
        self.updateExplosions()
        if(len(self.collisionManager.objs_colliding(self.bookCraft))>0):
            self.bookCraft.reverseDirection()

    def updateEnemies(self):
        self.enemyTimer += 1
        if self.enemyTimer % 100 == 0:
            for x in xrange(random.randint(2, 15)):
                newEnemy = enemyships.Enemy((0, random.randint(0, 768)), random.randint(200, 340), random.randint(50, 1000))
                self.collisionManager.add(newEnemy)
                self.add(newEnemy)
                self.enemyList.append(newEnemy)

        if not self.enemyList: return
        for ship in self.enemyList:
            for item in map(str, self.collisionManager.objs_colliding(ship)):
                if 'Pellet'.upper() in item.upper():
                    ship.health -= 50
                for bullet in self.bookCraft.bulletList:
                    if bullet in self.collisionManager.objs_colliding(ship):
                        self.collisionManager.remove_tricky(bullet)
                        self.remove(bullet)
                        self.bookCraft.bulletList.remove(bullet)
                if 'ship.Ship' in item:
                    self.bookCraft.heath -= 15
                    huh = Sound(os.path.normpath(r'../assets/VEC3 FX Impact 35.wav'))
                    huh.play()
                    splosion = explosion.Explosion(ship.get_rect().center)
                    self.add(splosion)
                    self.explosionList.append(splosion)
                    self.collisionManager.remove_tricky(ship)
                    self.remove(ship)
                    self.enemyList.remove(ship)
                    self.title.updateHP(self.bookCraft.heath)
                    if self.bookCraft.heath <= 0:
                        cocos.director.director.replace(FlipX3DTransition(gameOver(),duration=1))

            # check if this should be dead
            if ship.health <= 0:
                self.enemycounter += 1
                self.title.incrementKills(self.enemycounter)
                huh = Sound(os.path.normpath(r'../assets/VEC3 FX Impact 35.wav'))
                huh.play()
                splosion = explosion.Explosion(ship.get_rect().center)
                self.add(splosion)
                self.explosionList.append(splosion)
                self.collisionManager.remove_tricky(ship)
                self.remove(ship)
                self.enemyList.remove(ship)

            ship.fly()
            if ship.time_alive >= 500:
                self.collisionManager.remove_tricky(ship)
                self.remove(ship)
                self.enemyList.remove(ship)
            else:
                ship.updateCollisionPos()
                ship.time_alive += 1

    def updateExplosions(self):
        if not self.explosionList: return
        for splosion in self.explosionList:
            if splosion.time_alive > 5:
                self.remove(splosion)
                self.explosionList.remove(splosion)
                continue
            splosion.time_alive += 1
Exemplo n.º 7
0
    def __init__(self, client=None):
        self.screen = director.get_window_size()
        super(Task, self).__init__(0, 0, 0, 255, 1024, int(768*1.1))
        self.client = client
        self.state = self.STATE_INIT
        
        self.mole_images = [resource.image('mole_1.png'),
                            resource.image('mole_laugh1.png'),
                            resource.image('mole_laugh2.png'),
                            resource.image('mole_laugh3.png'),
                            resource.image('mole_thump1.png'),
                            resource.image('mole_thump2.png'),
                            resource.image('mole_thump3.png'),
                            resource.image('mole_thump4.png')]
        
        self.music = Player()
        self.music.queue(pyglet.resource.media('whack.mp3'))
        self.music.eos_action = 'loop'
        
        self.cm = CollisionManagerBruteForce()
        
        self.moles = []
        for i in range(0,3):
            mole = Mole(self.mole_images, (112 + (i * 310)), (127-80))
            self.moles.append(mole)
            self.add(mole, 55)
            self.cm.add(mole)
        for i in range(3,6):
            mole = Mole(self.mole_images, (112 + ((i-3) * 310)), (383-80))
            self.moles.append(mole)
            self.add(mole, 35)
            self.cm.add(mole)
        for i in range(6,9):
            mole = Mole(self.mole_images, (112 + ((i-6) * 310)), (639-80))
            self.moles.append(mole)
            self.add(mole, 15)
            self.cm.add(mole)
            
        self.text_batch = BatchNode()
        self.add(self.text_batch, z=100)
        
        self.score = 0
            
        scorey = int((768 + int(768*1.1))/2)
        self.score_num = text.Label("%06d" % self.score, font_name="Score Board", font_size=48, x=512, y=scorey, color=(255, 255, 255, 255),
                                    anchor_x='center', anchor_y='center', batch=self.text_batch.batch)
                                            
        self.fix = Label('G', font_name='Cut Outs for 3D FX', font_size=48,
                          position=(0,0), color=(255, 0, 0, 192), anchor_x='center', anchor_y='center')
        self.fix.visible = False
        self.add(self.fix, z=100000)

        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,0)))
        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,128)))
        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,256)))
        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,384)))
        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,512)))
        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,640)))
        
        self.add(Sprite(resource.image('grass_lower128.png'), anchor=(0,0), position=(0,0)), z=60)
        self.add(Sprite(resource.image('grass_upper128.png'), anchor=(0,0), position=(0,128)), z=50)
        self.add(Sprite(resource.image('grass_lower128.png'), anchor=(0,0), position=(0,256)), z=40)
        self.add(Sprite(resource.image('grass_upper128.png'), anchor=(0,0), position=(0,384)), z=30)
        self.add(Sprite(resource.image('grass_lower128.png'), anchor=(0,0), position=(0,512)), z=20)
        self.add(Sprite(resource.image('grass_upper128.png'), anchor=(0,0), position=(0,640)), z=10)
Exemplo n.º 8
0
class Task(ColorLayer, pyglet.event.EventDispatcher):
    
    d = Dispatcher()
    
    states = ["INIT", "CALIBRATE", "IGNORE_INPUT", "TASK", "DONE"]
    STATE_INIT = 0
    STATE_CALIBRATE = 1
    STATE_IGNORE_INPUT = 2
    STATE_TASK = 3
    STATE_DONE = 4
    
    BG_TILE_SIZE = (1024,128)
    FG_TILE_SIZE = (1024,128)
    
    is_event_handler = True
    
    def __init__(self, client=None):
        self.screen = director.get_window_size()
        super(Task, self).__init__(0, 0, 0, 255, 1024, int(768*1.1))
        self.client = client
        self.state = self.STATE_INIT
        
        self.mole_images = [resource.image('mole_1.png'),
                            resource.image('mole_laugh1.png'),
                            resource.image('mole_laugh2.png'),
                            resource.image('mole_laugh3.png'),
                            resource.image('mole_thump1.png'),
                            resource.image('mole_thump2.png'),
                            resource.image('mole_thump3.png'),
                            resource.image('mole_thump4.png')]
        
        self.music = Player()
        self.music.queue(pyglet.resource.media('whack.mp3'))
        self.music.eos_action = 'loop'
        
        self.cm = CollisionManagerBruteForce()
        
        self.moles = []
        for i in range(0,3):
            mole = Mole(self.mole_images, (112 + (i * 310)), (127-80))
            self.moles.append(mole)
            self.add(mole, 55)
            self.cm.add(mole)
        for i in range(3,6):
            mole = Mole(self.mole_images, (112 + ((i-3) * 310)), (383-80))
            self.moles.append(mole)
            self.add(mole, 35)
            self.cm.add(mole)
        for i in range(6,9):
            mole = Mole(self.mole_images, (112 + ((i-6) * 310)), (639-80))
            self.moles.append(mole)
            self.add(mole, 15)
            self.cm.add(mole)
            
        self.text_batch = BatchNode()
        self.add(self.text_batch, z=100)
        
        self.score = 0
            
        scorey = int((768 + int(768*1.1))/2)
        self.score_num = text.Label("%06d" % self.score, font_name="Score Board", font_size=48, x=512, y=scorey, color=(255, 255, 255, 255),
                                    anchor_x='center', anchor_y='center', batch=self.text_batch.batch)
                                            
        self.fix = Label('G', font_name='Cut Outs for 3D FX', font_size=48,
                          position=(0,0), color=(255, 0, 0, 192), anchor_x='center', anchor_y='center')
        self.fix.visible = False
        self.add(self.fix, z=100000)

        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,0)))
        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,128)))
        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,256)))
        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,384)))
        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,512)))
        self.add(Sprite(resource.image('bg_dirt128.png'), anchor=(0,0), position=(0,640)))
        
        self.add(Sprite(resource.image('grass_lower128.png'), anchor=(0,0), position=(0,0)), z=60)
        self.add(Sprite(resource.image('grass_upper128.png'), anchor=(0,0), position=(0,128)), z=50)
        self.add(Sprite(resource.image('grass_lower128.png'), anchor=(0,0), position=(0,256)), z=40)
        self.add(Sprite(resource.image('grass_upper128.png'), anchor=(0,0), position=(0,384)), z=30)
        self.add(Sprite(resource.image('grass_lower128.png'), anchor=(0,0), position=(0,512)), z=20)
        self.add(Sprite(resource.image('grass_upper128.png'), anchor=(0,0), position=(0,640)), z=10)
        
        
    def set_score(self):
        self.score_num.begin_update()
        self.score_num.text = "%06d" % self.score
        self.score_num.end_update()
        
    def visit(self):
        super(Task, self).visit()
        if director.settings["overlay"]:
            for mole in self.moles:
                if mole.opacity > -1:
                    if mole.state == 1:
                        color = (.3,0.0,0.0,.7)
                    else:
                        color = (.3,0.2,0.5,.7)
                    p = Polygon([(mole.center[0]-mole.rx, mole.center[1]-mole.ry), 
                                 (mole.center[0]+mole.rx, mole.center[1]-mole.ry),
                                 (mole.center[0]+mole.rx, mole.center[1]+mole.ry),
                                 (mole.center[0]-mole.rx, mole.center[1]+mole.ry)],
                                color=color)
                    p.render()
        
    def mole_up(self):
        moles = [mole for mole in self.moles if not mole.active]
        if moles:
            random.choice(moles).up()
        
    def animate(self, dt):
        self.mole_up()
        if random.randint(0, 3) == 0:
            self.mole_up()
                    
    def game_over(self):
        self.state = self.STATE_GAME_OVER
        
    def clear(self):
        self.music.pause()
        self.music.seek(0)
        for mole in self.moles:
            mole.active = False
            mole.state = 0
            mole.position = mole.position_in
        pyglet.clock.unschedule(self.animate)
        if self.client:
            self.client.removeDispatcher(self.d)
            self.client.stopDataStreaming()
            self.client.stopFixationProcessing()
        
    def reset(self):
        self.clear()
        if self.client:
            self.client.addDispatcher(self.d)
            #self.client.setDataFormat('%TS %ET %SX %SY %DX %DY %EX %EY %EZ')
            #self.client.startDataStreaming()
            self.client.startFixationProcessing()
        self.state = self.STATE_TASK
        self.score = 0
        pyglet.clock.schedule_interval(self.animate, .5)
        self.music.play()
        
    def on_enter(self):
        if isinstance(director.scene, TransitionScene): return
        super(Task, self).on_enter()
        
        if director.settings['eyetracker']:
            self.state = self.STATE_CALIBRATE
            self.dispatch_event("start_calibration", self.calibration_ok, self.calibration_bad)
        else:
            self.reset()
            
    def calibration_ok(self):
        self.dispatch_event("stop_calibration")
        self.reset()
        
    def calibration_bad(self):
        self.dispatch_event("stop_calibration")
        director.scene.dispatch_event("show_intro_scene")
        
    def on_exit(self):
        if isinstance(director.scene, TransitionScene): return
        super(Task, self).on_exit()
        self.clear()

    @d.listen('ET_FIX')
    def iViewXEvent(self, inResponse):
        if inResponse[0] == 'l':
            x = int(float(inResponse[2]))
            y = int(float(inResponse[3]))
            if director.settings["overlay"]:
                self.fix.position = (x, y)
                self.fix.visible = True
            self.handle_mouse_press(x, y)
    
    @d.listen('ET_EFX')
    def iViewXEvent(self, inResponse):
        if inResponse[0] == 'l':
            if director.settings["overlay"]:
                self.fix.visible = False
    
    @d.listen('ET_SPL')
    def iViewXEvent(self, inResponse):
        pass
        
    def handle_mouse_press(self, x, y):
        for obj in self.cm.objs_touching_point(x, y):
            if obj.active:
                if obj.state == 0:
                    obj.state = 1
                    obj.thump()
                    self.score += 10
                elif obj.state == 2:
                    self.score -= 10
                self.set_score()
        
    def on_mouse_press(self, x, y, buttons, modifiers):
        posx, posy = director.get_virtual_coordinates(x, y)
        self.handle_mouse_press(posx, posy)

    def on_mouse_motion(self, x, y, dx, dy):
        pass
        
    def on_key_press(self, symbol, modifiers):
        if self.state < self.STATE_IGNORE_INPUT: return
        if symbol == key.W and (modifiers & key.MOD_ACCEL):
            director.scene.dispatch_event("show_intro_scene")
            True
        if self.state == self.STATE_TASK:
            pass
        elif self.state == self.STATE_DONE:
            pass
Exemplo n.º 9
0
class MiCapa(Layer):
    is_event_handler = True

    def on_key_press(self, k, _):
        Personaje.pulsar_tecla[k] = 1

    def on_key_release(self, k, _):
        Personaje.pulsar_tecla[k] = 0

    def __init__(self, HUD):
        super().__init__()
        self.ancho_ventana, self.alto_ventana = director.get_window_size()
        self.man_col = CollisionManagerBruteForce()
        self.HUD = HUD
        self.lanzar_personaje()
        self.enemigo()
        self.schedule(self.update)
        # Cargamos el fondo
        self.fondo = Sprite(load('Fondo3.png'), (400, 325))
        self.add(self.fondo, z=0)

#Posicionamos al personaje en la pantalla

    def lanzar_personaje(self):
        self.personaje = Personaje('Personaje.png', self.ancho_ventana * 0.5,
                                   50)
        self.add(self.personaje, z=1)

#Posicionamos los enemigos en pantalla

    def enemigo(self):
        for i in range(2):
            self.enemigo = Enemigo("Enemigo.png", self.ancho_ventana * 0.5,
                                   560 - i * 40)
            self.add(self.enemigo, z=1)

#Llamamos a todos los métodos update()

    def update(self, dt):
        self.man_col.clear()
        for _, node in self.children:
            if isinstance(node, Actor):
                node.update(dt)
        for _, node in self.children:
            if isinstance(node, Actor):
                self.man_col.add(node)

        self.collide(self.personaje)


#Definimos el método de colisiones

    def collide(self, node):
        if node is not None:
            for other in self.man_col.iter_colliding(node):
                if self.children.count((1, other)) != 0:
                    other.kill()
                    if isinstance(other, Enemigo):
                        self.HUD.puntos += 10
                        self.HUD.update()
                if self.children.count((1, node)) != 0:
                    node.kill()
                seq = ImageGrid(load('Explosion.png'), 1, 1)
                anim = Animation.from_image_sequence(seq, 0.05, False)
                self.sprite = Sprite(anim, (other.x, other.y))
                self.add(self.sprite)
                self.do(Delay(0.8) + CallFunc(self.sprite.kill))