示例#1
0
    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
示例#2
0
    def extended_fade_in(self, segment, duration):
        """Add a fade-in to a segment that extends the beginning of the
        segment.

        :param segment: Segment to fade in
        :type segment: :py:class:`radiotool.composer.Segment`
        :param duration: Duration of fade-in (in seconds)
        :returns: The fade that has been added to the composition
        :rtype: :py:class:`Fade`
        """
        dur = int(duration * segment.track.samplerate)
        if segment.start - dur >= 0:
            segment.start -= dur
        else:
            raise Exception("Cannot create fade-in that extends "
                            "past the track's beginning")
        if segment.comp_location - dur >= 0:
            segment.comp_location -= dur
        else:
            raise Exception(
                "Cannot create fade-in the extends past the score's beginning")

        segment.duration += dur

        f = Fade(segment.track, segment.comp_location_in_seconds, duration,
                 0.0, 1.0)
        self.add_dynamic(f)
        return f
示例#3
0
    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
示例#4
0
    def fade_out(self, segment, duration, fade_type="linear"):
        """Adds a fade out to a segment in the composition

        :param segment: Segment to fade out
        :type segment: :py:class:`radiotool.composer.Segment`
        :param duration: Duration of fade-out (in seconds)
        :type duration: float
        :returns: The fade that has been added to the composition
        :rtype: :py:class:`Fade`
        """
        score_loc_in_seconds = segment.comp_location_in_seconds + segment.duration_in_seconds - duration

        f = Fade(segment.track, score_loc_in_seconds, duration, 1.0, 0.0, fade_type=fade_type)
        # bug fixing... perhaps
        f.comp_location = segment.comp_location + segment.duration - int(duration * segment.track.samplerate)
        self.add_dynamic(f)
        return f
示例#5
0
    def update(self):
        # atack

        if self.time_to_atack == -1 and self.in_range(
        ) and self.atack_is_ready():  # ready to atack
            self.time_to_atack = self.reaction  # time to atack
        elif self.time_to_atack > 0:  # wait to atack
            self.time_to_atack -= 1
        elif self.time_to_atack == 0:  # atack
            Atack.atack(self)
            Fade.fadein(self)
            self.time_to_atack -= 1  # goes back to ready

            # movement
        x_speed, y_speed = self.calc_direction()
        Movement.accelerate(self, x_speed, y_speed)
        Movement.update(self)
        # fade
        Fade.update(self)
示例#6
0
文件: game.py 项目: woo00154/Parkour
    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)
示例#7
0
def process(infile, day, timeid):
    try:
        page = Image.open(os.path.join('base', 'Calendar_2014.png'))
    except IOError:
        print "Cannot open calendar page base"
        return
    photo_size = (A4_WIDTH * 3 / 4, A4_HEIGHT * 3 / 8)
    fade = Fade()
    photo = fade.apply_mask(infile, photo_size)
    photo_left = (A4_WIDTH - photo_size[0]) / 2
    photo_top = 520
    photo_right = photo_left + photo_size[0]
    photo_bottom = photo_top + photo_size[1]
    photo_rect = (photo_left, photo_top, photo_right, photo_bottom)
    page.paste(photo, photo_rect)
    create_title(page, (A4_WIDTH, A4_HEIGHT), photo_rect, day, timeid)
    tools.mkdir_p(os.path.join('png', day))
    png_file = os.path.join('png', day, '{}.jpg'.format(timeid))
    page.save(png_file, quality=75)
    tools.print_image(png_file)
示例#8
0
 def __init__(self, x, y, color, size, lifes, atack_time, sec_div10,
              temporary_list, enemy_list):
     self.size = size
     self.type = -1  # just to atack function work
     self.sec_div10 = sec_div10
     self.lifes = lifes
     self.msgs_list = []  # damage and kill text displays
     # statistics
     self.type_list = []  # types of dead enemies
     self.kills = 0
     self.bombs = 0
     # self.temporary_list = temporary_list
     # self.enemy_list = enemy_list
     # Movement(x, y, max_speed, acceleration, decelerate)
     Movement.__init__(self, x, y, 1.8, 0.105, 0.955)
     #Fade(color, time_fade, start_fadein)
     Fade.__init__(self, color, 0, True)
     #Atack(x, y, atack_time, range, color, fadeout_time, sec_div10, temporary_list, enemy_list)
     Atack.__init__(self, x, y, atack_time, size * 5, color, 40, sec_div10,
                    temporary_list, enemy_list)
示例#9
0
def process(infile, day, timeid):
    try:
        page = Image.open(os.path.join('base', 'Calendar_2014.png'))
    except IOError:
        print "Cannot open calendar page base"
        return
    photo_size = (A4_WIDTH * 3 / 4, A4_HEIGHT * 3 / 8)
    fade = Fade()
    photo = fade.apply_mask(infile, photo_size)
    photo_left = (A4_WIDTH - photo_size[0]) / 2
    photo_top = 520
    photo_right = photo_left + photo_size[0]
    photo_bottom = photo_top + photo_size[1]
    photo_rect = (photo_left, photo_top, photo_right, photo_bottom)
    page.paste(photo, photo_rect)
    create_title(page, (A4_WIDTH, A4_HEIGHT), photo_rect, day, timeid)
    if not os.path.exists(os.path.join('png', day)):
        os.mkdir(os.path.join('png', day))
    png_file = os.path.join('png', day, '{}.jpg'.format(timeid))
    page.save(png_file, quality=75)
    tools.print_image(png_file)
示例#10
0
    def __init__(self, x, y, type, color, size, time_fade, sec_div10,
                 temporary_list, sub):
        self.type = type
        self.size = size
        self.sec_div10 = sec_div10
        self.sub = sub
        self.time_to_atack = -1

        # move
        max_speed, accel, decel, self.lifes = self.movem_attributes(type)
        # Movement(x, y, max_speed, acceleration, decelerate)
        Movement.__init__(self, x, y, max_speed, accel, decel)
        # fade
        #Fade(color, time_fade, start_fadein)
        Fade.__init__(self, color, time_fade, False)
        # atack
        atack_time, self.reaction, range, fadeout_time_atack = self.atack_attributes(
            type)
        #Atack(x, y, atack_time, range, color, fadeout_time, sec_div10, temporary_list, enemy_list)
        Atack.__init__(self, x, y, atack_time, range, color,
                       fadeout_time_atack, sec_div10, temporary_list, [sub])
示例#11
0
    def fade_out(self, segment, duration, fade_type="linear"):
        """Adds a fade out to a segment in the composition

        :param segment: Segment to fade out
        :type segment: :py:class:`radiotool.composer.Segment`
        :param duration: Duration of fade-out (in seconds)
        :type duration: float
        :returns: The fade that has been added to the composition
        :rtype: :py:class:`Fade`
        """
        score_loc_in_seconds = segment.comp_location_in_seconds +\
            segment.duration_in_seconds - duration

        f = Fade(segment.track,
                 score_loc_in_seconds,
                 duration,
                 1.0,
                 0.0,
                 fade_type=fade_type)
        # bug fixing... perhaps
        f.comp_location = segment.comp_location + segment.duration -\
            int(duration * segment.track.samplerate)
        self.add_dynamic(f)
        return f
示例#12
0
    def fade_in(self, segment, duration, fade_type="linear"):
        """Adds a fade in to a segment in the composition

        :param segment: Segment to fade in to
        :type segment: :py:class:`radiotool.composer.Segment`
        :param duration: Duration of fade-in (in seconds)
        :type duration: float
        :returns: The fade that has been added to the composition
        :rtype: :py:class:`Fade`
        """
        f = Fade(segment.track,
                 segment.comp_location_in_seconds,
                 duration,
                 0.0,
                 1.0,
                 fade_type=fade_type)
        self.add_dynamic(f)
        return f
示例#13
0
文件: game.py 项目: woo00154/Parkour
 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)
示例#14
0
    def extended_fade_out(self, segment, duration):
        """Add a fade-out to a segment that extends the beginning of the
        segment.

        :param segment: Segment to fade out
        :type segment: :py:class:`radiotool.composer.Segment`
        :param duration: Duration of fade-out (in seconds)
        :returns: The fade that has been added to the composition
        :rtype: :py:class:`Fade`
        """
        dur = int(duration * segment.track.samplerate)
        if segment.start + segment.duration + dur <\
                segment.track.duration:
            segment.duration += dur
        else:
            raise Exception(
                "Cannot create fade-out that extends past the track's end")
        score_loc_in_seconds = segment.comp_location_in_seconds +\
            segment.duration_in_seconds - duration
        f = Fade(segment.track, score_loc_in_seconds, duration, 1.0, 0.0)
        self.add_dynamic(f)
        return f
示例#15
0
 def update(self):
     Movement.update(self)
     Fade.update(self)
示例#16
0
 def __init__(self, x, y, color, size, time_fade, start_fadein):
     self.x = x
     self.y = y
     self.size = size
     Fade.__init__(self, color, time_fade, start_fadein)
示例#17
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))
示例#18
0
文件: game.py 项目: woo00154/Parkour
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))
示例#19
0
文件: game.py 项目: woo00154/Parkour
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))
示例#20
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))
示例#21
0
    def add_music_cue(self,
                      track,
                      comp_cue,
                      song_cue,
                      duration=6.0,
                      padding_before=12.0,
                      padding_after=12.0):
        """Add a music cue to the composition. This doesn't do any audio
        analysis, it just aligns a specified point in the track
        (presumably music) with a location in the composition. See
        UnderScore_ for a visualization of what this is doing to the
        music track.

        .. _UnderScore: http://vis.berkeley.edu/papers/underscore/

        :param track: Track to align in the composition
        :type track: :py:class:`radiotool.composer.Track`
        :param float comp_cue: Location in composition to align music cue (in seconds)
        :param float song_cue: Location in the music track to align with the composition cue (in seconds)
        :param float duration: Duration of music after the song cue before the music starts to fade out (in seconds)
        :param float padding_before: Duration of music playing softly before the music cue/composition cue (in seconds)
        :param float padding_after: Duration of music playing softly after the music cue/composition cue (in seconds)
        """

        self.tracks.add(track)

        pre_fade = 3
        post_fade = 3

        if padding_before + pre_fade > song_cue:
            padding_before = song_cue - pre_fade

        if padding_before + pre_fade > score_cue:
            padding_before = score_cue - pre_fade

        s = Segment(
            track, score_cue - padding_before - pre_fade,
            song_cue - padding_before - pre_fade,
            pre_fade + padding_before + duration + padding_after + post_fade)

        self.add_segment(s)

        d = []

        dyn_adj = 1

        track.current_frame = 0

        d.append(
            Fade(track,
                 score_cue - padding_before - pre_fade,
                 pre_fade,
                 0,
                 .1 * dyn_adj,
                 fade_type="linear"))

        d.append(
            Fade(track,
                 score_cue - padding_before,
                 padding_before,
                 .1 * dyn_adj,
                 .4 * dyn_adj,
                 fade_type="exponential"))

        d.append(Volume(track, score_cue, duration, .4 * dyn_adj))

        d.append(
            Fade(track,
                 score_cue + duration,
                 padding_after,
                 .4 * dyn_adj,
                 0,
                 fade_type="exponential"))

        d.append(
            Fade(track,
                 score_cue + duration + padding_after,
                 post_fade,
                 .1 * dyn_adj,
                 0,
                 fade_type="linear"))
        self.add_dynamics(d)