Example #1
0
class Game(Mode):
    def __init__(self,screen):
        Mode.__init__(self,screen)
        #create a loading screen
        Loading(screen)
        self.loading = True
        
        #border color
        self.surface.fill((0,0,0))
        
        screen.blit(self.surface,(0,0))
        #create border at top and bottom
        self.game_dimension = (screen.get_size()[0],screen.get_size()[1]*0.75)
        self.game_surface = pygame.Surface(self.game_dimension)
        
        #MUST BE FIXED
        self.stage = Stage(self.game_dimension)
        self.stage.load_stage('Intro')
        self.map = self.stage.rooms[0]
        

        #133442__klankbeeld__horror-ambience-11.wav
        pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=4096)
        
        
        
        self.fade = Fade(screen,'in',3)
        #add player
        self.player = Player(self.map.spawn_x,self.map.spawn_y,self.map.entity)
        
        self.map.entity.append(self.player)
        self.shade = Shade(self.player,0,self.fade.surface)
        #test
        self.loading = False
        self.next_before = True
    
    def exit_stage(self):
        self.loading = True
        self.fade.switch_mode()
    
    def next_stage(self):

        if self.fade.done:
            self.fade.switch_mode()
            self.player.stage += self.next_before
            
            self.map = self.stage.rooms[self.player.stage]
            if self.player.stage == 5:
                self.next_before = 0 
                self.player.brightness = 0
                return
            self.player.set_spawn(self.map.spawn_x,self.map.spawn_y)
            self.player.place(self.map.entity)
            self.loading = False
            
            if self.player.stamina_regen:
                self.player.stamina_reset()
            
#             if self.player.stage > 0:
#                 self.shade = Shade(self.player,self.player.stage,self.fade.surface)
#             else:
#                 self.shade = Shade(self.player,0,self.fade.surface)
#        
            self.bgm = pygame.mixer.Sound(os.path.join('data','music',"wind.wav"))
            self.bgm2 = pygame.mixer.Sound(os.path.join('data','music',"horror_converted.ogg"))
            self.bgm3 = pygame.mixer.Sound(os.path.join('data','music',"stomping.ogg"))
            if self.player.stage == 0:
                self.bgm.stop()
                self.bgm2.stop()
                #self.bgm.fadeout(1000)
            if self.player.stage == 1:
                
                self.bgm.play(loops = -1,fade_ms = 10000)
                
            if self.player.stage == 3:
                
                self.bgm2.play(loops = -1,fade_ms = 10000)
            if self.player.stage < 3:
                self.bgm2.stop()
                
            if self.player.stage == 4:
                self.bgm3.play(loops = -1, fade_ms = 5000)
                
            if self.player.stage < 4:
                self.bgm3.stop()
    
    def set_button(self,button,state):
        self.player.inputhandler.button_list[button] = state
        
    def tick(self,events):
        
        if self.loading:
            if self.fade.loop():
                if self.next_before != 0:
                    self.next_stage()
                for e in events:
                    if e.type == KEYDOWN:
                        if e.key == K_ESCAPE:
                            sys.exit()
        else:
            if self.player.out_of_screen(self.map.map_size):
                self.player.status['health'].current = 0
                

            
            self.player.interacting = False
            
            for e in self.map.entity:
                if e.dead:
                    self.map.entity.remove(e)
            for e in events:
                if e.type == KEYDOWN:
                    if e.key == K_RIGHT:
                        self.set_button('right',True)
                    if e.key == K_LEFT:
                        self.set_button('left',True)
                    if e.key == K_UP:
                        self.set_button('up',True)
                        self.player.jumping = True
                    if e.key == K_LSHIFT:
                        self.set_button('sprint',True)
                    if e.key == K_DOWN:
                        self.set_button('down',True)
                    if e.key == K_z:
                        self.set_button('jump',True)    
                    if e.key == K_x:
                        self.set_button('low_jump',True)
                    if e.key == K_r:
                        self.player.reset(self.map.entity)
                    if e.key == K_t:
                        self.player.admin = not self.player.admin
                    if e.key == K_TAB:
                        self.player.running = not self.player.running
                    if e.key == K_RETURN:
                        self.player.interacting = True
                    
                    if e.key == K_RIGHTBRACKET:
                        self.next_before = 1
                        self.exit_stage()
                        
                        
                    if e.key == K_LEFTBRACKET:
                        self.next_before = -1
                        self.exit_stage()
                    
                    if e.key == K_ESCAPE:
                        return 'Menu'
    
                elif e.type == KEYUP:
                    if e.key == K_RIGHT:
                        self.set_button('right',False)
                    if e.key == K_LEFT:
                        self.set_button('left',False)
                    if e.key == K_LSHIFT:
                        self.set_button('sprint',False)
                    if e.key == K_UP:
                        self.set_button('up',False)
                    if e.key == K_DOWN:
                        self.set_button('down',False)
                    if e.key == K_z:
                        self.set_button('jump',False)    
                elif e.type == QUIT:
                    pygame.display.quit()
                    sys.exit()
                    
            if self.map.previous_stage != None:
                if pygame.sprite.collide_rect(self.player, self.map.previous_stage) and not self.loading and self.player.interacting:
                    self.next_before = -1
                    self.exit_stage()
                    
            if pygame.sprite.collide_rect(self.player, self.map.next_stage) and not self.loading and self.player.interacting:
                self.next_before = 1
                self.exit_stage()   
                     
            for i in self.map.interactables:
                if pygame.sprite.collide_rect(self.player, i) and self.player.interacting and not self.loading:
                    self.interacting = False
                    return 'Shop'
                
            for c in self.map.coins:
                if pygame.sprite.collide_rect(self.player, c):
                    self.map.coins[self.map.coins.index(c)].dead = True
                    self.map.coins.remove(c)
                    self.player.status['money'].gain(10)
                    coin= pygame.mixer.Sound(os.path.join('data','music',"coin_flip.wav"))
                    coin.play()
                    
                     
            self.fade.loop()
            self.map.camera.update(self.player)
            if not self.player.dead:
                if not self.player.admin:
                    self.player.tick(self.map.platforms,self.map.entity)
                elif self.player.admin:
                    self.player.admin_tick()
                
        

            


    
    def render(self,screen):
        self.layer_1(screen)
        self.layer_2(screen)
        self.layer_3(screen)
        self.layer_4(screen)
        self.layer_5(screen)
    
    def __str__(self):
        return 'Game'
    
    #background
    def layer_1(self,screen):
        Mode.render(self,screen)
    #map obstacles + player
    def layer_2(self,screen):
        
        self.game_surface.fill((255,255,255))
        for e in self.map.entity:
            self.game_surface.blit(e.image, self.map.camera.apply(e))
        screen.blit(self.game_surface,(0,screen.get_size()[1]*0.125))
    #player status       
    def layer_3(self,screen):
        for s in self.player.status.values():
            s.render(screen)
    #fade in/out    
    def layer_4(self,screen):
        screen.blit(self.fade.surface,(0,0))
        
    def layer_5(self,screen):
        self.shade = Shade(self.player, self.player.stage * self.player.brightness,screen)
        #self.shade.loop(self.player)
        screen.blit(self.shade.surface,(0,(self.shade.surface.get_size()[1] - self.game_dimension[1])//2))
Example #2
0
class Game(Mode):
    def __init__(self, screen):
        Mode.__init__(self, screen)
        #create a loading screen
        Loading(screen)
        #now do all the intial stuff
        self.surface.fill((0, 0, 0))
        screen.blit(self.surface, (0, 0))
        #create border at top and bottom
        game_dimension = (screen.get_size()[0], screen.get_size()[1] * 0.75)
        self.game_surface = pygame.Surface(game_dimension)

        self.stage = Stage(game_dimension)
        self.stage.load_stage('round_1')
        self.map = self.stage.rooms[0]
        self.fade = Fade(screen, 'in', 3)
        #add player
        self.player = Player(self.map.spawn_x, self.map.spawn_y,
                             self.map.entity)

        self.map.entity.append(self.player)

    def set_button(self, button, state):
        self.player.inputhandler.button_list[button] = state

    def tick(self, events):

        for e in self.map.entity:
            if e.dead:
                self.map.entity.remove(e)
        for e in events:
            if e.type == KEYDOWN:
                if e.key == K_RIGHT:
                    self.set_button('right', True)
                if e.key == K_LEFT:
                    self.set_button('left', True)
                if e.key == K_UP:
                    self.set_button('up', True)
                    self.player.jumping = True
                if e.key == K_LSHIFT:
                    self.set_button('sprint', True)
                if e.key == K_DOWN:
                    self.set_button('down', True)
                if e.key == K_z:
                    self.set_button('jump', True)
                if e.key == K_r:
                    self.player.reset(self.map.entity)
                if e.key == K_t:
                    self.player.admin = not self.player.admin
                if e.key == K_TAB:
                    self.player.running = not self.player.running

                if e.key == K_ESCAPE:
                    return 'Menu'

            elif e.type == KEYUP:
                if e.key == K_RIGHT:
                    self.set_button('right', False)
                if e.key == K_LEFT:
                    self.set_button('left', False)
                if e.key == K_LSHIFT:
                    self.set_button('sprint', False)
                if e.key == K_UP:
                    self.set_button('up', False)
                if e.key == K_DOWN:
                    self.set_button('down', False)
                if e.key == K_z:
                    self.set_button('jump', False)
            elif e.type == QUIT:
                pygame.display.quit()
                sys.exit()
        self.fade.loop()
        self.map.camera.update(self.player)
        if not self.player.dead:
            if not self.player.admin:
                self.player.tick(self.map.platforms, self.map.entity)
            elif self.player.admin:
                self.player.admin_tick()

    def render(self, screen):
        self.layer_1(screen)
        self.layer_2(screen)
        self.layer_3(screen)
        self.layer_4(screen)

    def __str__(self):
        return 'Game'

    def layer_1(self, screen):
        Mode.render(self, screen)

    def layer_2(self, screen):

        self.game_surface.fill((255, 255, 255))
        for e in self.map.entity:
            self.game_surface.blit(e.image, self.map.camera.apply(e))
        screen.blit(self.game_surface, (0, screen.get_size()[1] * 0.125))

    def layer_3(self, screen):
        for s in self.player.status.values():
            s.render(screen)

    def layer_4(self, screen):
        screen.blit(self.fade.surface, (0, 0))
Example #3
0
class Game(Mode):
    def __init__(self,screen):
        Mode.__init__(self,screen)
        #create a loading screen
        Loading(screen)
        #now do all the intial stuff
        self.surface.fill((0,0,0))
        screen.blit(self.surface,(0,0))
        #create border at top and bottom
        game_dimension = (screen.get_size()[0],screen.get_size()[1]*0.75)
        self.game_surface = pygame.Surface(game_dimension)
        
        self.stage = Stage(game_dimension)
        self.stage.load_stage('round_1')
        self.map = self.stage.rooms[0]
        self.fade = Fade(screen,'in',3)
        #add player
        self.player = Player(self.map.spawn_x,self.map.spawn_y,self.map.entity)
        
        self.map.entity.append(self.player)
        
        
        
            
    
    def set_button(self,button,state):
        self.player.inputhandler.button_list[button] = state
        
    def tick(self,events):
        
        for e in self.map.entity:
            if e.dead:
                self.map.entity.remove(e)
        for e in events:
            if e.type == KEYDOWN:
                if e.key == K_RIGHT:
                    self.set_button('right',True)
                if e.key == K_LEFT:
                    self.set_button('left',True)
                if e.key == K_UP:
                    self.set_button('up',True)
                    self.player.jumping = True
                if e.key == K_LSHIFT:
                    self.set_button('sprint',True)
                if e.key == K_DOWN:
                    self.set_button('down',True)
                if e.key == K_z:
                    self.set_button('jump',True)    
                if e.key == K_r:
                    self.player.reset(self.map.entity)
                if e.key == K_t:
                    self.player.admin = not self.player.admin
                if e.key == K_TAB:
                    self.player.running = not self.player.running
                
                if e.key == K_ESCAPE:
                    return 'Menu'

            elif e.type == KEYUP:
                if e.key == K_RIGHT:
                    self.set_button('right',False)
                if e.key == K_LEFT:
                    self.set_button('left',False)
                if e.key == K_LSHIFT:
                    self.set_button('sprint',False)
                if e.key == K_UP:
                    self.set_button('up',False)
                if e.key == K_DOWN:
                    self.set_button('down',False)
                if e.key == K_z:
                    self.set_button('jump',False)    
            elif e.type == QUIT:
                pygame.display.quit()
                sys.exit()
        self.fade.loop()
        self.map.camera.update(self.player)
        if not self.player.dead:
            if not self.player.admin:
                self.player.tick(self.map.platforms,self.map.entity)
            elif self.player.admin:
                self.player.admin_tick()
    
    def render(self,screen):
        self.layer_1(screen)
        self.layer_2(screen)
        self.layer_3(screen)
        self.layer_4(screen)
    
    def __str__(self):
        return 'Game'
    
    def layer_1(self,screen):
        Mode.render(self,screen)
    
    def layer_2(self,screen):
        
        self.game_surface.fill((255,255,255))
        for e in self.map.entity:
            self.game_surface.blit(e.image, self.map.camera.apply(e))
        screen.blit(self.game_surface,(0,screen.get_size()[1]*0.125))
            
    def layer_3(self,screen):
        for s in self.player.status.values():
            s.render(screen)
        
    def layer_4(self,screen):
        screen.blit(self.fade.surface,(0,0))
Example #4
0
class Game(Mode):
    def __init__(self, screen):
        Mode.__init__(self, screen)
        #create a loading screen
        Loading(screen)
        self.loading = True

        #border color
        self.surface.fill((0, 0, 0))

        screen.blit(self.surface, (0, 0))
        #create border at top and bottom
        self.game_dimension = (screen.get_size()[0],
                               screen.get_size()[1] * 0.75)
        self.game_surface = pygame.Surface(self.game_dimension)

        #MUST BE FIXED
        self.stage = Stage(self.game_dimension)
        self.stage.load_stage('Intro')
        self.map = self.stage.rooms[0]

        #133442__klankbeeld__horror-ambience-11.wav
        pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=4096)

        self.fade = Fade(screen, 'in', 3)
        #add player
        self.player = Player(self.map.spawn_x, self.map.spawn_y,
                             self.map.entity)

        self.map.entity.append(self.player)
        self.shade = Shade(self.player, 0, self.fade.surface)
        #test
        self.loading = False
        self.next_before = True

    def exit_stage(self):
        self.loading = True
        self.fade.switch_mode()

    def next_stage(self):

        if self.fade.done:
            self.fade.switch_mode()
            self.player.stage += self.next_before

            self.map = self.stage.rooms[self.player.stage]
            if self.player.stage == 5:
                self.next_before = 0
                self.player.brightness = 0
                return
            self.player.set_spawn(self.map.spawn_x, self.map.spawn_y)
            self.player.place(self.map.entity)
            self.loading = False

            if self.player.stamina_regen:
                self.player.stamina_reset()

#             if self.player.stage > 0:
#                 self.shade = Shade(self.player,self.player.stage,self.fade.surface)
#             else:
#                 self.shade = Shade(self.player,0,self.fade.surface)
#
            self.bgm = pygame.mixer.Sound(
                os.path.join('data', 'music', "wind.wav"))
            self.bgm2 = pygame.mixer.Sound(
                os.path.join('data', 'music', "horror_converted.ogg"))
            self.bgm3 = pygame.mixer.Sound(
                os.path.join('data', 'music', "stomping.ogg"))
            if self.player.stage == 0:
                self.bgm.stop()
                self.bgm2.stop()
                #self.bgm.fadeout(1000)
            if self.player.stage == 1:

                self.bgm.play(loops=-1, fade_ms=10000)

            if self.player.stage == 3:

                self.bgm2.play(loops=-1, fade_ms=10000)
            if self.player.stage < 3:
                self.bgm2.stop()

            if self.player.stage == 4:
                self.bgm3.play(loops=-1, fade_ms=5000)

            if self.player.stage < 4:
                self.bgm3.stop()

    def set_button(self, button, state):
        self.player.inputhandler.button_list[button] = state

    def tick(self, events):

        if self.loading:
            if self.fade.loop():
                if self.next_before != 0:
                    self.next_stage()
                for e in events:
                    if e.type == KEYDOWN:
                        if e.key == K_ESCAPE:
                            sys.exit()
        else:
            if self.player.out_of_screen(self.map.map_size):
                self.player.status['health'].current = 0

            self.player.interacting = False

            for e in self.map.entity:
                if e.dead:
                    self.map.entity.remove(e)
            for e in events:
                if e.type == KEYDOWN:
                    if e.key == K_RIGHT:
                        self.set_button('right', True)
                    if e.key == K_LEFT:
                        self.set_button('left', True)
                    if e.key == K_UP:
                        self.set_button('up', True)
                        self.player.jumping = True
                    if e.key == K_LSHIFT:
                        self.set_button('sprint', True)
                    if e.key == K_DOWN:
                        self.set_button('down', True)
                    if e.key == K_z:
                        self.set_button('jump', True)
                    if e.key == K_x:
                        self.set_button('low_jump', True)
                    if e.key == K_r:
                        self.player.reset(self.map.entity)
                    if e.key == K_t:
                        self.player.admin = not self.player.admin
                    if e.key == K_TAB:
                        self.player.running = not self.player.running
                    if e.key == K_RETURN:
                        self.player.interacting = True

                    if e.key == K_RIGHTBRACKET:
                        self.next_before = 1
                        self.exit_stage()

                    if e.key == K_LEFTBRACKET:
                        self.next_before = -1
                        self.exit_stage()

                    if e.key == K_ESCAPE:
                        return 'Menu'

                elif e.type == KEYUP:
                    if e.key == K_RIGHT:
                        self.set_button('right', False)
                    if e.key == K_LEFT:
                        self.set_button('left', False)
                    if e.key == K_LSHIFT:
                        self.set_button('sprint', False)
                    if e.key == K_UP:
                        self.set_button('up', False)
                    if e.key == K_DOWN:
                        self.set_button('down', False)
                    if e.key == K_z:
                        self.set_button('jump', False)
                elif e.type == QUIT:
                    pygame.display.quit()
                    sys.exit()

            if self.map.previous_stage != None:
                if pygame.sprite.collide_rect(
                        self.player, self.map.previous_stage
                ) and not self.loading and self.player.interacting:
                    self.next_before = -1
                    self.exit_stage()

            if pygame.sprite.collide_rect(
                    self.player, self.map.next_stage
            ) and not self.loading and self.player.interacting:
                self.next_before = 1
                self.exit_stage()

            for i in self.map.interactables:
                if pygame.sprite.collide_rect(
                        self.player,
                        i) and self.player.interacting and not self.loading:
                    self.interacting = False
                    return 'Shop'

            for c in self.map.coins:
                if pygame.sprite.collide_rect(self.player, c):
                    self.map.coins[self.map.coins.index(c)].dead = True
                    self.map.coins.remove(c)
                    self.player.status['money'].gain(10)
                    coin = pygame.mixer.Sound(
                        os.path.join('data', 'music', "coin_flip.wav"))
                    coin.play()

            self.fade.loop()
            self.map.camera.update(self.player)
            if not self.player.dead:
                if not self.player.admin:
                    self.player.tick(self.map.platforms, self.map.entity)
                elif self.player.admin:
                    self.player.admin_tick()

    def render(self, screen):
        self.layer_1(screen)
        self.layer_2(screen)
        self.layer_3(screen)
        self.layer_4(screen)
        self.layer_5(screen)

    def __str__(self):
        return 'Game'

    #background
    def layer_1(self, screen):
        Mode.render(self, screen)

    #map obstacles + player
    def layer_2(self, screen):

        self.game_surface.fill((255, 255, 255))
        for e in self.map.entity:
            self.game_surface.blit(e.image, self.map.camera.apply(e))
        screen.blit(self.game_surface, (0, screen.get_size()[1] * 0.125))

    #player status
    def layer_3(self, screen):
        for s in self.player.status.values():
            s.render(screen)

    #fade in/out
    def layer_4(self, screen):
        screen.blit(self.fade.surface, (0, 0))

    def layer_5(self, screen):
        self.shade = Shade(self.player,
                           self.player.stage * self.player.brightness, screen)
        #self.shade.loop(self.player)
        screen.blit(
            self.shade.surface,
            (0,
             (self.shade.surface.get_size()[1] - self.game_dimension[1]) // 2))