Exemple #1
0
 def gamestart_end(self):
     if game.comments >= 1:
         self.textobjs.append(objtext.Text('Begin'))
     if self.whip:
         self.whip.stop()
     del self.ticks
     del self.whip
def help(helpname, helppos):
    if not game.player.help.has_key(helpname):
        game.player.help[helpname] = 1
        if game.help == 0:
            game.handler = GameHelp(game.handler, helpname, helppos)
        elif hasattr(game.handler, "textobjs"):
            t = getattr(game.handler, "textobjs")
            message = QuickHelp.get(helpname, None)
            if message and game.comments >= 1:
                t.append(objtext.Text(message))
Exemple #3
0
 def playerdie_start(self):
     game.player.lives += 1
     snd.play('explode', 1.0, self.player.rect.centerx)
     #self.explode = objexplode.Explode(self.player.rect.center, self.player.move)
     #self.staticobjs.append(self.explode)
     self.staticobjs.extend(objexplode.superexplode(self.player.rect.center, self.player.move))
     self.explode = self.staticobjs[-1]
     self.poptime = 3
     self.player.dead = 1
     self.player.active = 0
     self.grabbedboxes = 0
     self.numdeaths += 1
     if game.comments >= 2 and len(self.boxobjs) <= 2:
         self.textobjs.append(objtext.Text('Doh, so close'))
     elif game.comments >= 2 and self.numdeaths > 1:
         self.textobjs.append(objtext.Text(game.Insults[self.complement]))
         self.complement = (self.complement + 1) % len(game.Insults)
     for effect in self.powereffects:
         effect.dead = 1
     for b in self.guardobjs:
         b.nofire()
Exemple #4
0
 def levelskip_start(self):
     snd.play('levelskip')
     game.player.skips += 1
     self.poptime = 2
     if game.clock.get_fps() < 25:
         self.poptime = 1
     if game.comments >= 1:
         self.textobjs.append(objtext.Text('Level Skipped'))
     self.skiptime = 25
     for s in self.spikeobjs:
         s.dead = 1
         self.popobjs.append(objpopshot.PopShot(s.rect.center))
Exemple #5
0
 def gameover_start(self):
     snd.play('gameover')
     self.ticks = 5
     if not self.gamewon:
         self.textobjs.append(objtext.Text('Game Over'))
         for g in self.guardobjs:
             if not g.killed:
                 g.killed = 1
                 explode = objexplode.Explode(g.rect.center)
                 self.staticobjs.append(explode)
                 #argh, force a cleanup
                 self.background(g.lastrect)
                 gfx.dirty(g.lastrect)
Exemple #6
0
 def event(self, e):
     if e.type == pygame.KEYDOWN:
         #What are you doing? Looking for Cheats?
         #shame shame
         if input.Cheatstring == "wheat":
             snd.play('gameover')
             snd.play('delete')
             game.player.cheater = 1
             self.textobjs.append(objtext.Text('"wheat" Cheat: Extra Lives'))
             self.lives_left += 10
             self.hud.drawlives(self.lives_left)
         elif input.Cheatstring == "shred":
             snd.play('gameover')
             snd.play('delete')
             game.player.cheater = 1
             self.grabbedboxes = 0 #let's not give any fake complements
             self.levelnum = 49
             self.textobjs.append(objtext.Text('"shred" Cheat: Warp Level 50'))
             self.changestate('levelend')
         if e.key == pygame.K_PAUSE or e.key == pygame.K_p:
             if game.handler is self: #just in case some "help" gets in first?
                 game.handler = gamepause.GamePause(self)
Exemple #7
0
 def levelend_start(self):
     snd.play('levelfinish')
     self.popobjs.append(objwarp.Warp(self.player.rect.center))
     self.player.dead = 1
     self.player.active = 0
     self.poptime = 2
     for effect in self.powereffects:
         effect.dead = 1
     if game.comments >= 1 and self.grabbedboxes >= 25:
         self.textobjs.append(objtext.Text(game.Complements[self.complement]))
         self.complement = (self.complement + 1) % len(game.Complements)
     for s in self.spikeobjs:
         s.dead = 1
         self.popobjs.append(objpopshot.PopShot(s.rect.center))
     #boxes may be left if the player cheated
     for b in self.boxobjs:
         b.erase(self.background)
     del self.boxobjs[:]
Exemple #8
0
 def playerdie_tick(self):
     self.poptime -= 1
     if not self.poptime:
         self.poptime = 2
         if self.shotobjs:
             s = self.shotobjs[0]
             s.dead = 1
             self.popobjs.append(objpopshot.PopShot(s.rect.center))
     if self.explode.dead and not self.popobjs :#and not game.timeleft:
         if self.lives_left:
             self.lives_left -= 1
             self.hud.drawlives(self.lives_left)
             self.changestate('playerstart')
             if game.comments >= 2 and not self.lives_left:
                 self.textobjs.append(objtext.Text("Last Ship, Don't Blow It"))
         else:
             self.changestate('gameover')
     self.tickleveltime(self.speedadjust * 1.5)
     self.runobjects(self.objlists)
Exemple #9
0
 def gamewin(self):
     self.gamewon = 1
     self.changestate('gameover')
     self.textobjs.append(objtext.Text('GAME WINNER!'))
Exemple #10
0
    def levelstart_start(self):
        self.skipping = game.timeleft > 0.0
        self.levelnum += 1
        del self.boxobjs[:]
        self.newboxes, self.startpos, msg, num = levels.makelevel(
            self.levelnum)
        random.shuffle(self.newboxes)
        self.calcboxes = num
        self.addtime = 2
        if game.clock.get_fps() < 25:
            self.addtime = 1
        self.hud.drawlevel(self.levelnum)
        if game.comments >= 2:
            self.textobjs.append(objtext.Text(msg))
        self.grabbedboxes = 0
        self.numdeaths = 0
        for b in self.guardobjs:
            b.nofire()

        if self.levelnum > game.player.score:
            game.player.score = self.levelnum
        if not self.newcontinue and game.player.start_level(
        ) > self.startlevel:
            self.newcontinue = 1

        for i in range(
                levels.numrocks(self.levelnum) - len(self.asteroidobjs)):
            self.asteroidobjs.append(objasteroid.Asteroid())

        for p in self.powerupobjs:
            p.extendtime()

        if self.skipping: self.skiptime = 20

        #teleport in dead guards
        for g in self.guardobjs:
            if g.killed == 1:
                self.smokeobjs.append(objguard.TeleGuard(g))
                g.killed = 2

        #make spikes
        if self.levelnum >= 30:
            numspikes = min(
                int((self.levelnum - 30) // 5) + 1,
                len(self.newboxes) - 5)
            self.secretspikes = self.newboxes[-numspikes:]
        elif self.levelnum >= 10:
            numspikes = int((self.levelnum - 10) // 7) + 1
            spikes = self.newboxes[-numspikes:]
            self.newboxes = self.newboxes[:-numspikes]
            for b in spikes:
                s = objbox.Spike(b.rect.topleft)
                self.spikeobjs.append(s)
            self.secretspikes = []
            self.touchingsecretspike = None
        else:
            self.secretspikes = []
            self.touchingsecretspike = None

        #rotate music
        if pygame.time.get_ticks() - self.songtime > game.musictime:
            songs = list(Songs)
            songs.remove(self.song)
            self.song = random.choice(songs)
            snd.playmusic(*self.song)
            self.songtime = pygame.time.get_ticks()
Exemple #11
0
    def normal_tick(self):
        #fire the guards
        shootchance = game.guard_fire * self.speedadjust
        if self.player.active and random.random() < shootchance:
            self.powerupcount += 0.3
            baddy = random.choice(self.guardobjs)
            baddy.fire()  #only requests a shot
        for baddy in self.guardobjs:
            shotspot, shotdir = baddy.shotinfo()
            if shotspot:
                s = objshot.Shot(shotspot, shotdir)
                self.shotobjs.append(s)
                snd.play('shoot', 1.0, shotspot[0])

        #add a powerup if ready
        if self.powerupcount >= game.powerupwait:
            self.powerupcount = 0.0
            p = objpowerup.newpowerup(self.levelnum)
            self.powerupobjs.append(p)
            snd.play('spring', 0.6)
            gamehelp.help("powerup", p.rect.topleft)
        if self.grabbedboxes >= 50:
            self.grabbedboxes = 0
            if game.comments >= 1:
                self.textobjs.append(
                    objtext.Text(game.Complements[self.complement]))
            self.complement = int(
                (self.complement + 1) % len(game.Complements))
        elif self.grabbedboxes >= 20:
            self.numdeaths = 0

        self.tickleveltime(self.speedadjust)

        playerrect = self.player.rect.inflate(-1, -1)
        playercollide = playerrect.colliderect
        #collide player to boxes
        if self.touchingsecretspike:
            if not playercollide(self.touchingsecretspike.rect):
                #self.boxobjs.remove(self.touchingsecretspike)
                self.spikeobjs.append(
                    objbox.Spike(self.touchingsecretspike.rect.topleft))
                self.boxobjs.remove(self.touchingsecretspike)
                self.touchingsecretspike = None
        for b in self.boxobjs:
            status = b.playercollide(playerrect)
            if status:
                self.grabbedboxes += 1
                self.powerupcount += 0.6
                if b in self.secretspikes:
                    self.touchingsecretspike = b
                    self.secretspikes.remove(b)
                    snd.play('klank2', 0.7, self.player.rect.centerx)
                elif status == 1:
                    self.powerupcount += 0.3
                    self.boxobjs.remove(b)
                    self.popobjs.append(b)
        #collide player to powerups
        for p in self.powerupobjs:
            if playercollide(p.rect):
                p.dead = 1
                effect = p.effect()
                if game.comments >= 2:
                    self.textobjs.append(
                        objtext.Text('"' + effect.__doc__ + '"'))
                self.powereffects.append(effect)
                gamehelp.help(effect.__doc__, self.player.rect.center)
        playerrect = playerrect.inflate(-6, -6)
        playercollide = playerrect.colliderect
        asteroidrects = [o.colliderect for o in self.asteroidobjs]
        hitbullet = 0
        #collide player and asteroids to bullets
        for s in self.shotobjs:
            r = s.rect
            if playercollide(r):
                s.dead = 1
                if not self.player.shield:
                    self.changestate('playerdie')
                    hitbullet = 1
                else:
                    self.popobjs.append(objpopshot.PopShot(s.rect.center))
            for ar in asteroidrects:
                if ar.colliderect(r) and not s.dead:
                    s.dead = 1
                    self.popobjs.append(objpopshot.PopShot(s.rect.center))
                    break
        #collide player to spikes
        for s in self.spikeobjs:
            if s.armed and playercollide(s.rect):
                s.dead = 1
                self.changestate('playerdie')
                hitbullet = 1
        #collide player to asteroids
        if not hitbullet:
            for a, r in zip(self.asteroidobjs, asteroidrects):
                if playercollide(r):
                    self.changestate('playerdie')
                    a.dead = 1
                    self.popobjs.append(objpopshot.PopShot(r.center))

        if not self.boxobjs:
            self.changestate('levelend')

        #blow smoke (turbo)
        self.clocks += 1
        if self.player.turbo and (self.player.move[0] or self.player.move[1]
                                  ) and gfx.surface.get_bytesize() > 1:
            self.smokeobjs.append(objsmoke.Smoke(self.player.rect.center))
            if game.clock.get_fps() > 35.0:
                self.smokeobjs.append(objsmoke.Smoke(self.player.rect.center))

        self.runobjects(self.objlists)