Esempio n. 1
0
 def to_front(self):
     ActiveSprite.to_front(self)
     if self.dcap['overlayglasses']:
         ico = images.sprget(('glasses', self.dir))
         y = self.y + self.overlayyoffset
         if self.overlaysprite is None or not self.overlaysprite.alive:
             self.overlaysprite = images.ActiveSprite(ico, self.x, y)
         else:
             self.overlaysprite.to_front()
             self.overlaysprite.move(self.x, y, ico)
         self.overlaysprite.gen = [self.overlaysprite.die([None])]
Esempio n. 2
0
    def startsnookerbubble(self, timeout, hspeed, monsterpoplist=None):
        self.gen.append(self.snooker_movements(dir=hspeed, timeout=timeout))
        self.gen.append(self.kill_touching_monsters(monsterpoplist))
        colorname = random.choice(Stars.COLORS)
        imglist = [('smstar', colorname, k) for k in range(2)]
        self.to_front()
        s = images.ActiveSprite(images.sprget(imglist[-1]), self.x, self.y)
        s.setimages(s.cyclic(imglist, speed=2))
        s.gen.append(s.following(self))

        def to_front():
            Bubble.to_front(self)
            s.to_front()

        self.to_front = to_front
Esempio n. 3
0
def normal_play():
    from player import BubPlayer
    import bonuses
    framecounter = 0
    bonus_callback = bonuses.start_normal_play()
    while BubPlayer.MonsterList:
        bonus_callback()
        yield normal_frame()
        if not BubPlayer.DragonList:
            continue
        framecounter += 1
        BASE = 500
        if not (framecounter % BASE):
            if framecounter == 4*BASE:
                from monsters import Monster
                from mnstrmap import BigImages
                ico = images.sprget(BigImages.hurryup[1])
                s = images.ActiveSprite(ico, (bwidth-ico.w)//2, (bheight-ico.h)//2)
                s.setimages(s.die(BigImages.hurryup * 12, 2))
                images.Snd.Hurry.play()
                mlist = [s for s in images.ActiveSprites
                         if (isinstance(s, Monster) and s.regular() and
                             not s.angry)]
                if mlist:
                    s = random.choice(mlist)
                    s.angry = [s.genangry()]
                    s.resetimages()
            if framecounter >= 6*BASE:
                mlist = [s for s in images.ActiveSprites
                         if isinstance(s, Monster) and s.regular() and s.angry]
                if mlist:
                    images.Snd.Hell.play()
                    gamesrv.set_musics([], [])
                    s = random.choice(mlist)
                    s.become_ghost()
                    framecounter = -200
                else:
                    framecounter = 2*BASE
            if framecounter == 0:
                curboard.set_musics()
    replace_boardgen(last_monster_killed(), 1)
Esempio n. 4
0
def display_hat(p, d):
    if p.team == -1 or getattr(d,'isdying',0) or hasattr(d,'no_hat'):
        return
    try:
        bottom_up = d.bottom_up()
    except AttributeError:
        bottom_up = 0
    try:
        image = ('hat', p.team, d.dir, d.hatangle)
    except AttributeError:
        image = ('hat', p.team)
    if bottom_up:
        image = 'vflip', image
        y = d.y
    else:
        y = d.y - 16
    ico = images.sprget(image)
    if (getattr(d,'hatsprite',None) is None or
        not d.hatsprite.alive):
        d.hatsprite = images.ActiveSprite(ico, d.x, y)
    else:
        d.hatsprite.to_front()
        d.hatsprite.move(d.x, y, ico)
    d.hatsprite.gen = [d.hatsprite.die([None])]
Esempio n. 5
0
def wait_for_one_player():
    from player import BubPlayer
    clearallsprites()
    nimages = None
    while not [p for p in BubPlayer.PlayerList if p.isplaying()]:
        yield 3
        if not nimages:
            desc = getattr(gamesrv.game, 'FnDesc', '?')
            host, port = getattr(gamesrv.game, 'address', ('?', '?'))
            images.writestrlines([
                "Welcome to",
                desc.upper(),
                "at %s:%s" % (host.lower(), port),
                None,
                "Click on your Favorite Color's Dragon",
                "Choose four keys: Right, Left, Jump, Shoot",
                "and Let's Go!",
                None,
                "Click again for more than one player",
                "on the same machine.",
                ])
            
            from mnstrmap import PlayerBubbles
            nimages = [PlayerBubbles.bubble[0],
                       PlayerBubbles.bubble[1],
                       PlayerBubbles.bubble[1],
                       PlayerBubbles.bubble[0],
                       PlayerBubbles.bubble[2],
                       PlayerBubbles.bubble[2]]
            screenwidth = bwidth + 9*CELL
            screenheight = bheight

            def welcomebubbling(self):
                fx = self.x
                dx = (random.random() - 0.5) * 1.9
                for y in range(self.y-3, -self.ico.h, -3):
                    fx += dx
                    self.move(int(fx), y)
                    yield None
                    if y == self.ypop:
                        from mnstrmap import PlayerBubbles
                        self.setimages(None)
                        self.gen.append(self.die(PlayerBubbles.explosion))
                self.kill()

            yield 10
            gamesrv.set_musics([], [images.music_game2], reset=0)
        
        if ((not images.ActiveSprites or random.random() < 0.05678) and
            gamesrv.clients):
            # make sure the extension's images are loaded too
            # NB. this is also needed for import auto-detection
            import ext1; import ext2; import ext3
            import ext4; import ext5; import ext6
            import ext7
            
            ico = images.sprget(nimages[0])
            s = images.ActiveSprite(ico,
                                    random.randrange(0, screenwidth-ico.w),
                                    screenheight)
            s.ypop = random.randrange(-ico.h, screenheight)
            s.gen = [welcomebubbling(s)]
            s.setimages(s.cyclic(nimages, speed=1))
            if random.random() > 0.4321:
                try:
                    key, (filename, (x, y, w, h)) = random.choice(
                        images.sprmap.items())
                except:
                    w = h = 0
                if w == h == 32:
                    s2 = images.ActiveSprite(images.sprget(key), -32, 0)
                    s2.gen = [s2.following(s, (s.ico.w-32)//2, (s.ico.h-32)//2)]
                    s.ypop = None
        images.action(images.ActiveSprites[:])
Esempio n. 6
0
 def playing_monster(self):
     from bonuses import Bonus
     bubber = self.bubber
     vy = None
     imgsetter = self.imgsetter
     poplist = [None]
     while 1:
         dx = bubber.wannago(self.dcap)
         if dx and dx != self.dir:
             self.dir = dx
             self.resetimages()
             imgsetter = self.imgsetter
         if dx and vy is None:
             self.setimages(imgsetter)
         else:
             self.setimages(None)
             if vy is not None:
                 if vy < 0:
                     n = 1
                 else:
                     n = 3
                 self.seticon(images.sprget(self.imgrange()[n]))
         if dx and not self.blocked():
             self.step(self.vx * dx, 0)
         yield None
         impulse = 0.0
         wannajump = bubber.key_jump
         if vy is not None:
             vy += 0.33
             if vy > 12.0:
                 vy = 12.0
             yf = self.y + yfp + vy
             yfp = yf - int(yf)
             delta = int(yf) - self.y
             if delta > 0:
                 by_y = {}
                 for s in images.ActiveSprites:
                     if isinstance(s, Bonus) and s.touchable:
                         if abs(s.x - self.x) <= 22:
                             by_y[s.y] = s
                 for monster in BubPlayer.MonsterList:
                     if abs(monster.x - self.x) <= 22:
                         if monster.regular():
                             by_y[monster.y] = monster
                 for ny in range(self.y - 1, self.y + delta + 1):
                     self.move(self.x, ny)
                     self.vertical_warp()
                     if onground(self.x, self.y):
                         poplist = [None]
                         impulse = vy
                         vy = None
                         break
                     key = self.y + 29
                     if key in by_y:
                         s = by_y[key]
                         if isinstance(s, Monster):
                             self.play(images.Snd.Extra)
                             s.argh(poplist)
                         elif isinstance(s, Bonus):
                             s.reallytouched(self)
                         yfp = 0.0
                         vy = -3.3
                         break
             else:
                 self.step(0, delta)
                 self.vertical_warp()
         if vy is None:
             if onground(self.x, self.y):
                 if wannajump:
                     yfp = 0.0
                     vy = -max(1.0, impulse) - 2.02
                     impulse = 0.0
                     self.play(images.Snd.Jump)
             else:
                 yfp = vy = 0.0
         if impulse > 8.1:
             break
     self.play(images.Snd.Pop)
     for n in range(2):
         for letter in 'abcdefg':
             ico = images.sprget(('sheep', letter))
             nx = self.x + random.randrange(-1, self.ico.w - ico.w + 2)
             ny = self.y + random.randrange(0, self.ico.h - ico.h + 2)
             dxy = [random.random() * 5.3 - 2.65, random.random() * 4 - 4.4]
             s = images.ActiveSprite(ico, nx, ny)
             s.gen.append(s.parabolic(dxy))
             s.gen.append(s.die([None], random.randrange(35, 54)))
     self.move(-99, 0)
     for t in range(68):
         yield None
     self.kill()