Exemplo n.º 1
0
class GameCounter():
    def __init__(self):
        self.background = pygame.image.load('resources/background_pause.png').convert_alpha()

        self.counter = 10000
        self.state = True
        self.timer = Timer()

        self.font = pygame.font.Font('resources/ThrowMyHandsUpintheAirBold.ttf',300)
        self.text_counter = Text(self.font,self.counter,(255,255,255),SCREEN_WIDTH/2,SCREEN_HEIGHT/2)

        self.timer.start()

    def update(self,screen):
        while self.state:
            self.counter -= self.timer.time() * 100

            if self.counter < 0:
                self.state = False
                self.timer.stop()
                scene.timer.start()

            #make text in update, why is a object that renew
            self.text_counter = Text(self.font,int(math.ceil(self.counter/4000)),(255,255,255),SCREEN_WIDTH/2,SCREEN_HEIGHT/2)
            self._draw(screen)

    def _draw(self,screen):
        #Doesnt loss images of previous scene
        screen.blit(scene.background,(0,0))
        screen.blit(scene.title_shadow,(0,0))
        scene.level_title.draw(screen)

        screen.blit(self.background,(0,0))
        self.text_counter.draw(screen)
        pygame.display.flip()
Exemplo n.º 2
0
class Game():
    def __init__(self, level, continent, difficult):
        self.level = level
        self.continent = continent
        self.difficult = difficult

        self.current_rating_level = int(levels_rating[self.continent+self.difficult][str(self.level)])
        #Colors
        self.black = (0,0,0)
        self.white = (255,255,255)

        self.background = pygame.image.load('resources/levels/'+self.continent+'/bglevel'+str(self.level)+'.jpg').convert()
        self.name = Configuration.level_name_json(languageID, self.continent, self.level)

        self.font = pygame.font.Font('resources/ThrowMyHandsUpintheAirBold.ttf',35)
        self.level_title = Text(self.font,self.name,self.black,SCREEN_WIDTH/3+40,30)

        #Timer
        self.timer = Timer()

        self.tweener = pytweener.Tweener()

        self.star = Star(self.difficult)
        self.button_returnmenu = Button('resources/button_returnmenu.png',830,30)
        self.button_playreboot = Button('resources/button_playreboot.png',900,30)
        self.button_pause = Button('resources/button_pause.png',970,30)

        self.sprites = pygame.sprite.Group()
        self.sprites.add(self.button_returnmenu)
        self.sprites.add(self.button_playreboot)
        self.sprites.add(self.button_pause)

        self.title_shadow = pygame.image.load('resources/sombra_titulo_'+self.difficult+'.png').convert_alpha()

        #Pause instance
        self.pause = Pause()

        #Game_Counter instance
        self.game_counter = GameCounter()

        self.clock = pygame.time.Clock()

    def update(self):
        for event in pygame.event.get():
            if event.type == QUIT:
                exit()
            elif event.type == MOUSEBUTTONDOWN:
                if self.button_returnmenu.rect.collidepoint(event.pos[0],event.pos[1]):
                    levelsselector_start(self.continent,self.difficult)
                if self.button_pause.rect.collidepoint(event.pos[0],event.pos[1]):
                    self.timer.stop()
                    self.pause.status = True
                if self.button_playreboot.rect.collidepoint(event.pos[0],event.pos[1]):
                    game_start(self.level,self.continent,self.difficult)
                if (self.star.rect.collidepoint(event.pos[0],event.pos[1])
                    and not self.star.move):
                    if android:
                        android.vibrate(1)
                    self.star.change_state()
                    self.tweener.addTween(self.star,x=1024,tweenTime=1, tweenType=pytweener.Easing.Elastic.easeIn)
                    if self.timer.time()<=4:
                        #Write rating of level and total rating of continent
                        levels_rating[self.continent+self.difficult][str(self.level)] = "3"
                        Configuration.override_rating_json(levels_rating)
                        self.level_goal = LevelGoal(3)
                    elif self.timer.time()>4 and self.timer.time()<= 6:
                        if not self.current_rating_level == 3:
                            levels_rating[self.continent+self.difficult][str(self.level)] = "2"
                            Configuration.override_rating_json(levels_rating)
                        self.level_goal = LevelGoal(2)
                    elif self.timer.time()> 6:
                        if (not self.current_rating_level == 2 or
                            not self.current_rating_level == 3):
                            levels_rating[self.continent+self.difficult][str(self.level)] = "1"
                            Configuration.override_rating_json(levels_rating)
                        self.level_goal = LevelGoal(1)
                    self.timer.stop()

        #print self.timer.time()
        self.timer.time()
        self.dt = self.clock.tick(60)
        self.tweener.update(self.dt/1000.0)

    def draw(self,screen):
        screen.blit(self.background,(0,0))
        screen.blit(self.title_shadow,(0,0))
        self.level_title.draw(screen)
        self.sprites.draw(screen)

        screen.blit(self.star.image,(self.star.x,self.star.y))

        pygame.display.flip()
        #Instance pause with funcion update. Parameters: screen. __draw()
        self.pause.update(screen)

        #Instance GameCounter with funcion update. Parameters: screen. __draw()
        self.game_counter.update(screen)

        #Instance LevelGoal with funcion update. Parameters: screen. __draw()
        if self.star.x > 1000:
            self.level_goal.state = True
            self.level_goal.update(screen)
Exemplo n.º 3
0
class Juego():
    def __init__(self):
        self.fondo1 = Fondo(0)
        self.fondo2 = Fondo(800) 

        self.fondo_pelicula = pygame.image.load("datos/fondopelicula.png")
        self.alerta = pygame.image.load("datos/alerta.png") 

        #Grupos
        self.sprites = pygame.sprite.Group()
        self.misiles = pygame.sprite.Group()
        self.disparos = pygame.sprite.Group()
        self.disparos_jefe = pygame.sprite.Group()
        self.enemigos = pygame.sprite.Group()
        self.disparos_extra = pygame.sprite.Group()
        self.misiles_extra = pygame.sprite.Group()
        self.armaextra_extra = pygame.sprite.Group()
        self.superpoder = pygame.sprite.GroupSingle()
        self.nuevo_jefe_grupo = pygame.sprite.GroupSingle()

        self.nave = NaveChus(self.sprites,self.disparos,self.misiles,self.superpoder)
        self.sprites.add(self.nave)

        #Contadores creación de objetos
        self.contador_disparos_extra = 0
        self.contador_misiles_extra = 0
        self.contador_armaextra_extra = 0
        self.contador_enemigosrojos = 0
        self.contador_enemigosazules = 0

        self.vidas = 1
        self.puntos = 0

        self.fuente = pygame.font.Font(None,40)

        self.escudo_surface = self.fuente.render("Escudo ",1,(255,255,255))

        pygame.mixer.music.load("datos/musica/nivel1.wav")
        pygame.mixer.music.play(-1)

        self.nuevo_jefe = None

        #Creacion de temporizador
        self.temporizador = Timer()
        self.temporizador.start()

    def update(self):
        self.fondo1.update()
        self.fondo2.update()

    	for evento in pygame.event.get():
    		if evento.type == QUIT or evento.type == KEYDOWN and evento.key == K_ESCAPE:
    			exit()
        
        if self.temporizador.time() > 4: 
            #Creación de disparos extra
            self.contador_disparos_extra += 2
            if self.contador_disparos_extra >= 300:
                self.nuevo_disparoextra =ExtraDisparo()
                self.sprites.add(self.nuevo_disparoextra)
                self.disparos_extra.add(self.nuevo_disparoextra)
                self.contador_disparos_extra = 0

            #Creación de misiles extra
            self.contador_misiles_extra += 1
            if self.contador_misiles_extra >= 350:
                self.nuevo_misilextra = ExtraMisil()
                self.sprites.add(self.nuevo_misilextra)
                self.misiles_extra.add(self.nuevo_misilextra)
                self.contador_misiles_extra = 0

            #Creación de armas extras
            self.contador_armaextra_extra +=2
            if self.contador_armaextra_extra >= 320:
                self.nuevo_armaextra = ExtraArmaExtra()
                self.sprites.add(self.nuevo_armaextra)
                self.armaextra_extra.add(self.nuevo_armaextra)
                self.contador_armaextra_extra = 0

            if self.temporizador.time() < 60:
                #Creación de enemigos rojos
                self.contador_enemigosrojos +=4
                if self.contador_enemigosrojos >= 80:
                    self.nuevo_enemigorojo = EnemigoRojo(random.randint(500,1000),random.randint(-150,-20),"diagonal_superior_derecha")
                    self.sprites.add(self.nuevo_enemigorojo)
                    self.enemigos.add(self.nuevo_enemigorojo)
                    self.contador_enemigosrojos = 0

                #Creación de enemigos azules
                self.contador_enemigosazules +=4
                if self.contador_enemigosazules >= 80:
                    self.nuevo_enemigoazul = EnemigoAzul(random.randint(500,1000),random.randint(850,870),"diagonal_inferior_derecha")
                    self.sprites.add(self.nuevo_enemigoazul)
                    self.enemigos.add(self.nuevo_enemigoazul)
                    self.contador_enemigosazules = 0

        if self.temporizador.time() > 60 and self.temporizador.time() < 180:
            #Creación de enemigos rojos
            self.contador_enemigosrojos +=3
            if self.contador_enemigosrojos >= 80:
                self.nuevo_enemigorojo = EnemigoRojo(850,250,"recta")
                self.sprites.add(self.nuevo_enemigorojo)
                self.enemigos.add(self.nuevo_enemigorojo)
                self.contador_enemigosrojos = 0

            #Creación de enemigos azules
            self.contador_enemigosazules +=3
            if self.contador_enemigosazules >= 80:
                self.nuevo_enemigoazul = EnemigoAzul(850,300,"recta")
                self.sprites.add(self.nuevo_enemigoazul)
                self.enemigos.add(self.nuevo_enemigoazul)
                self.contador_enemigosazules = 0

        if self.temporizador.time() > 80 and self.temporizador.time() < 150:
            #Creación de enemigos rojos
            self.contador_enemigosrojos +=4
            if self.contador_enemigosrojos >= 80:
                self.nuevo_enemigorojo = EnemigoRojo(40,620,"diagonal_inferior_izquierda")
                self.sprites.add(self.nuevo_enemigorojo)
                self.enemigos.add(self.nuevo_enemigorojo)
                self.contador_enemigosrojos = 0

            #Creación de enemigos azules
            self.contador_enemigosazules +=4
            if self.contador_enemigosazules >= 80:
                self.nuevo_enemigoazul = EnemigoAzul(40,-20,"diagonal_superior_izquierda")
                self.sprites.add(self.nuevo_enemigoazul)
                self.enemigos.add(self.nuevo_enemigoazul)
                self.contador_enemigosazules = 0    

        if self.temporizador.time() > 180 and self.temporizador.time() < 250:
            #Creación de enemigos rojos
            self.contador_enemigosrojos +=4
            if self.contador_enemigosrojos >= 80:
                self.nuevo_enemigorojo = EnemigoRojo(400,-20,"vertical_abajo")
                self.sprites.add(self.nuevo_enemigorojo)
                self.enemigos.add(self.nuevo_enemigorojo)
                self.contador_enemigosrojos = 0

            #Creación de enemigos azules
            self.contador_enemigosazules +=4
            if self.contador_enemigosazules >= 80:
                self.nuevo_enemigoazul = EnemigoAzul(500,620,"vertical_arriba")
                self.sprites.add(self.nuevo_enemigoazul)
                self.enemigos.add(self.nuevo_enemigoazul)
                self.contador_enemigosazules = 0   

        if self.temporizador.time()>2 and self.nuevo_jefe==None:
            self.nuevo_jefe = EnemigoJefe(self.sprites, self.enemigos)
            self.sprites.add(self.nuevo_jefe)
            self.nuevo_jefe_grupo.add(self.nuevo_jefe)

        #Colisiones
        for colision in pygame.sprite.spritecollide(self.nave,self.disparos_extra,1):
            self.nave.agregar_disparo()

        for colision in pygame.sprite.spritecollide(self.nave,self.misiles_extra,1):
            self.nave.agregar_misil()

        for colision in pygame.sprite.spritecollide(self.nave,self.armaextra_extra,1):
            pass

        if self.nave.puede_chocar() and not self.nave.estado_inmune:
            for colision in pygame.sprite.spritecollide(self.nave,self.enemigos,1):
                (x,y) = colision.rect.center
                self.nueva_explosion = Explosion((x,y))
                self.sprites.add(self.nueva_explosion)
                self.nave.set_invisible()
            if self.nuevo_jefe:
                for colision in pygame.sprite.spritecollide(self.nave,self.nuevo_jefe_grupo,0):
                    self.nave.set_invisible()

        if self.nuevo_jefe!=None:
            for colision in pygame.sprite.spritecollide(self.nuevo_jefe,self.disparos,1):
                self.nuevo_jefe.vida -= random.randint(1,3)
                (x,y) = colision.rect.center
                self.nueva_explosion = Explosion((x,y))
                self.sprites.add(self.nueva_explosion)
                self.puntos+=random.randint(12,18) 

            for colision in pygame.sprite.spritecollide(self.nuevo_jefe,self.misiles,1):
                self.nuevo_jefe.vida -= random.randint(5,9)
                (x,y) = colision.rect.center
                self.nueva_explosion = Explosion((x,y))
                self.sprites.add(self.nueva_explosion)
                self.puntos+=random.randint(15,22)   

            for colision in pygame.sprite.spritecollide(self.nuevo_jefe,self.superpoder,1):
                self.nuevo_jefe.vida -= random.randint(2,4)
                self.puntos+=random.randint(13,17)    

        for colision in pygame.sprite.groupcollide(self.enemigos,self.superpoder,1,1):
            (x,y) = colision.rect.center
            self.nueva_explosion = Explosion((x,y))
            self.nueva_explosion.sonido.play()
            self.sprites.add(self.nueva_explosion)
            self.puntos+=random.randint(8,10)

        for colision in pygame.sprite.groupcollide(self.disparos,self.enemigos,1,1):
            (x,y) = colision.rect.center
            self.nueva_explosion = Explosion((x,y))
            self.nueva_explosion.sonido.play()
            self.sprites.add(self.nueva_explosion)
            self.puntos+=random.randint(8,10)

        for colision in pygame.sprite.groupcollide(self.misiles,self.enemigos,1,1):
            (x,y) = colision.rect.center
            self.nueva_explosion = Explosion((x,y))
            self.nueva_explosion.sonido.play()
            self.sprites.add(self.nueva_explosion)
            self.puntos+=random.randint(8,10)      

        self.vidas_surface = self.fuente.render("Vidas "+str(self.vidas),1,(255,255,255))
        self.puntos_surface = self.fuente.render("Puntos "+str(self.puntos),1,(255,255,255))

        self.sprites.update()

    def imprimir(self,screen):
        screen.blit(self.fondo1.image,self.fondo1.rect)
        screen.blit(self.fondo2.image,self.fondo2.rect)
        self.sprites.draw(screen)
        screen.blit(self.fondo_pelicula,(0,0))
        screen.blit(self.vidas_surface,(100,20))
        screen.blit(self.puntos_surface,(500,20))
        screen.blit(self.escudo_surface,(100,520))
        if self.nuevo_jefe!=None:
            screen.blit(self.nuevo_jefe.vida_surface,(self.nuevo_jefe.rect.x,self.nuevo_jefe.rect.y-20))     

    	pygame.display.flip()