Exemple #1
0
    def __init__(self):
        super(TheGame, self).__init__(fps=30)

        self.player = Ship()
        self.add(self.player)

        self.aliens = []
        colors = ['blue', 'cyan', 'green', 'yellow', 'red']
        for i in xrange(50):
            a = Alien(32 + (i%10)*64, 48 + (i/10)*64, Game.color(colors[i/10]))
            self.aliens.append(a)
        self.add(self.aliens)

        self.shields = Game.Sprite.Group()
        for i in xrange(256):
            s = Shield(x=64+160*(i/64)+(i%8)*4, y=Game.height-100+(i%64)/8*4)
            self.shields.add(s)
            
        self.add(self.shields)

        self.quadtree = QuadTree(self.shields.sprites())

        self.playerbullets = [Bullet(Vector(0,0)) for _ in xrange(8)]
        self.alienbullets = [Bullet(Vector(0,0)) for _ in xrange(24)]
        self.bullets = self.playerbullets + self.alienbullets
        self.add(self.bullets)

        self.fpsdisplay = FPS(font=Game.defaultFont)
        self.add(self.fpsdisplay)

        self.lives = text.Text(x=50, y=Game.world.height-20, autowidth=True)
        self.lives.text = "Lives: %d" % self.player.lives
        self.add(self.lives)

        self.killTimer = 2000
Exemple #2
0
    def __init__(self):
        super(TheGame, self).__init__(fps=30)

        self.player = Ship()
        self.add(self.player)

        self.aliens = []
        colors = ['blue', 'cyan', 'green', 'yellow', 'red']
        for i in xrange(50):
            a = Alien(32 + (i % 10) * 64, 48 + (i / 10) * 64,
                      Game.color(colors[i / 10]))
            self.aliens.append(a)
        self.add(self.aliens)

        self.shields = Game.Sprite.Group()
        for i in xrange(256):
            s = Shield(x=64 + 160 * (i / 64) + (i % 8) * 4,
                       y=Game.height - 100 + (i % 64) / 8 * 4)
            self.shields.add(s)

        self.add(self.shields)

        self.quadtree = QuadTree(self.shields.sprites())

        self.playerbullets = [Bullet(Vector(0, 0)) for _ in xrange(8)]
        self.alienbullets = [Bullet(Vector(0, 0)) for _ in xrange(24)]
        self.bullets = self.playerbullets + self.alienbullets
        self.add(self.bullets)

        self.fpsdisplay = FPS(font=Game.defaultFont)
        self.add(self.fpsdisplay)

        self.lives = text.Text(x=50, y=Game.world.height - 20, autowidth=True)
        self.lives.text = "Lives: %d" % self.player.lives
        self.add(self.lives)

        self.killTimer = 2000
Exemple #3
0
class TheGame(World):
    def __init__(self):
        super(TheGame, self).__init__(fps=30)

        self.player = Ship()
        self.add(self.player)

        self.aliens = []
        colors = ['blue', 'cyan', 'green', 'yellow', 'red']
        for i in xrange(50):
            a = Alien(32 + (i % 10) * 64, 48 + (i / 10) * 64,
                      Game.color(colors[i / 10]))
            self.aliens.append(a)
        self.add(self.aliens)

        self.shields = Game.Sprite.Group()
        for i in xrange(256):
            s = Shield(x=64 + 160 * (i / 64) + (i % 8) * 4,
                       y=Game.height - 100 + (i % 64) / 8 * 4)
            self.shields.add(s)

        self.add(self.shields)

        self.quadtree = QuadTree(self.shields.sprites())

        self.playerbullets = [Bullet(Vector(0, 0)) for _ in xrange(8)]
        self.alienbullets = [Bullet(Vector(0, 0)) for _ in xrange(24)]
        self.bullets = self.playerbullets + self.alienbullets
        self.add(self.bullets)

        self.fpsdisplay = FPS(font=Game.defaultFont)
        self.add(self.fpsdisplay)

        self.lives = text.Text(x=50, y=Game.world.height - 20, autowidth=True)
        self.lives.text = "Lives: %d" % self.player.lives
        self.add(self.lives)

        self.killTimer = 2000

    def update(self):
        collided = lambda f, s: f.collide(s, kill=True)
        shieldcollision = lambda f, s: f.collide(s)

        livingbullets = [b for b in self.bullets if b.alive]

        vsshields = [_ for _ in livingbullets + self.aliens \
            if _.y > 360 and _.x > 60 and _.x < 580]

        for b in vsshields:
            hit = self.quadtree.hit(b.rect)
            if hit:
                for h in hit:
                    if h.alive:
                        h.collide(b)

        Game.Sprite.groupcollide(Game.Sprite.Group(self.playerbullets), \
            self.aliens, False, False, collided)
        Game.Sprite.spritecollide(self.player, Game.Sprite.Group(self.alienbullets), \
            False, collided)

        if not self.player.alive:
            self.killTimer -= Game.elapsed
            if self.killTimer <= 0:
                self.killTimer = 2000
                self.player.reset()

        super(TheGame, self).update()

    def getAvailableBullet(self, who):
        if who == self.player:
            bulletslist = self.playerbullets
        else:
            bulletslist = self.alienbullets

        for e in bulletslist:
            if not e.alive:
                e.alive = True
                e.visible = True
                return e
        return None
Exemple #4
0
class TheGame(World):
    def __init__(self):
        super(TheGame, self).__init__(fps=30)

        self.player = Ship()
        self.add(self.player)

        self.aliens = []
        colors = ['blue', 'cyan', 'green', 'yellow', 'red']
        for i in xrange(50):
            a = Alien(32 + (i%10)*64, 48 + (i/10)*64, Game.color(colors[i/10]))
            self.aliens.append(a)
        self.add(self.aliens)

        self.shields = Game.Sprite.Group()
        for i in xrange(256):
            s = Shield(x=64+160*(i/64)+(i%8)*4, y=Game.height-100+(i%64)/8*4)
            self.shields.add(s)
            
        self.add(self.shields)

        self.quadtree = QuadTree(self.shields.sprites())

        self.playerbullets = [Bullet(Vector(0,0)) for _ in xrange(8)]
        self.alienbullets = [Bullet(Vector(0,0)) for _ in xrange(24)]
        self.bullets = self.playerbullets + self.alienbullets
        self.add(self.bullets)

        self.fpsdisplay = FPS(font=Game.defaultFont)
        self.add(self.fpsdisplay)

        self.lives = text.Text(x=50, y=Game.world.height-20, autowidth=True)
        self.lives.text = "Lives: %d" % self.player.lives
        self.add(self.lives)

        self.killTimer = 2000

    def update(self):
        collided = lambda f,s: f.collide(s,kill=True)
        shieldcollision = lambda f,s: f.collide(s)

        livingbullets = [b for b in self.bullets if b.alive]

        vsshields = [_ for _ in livingbullets + self.aliens \
            if _.y > 360 and _.x > 60 and _.x < 580]

        for b in vsshields:
            hit = self.quadtree.hit(b.rect)
            if hit:
                for h in hit:
                    if h.alive:
                        h.collide(b)

        Game.Sprite.groupcollide(Game.Sprite.Group(self.playerbullets), \
            self.aliens, False, False, collided)
        Game.Sprite.spritecollide(self.player, Game.Sprite.Group(self.alienbullets), \
            False, collided)

        if not self.player.alive:
            self.killTimer -= Game.elapsed
            if self.killTimer <= 0:
                self.killTimer = 2000
                self.player.reset()

        super(TheGame, self).update()

    def getAvailableBullet(self, who):
        if who == self.player:
            bulletslist = self.playerbullets
        else:
            bulletslist = self.alienbullets

        for e in bulletslist:
            if not e.alive:
                e.alive = True
                e.visible = True
                return e
        return None