Exemplo n.º 1
0
    def __init__(self):

        super().__init__()

        self.w, self.h = self.screen.get_size()
        self.sound_queue.append(sounds['menu'])

        bg = Animation(frames_path['play-background'], (0, 0), self.screen)

        tree1 = Animation(frames_path['tree'], (150, self.h/2), self.screen)
        tree1.reduce_scale(4)
        tree1.centralize()
        tree1.flip()

        tree2 = Animation(frames_path['tree'], (self.w-150, self.h/2), self.screen)
        tree2.reduce_scale(4)
        tree2.centralize()

        title = Animation(frames_path['title'], (self.w/2,200), self.screen)
        title.reduce_scale(3)
        title.centralize()

        self.ship = Animation(frames_path['ship'], ((self.w/16)*2, 200), self.screen)
        self.ship.reduce_scale(4)
        self.ship.centralize()
        self.ship_speed = -1
        
        self.next_state 
        self.menu = Menu(self.screen)

        ''' 
            O botao criado no menu inicial recebe como parametro o nome do proximo estado que sera executado
            assim que este aqui acabar
        '''
        
        self.menu.add_button('start', frames_path['start-button'], (self.w/2, self.h/2), 'SELECTCHAR')
        self.menu.buttons['start'].reduce_scale(1.5)
        self.menu.buttons['start'].centralize()

        self.menu.add_button('htp', frames_path['htp-button'], (self.w/2, self.h/2 + 100), 'HOWTOPLAY')
        self.menu.buttons['htp'].reduce_scale(1.5)
        self.menu.buttons['htp'].centralize()


        self.menu.add_button('sound', frames_path['sound'],(int((self.w/16)*15), int((self.h/10)*1)),self.switch_sound)
        self.menu.buttons['sound'].reduce_scale(5)
        self.menu.buttons['sound'].centralize()

        self.elements = [bg, self.ship, self.menu, tree1, tree2, title]
Exemplo n.º 2
0
def start_screen():

    menu = Menu(SCREEN)
    menu.add_button('iniciar 1',
                    ['img/button_frame_1.png', 'img/button_frame_2.png'], play)
    #menu.add_button('iniciar 2', ['img/button_frame_1.png', 'img/button_frame_2.png'], print_click)

    bg = Animation([
        "img/start_background_frame_1.jpg", "img/start_background_frame_2.jpg"
    ], (0, 0), SCREEN)
    bg.set_fps(15)

    tree1 = Animation(["img/tree_frame_1.png", "img/tree_frame_2.png"],
                      (150, h / 2), SCREEN)
    tree1.reduce_scale(4)
    tree1.centralize()
    tree1.flip()

    tree2 = Animation(["img/tree_frame_1.png", "img/tree_frame_2.png"],
                      (w - 150, h / 2), SCREEN)
    tree2.reduce_scale(4)
    tree2.centralize()

    title = Animation(["img/title_frame_1.png"], (w / 2, 200), SCREEN)
    title.reduce_scale(3)
    title.centralize()

    while True:

        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                exit()

            if event.type == MOUSEBUTTONUP:
                menu.check_click(pygame.mouse.get_pos())

        bg.draw()
        tree1.draw()
        tree2.draw()
        title.draw()
        menu.draw()
        pygame.display.update()

        clock.tick(27)
Exemplo n.º 3
0
class StartScreen(State):
    
    def __init__(self):

        super().__init__()

        self.w, self.h = self.screen.get_size()
        self.sound_queue.append(sounds['menu'])

        bg = Animation(frames_path['play-background'], (0, 0), self.screen)

        tree1 = Animation(frames_path['tree'], (150, self.h/2), self.screen)
        tree1.reduce_scale(4)
        tree1.centralize()
        tree1.flip()

        tree2 = Animation(frames_path['tree'], (self.w-150, self.h/2), self.screen)
        tree2.reduce_scale(4)
        tree2.centralize()

        title = Animation(frames_path['title'], (self.w/2,200), self.screen)
        title.reduce_scale(3)
        title.centralize()

        self.ship = Animation(frames_path['ship'], ((self.w/16)*2, 200), self.screen)
        self.ship.reduce_scale(4)
        self.ship.centralize()
        self.ship_speed = -1
        
        self.next_state 
        self.menu = Menu(self.screen)

        ''' 
            O botao criado no menu inicial recebe como parametro o nome do proximo estado que sera executado
            assim que este aqui acabar
        '''
        
        self.menu.add_button('start', frames_path['start-button'], (self.w/2, self.h/2), 'SELECTCHAR')
        self.menu.buttons['start'].reduce_scale(1.5)
        self.menu.buttons['start'].centralize()

        self.menu.add_button('htp', frames_path['htp-button'], (self.w/2, self.h/2 + 100), 'HOWTOPLAY')
        self.menu.buttons['htp'].reduce_scale(1.5)
        self.menu.buttons['htp'].centralize()


        self.menu.add_button('sound', frames_path['sound'],(int((self.w/16)*15), int((self.h/10)*1)),self.switch_sound)
        self.menu.buttons['sound'].reduce_scale(5)
        self.menu.buttons['sound'].centralize()

        self.elements = [bg, self.ship, self.menu, tree1, tree2, title]

    def check_event(self, event):

        if event.type == pygame.QUIT:
            self.quit = True
            ''' 
                Assim que o mouse for clicado o handler de evento deste estado chama a funcao do menu que verifica
                se este click ocorreu em algum dos botoes presentes no menu
            '''
        elif event.type == pygame.MOUSEBUTTONUP:
            if(self.menu.check_click(pygame.mouse.get_pos())):

                ''' Colocar o som de selecao de botão aqui '''
                self.sound_queue.append(sounds['button-switch'])

                if(callable(self.menu.last_clicked_state)):
                    self.menu.last_clicked_state()
                    self.menu.last_clicked_state = None
                    return

                ''' 
                    Se algum botao foi clicado e conter um estado como callback, o status desse evento e marcado como 'done' (self.done = True) e o
                    ponteiro para o proximo estado vira o valor que havia sido armazenado como next_state, do botão
                    em questão
                '''

                self.next_state = self.menu.last_clicked_state
                self.done = True

    def switch_sound(self):
        super().switch_sound()
        if (State.volume == 0):
            self.menu.buttons['sound'].switch_state('off')
        elif(State.volume == 1):
            self.menu.buttons['sound'].switch_state('on')

    def draw(self):
        for element in self.elements:
            element.draw()

    def update(self):
        
        self.ship.update_pos((self.ship.rect.x + self.ship_speed, self.ship.rect.y))
        if(self.ship.rect.x == 0 or self.ship.rect.x == self.w):
            self.ship_speed *= -1
            print('ship speed is now ' + str(self.ship_speed))
            self.ship.rect.x + self.ship_speed * 1000
            self.ship.flip()