Exemple #1
0
    def __init__(self,gamestate,score,ammo):
        # Konfuguracja

        random.seed()
        #inicjalizaja
        pygame.init()

        self.SCREEN_SIZE = (1280, 720)  # grafiki dopasowane do tego
        self.screen = pygame.display.set_mode(self.SCREEN_SIZE)

        self.tps_clock = pygame.time.Clock()
        self.tps_delta = 0.0
        self.shot = 0.0
        self.supertime = -2

        self.player = Player(self)
        self.aliens = []
        self.opp = 10
        self.bullets = []
        self.alienbulets = []
        self.lives = Lives(self)
        self.lives_number = 3
        self.score = Score(self)
        self.score_number = 0 + score
        self.ammo = Ammo(self)
        self.walls = []
        self.gameover = GameOver(self)
        self.gamestate = gamestate
        self.ammo_number = ammo + 5
        self.nextlevel = NextLevel(self)
        self.tps_max = 300.0
        self.superalien = []
        self.tooClose = False
        self.pauseSign = Pause(self)
        self.pause = 1

        for i in range(0,self.opp):
            self.aliens.append(Alien(self, i * 100 + 100, 100,self.gamestate-1))
            self.aliens.append(Alien(self, i * 100 + 100, 150,self.gamestate-1))
            self.aliens.append(Alien(self, i * 100 + 100, 200,self.gamestate-1))
            self.aliens.append(Alien(self, i * 100 + 100, 250,self.gamestate-1))
            self.aliens.append(Alien(self, i * 100 + 100, 300,self.gamestate-1))
            self.aliens.append(Alien(self, i * 100 + 100, 350,self.gamestate-1))

        self.rand_opp = 6*self.opp

        for i in range(0,5):
            self.walls.append(Wall(self,80+i*340))

        channel_game = pygame.mixer.Channel(1)
        channel_game2 = pygame.mixer.Channel(2)
        channel_game3 = pygame.mixer.Channel(3)

        self.background = pygame.image.load("tlo3.jpg")

        self.text = open("score").readline()

        while self.gamestate !=0:

            if self.rand_opp != 0:
                los = random.randrange(self.rand_opp)
            else:
                los = 0
            # obsługa zdarzen
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_p:
                    self.pause *= -1
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE and self.ammo_number != 0:
                    self.bullets.append(Bullet(self,self.player.pos[0]+23,self.player.pos[1]))
                    channel_game3.play(pygame.mixer.Sound("mygun.wav"))
                    channel_game3.set_volume(0.5)
                elif (self.lives_number == 0 or self.ammo_number <= 0 or self.tooClose == True) and event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN:
                    self.gamestate = 0
                elif len(self.aliens) == 0 and event.type == pygame.KEYDOWN and event.key == pygame.K_RETURN:
                    self.gamestate += 1
                    Game(self.gamestate,self.score_number,self.ammo_number)
                    self.text = open("score").readline()
                    self.gamestate = 0
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE and self.pause == -1:
                    self.gamestate = 0
                elif event.type == pygame.KEYDOWN and event.key == pygame.K_p and self.pause == -1:
                    self.pause *= -1





            #ticking
            self.tps_delta += self.tps_clock.tick() / 1000.0
            self.shot += self.tps_clock.tick()+0.000000003*(self.gamestate-1) / 1.0
            self.supertime += self.tps_clock.tick() / 1.0

            while self.tps_delta > 1 / self.tps_max:
                self.tick()
                self.tps_delta -= 1 / self.tps_max

            while(self.shot >= 0.001 / self.tps_max and len(self.aliens)!=0 and (self.lives_number != 0 and self.ammo_number > 0) and self.tooClose == False and self.pause == 1):
                self.shot = 0
                channel_game.play(pygame.mixer.Sound("shot.wav"))
                channel_game.set_volume(0.5)
                self.alienbulets.append(AlienBullet(self,self.aliens[los].x,self.aliens[los].y))

            while self.supertime >= 0.001 / self.tps_max:
                self.supertime = -2
                if(len(self.superalien)==0 and self.tooClose == False and self.lives_number !=0 and self.ammo_number > 0 and self.pause == 1):
                    self.superalien.append(SuperAlien(self))
                    channel_game2.play(pygame.mixer.Sound("supersound.wav"))
                    channel_game2.set_volume(0.3)

            #rendering
            self.screen.fill((0, 0, 0))
            self.screen.blit(self.background, (0, 0))
            self.draw()
            pygame.display.flip()