Example #1
0
class Galho:
    def __init__(self, lado, x, y):
        image_paths = ('sprite/galhos/galhodireitanew.png',
                       'sprite/galhos/galhoesquerdanew.png',
                       'sprite/galhos/semgalho.png')
        self.texture = GameImage(image_paths[lado])
        self.lado = lado
        self.texture.set_position(x, y)

    def set_position(self, x, y):
        self.texture.set_position(x, y)

    def get_lado(self):
        return self.lado

    def draw(self):
        self.texture.draw()

    def draw_rotated(self, angle):
        self.texture.draw_rotated(angle)

    def get_x(self):
        return self.texture.x

    def get_y(self):
        return self.texture.y
Example #2
0
class SpecialHud:
    def __init__(self):
        self.bar = GameImage(SPECIAL_HUD)
        self.bar.set_position(4, 76)
        self.value = Sprite(*SPECIAL_POINTS)
        self.value.set_position(-6, 65)
        self.value.set_curr_frame(0)

    def draw(self):
        self.bar.draw()
        self.value.draw()

    def addSpecial(self):
        point = self.value.curr_frame + 1
        self.value.set_curr_frame(self.__checkLife(point))

    def loseSpecial(self):
        self.value.set_curr_frame(0)

    def current_special(self):
        return self.value.curr_frame

    def __checkLife(self, point):
        if point < 0:
            return 0
        elif point > 4:
            return 4
        else:
            return point
Example #3
0
class ButtonClick(Button):
    def __init__(self, button_image, window, x, y):
        super().__init__(window, x, y, "")
        self.button = GameImage(button_image)
        self.button.set_position(x - self.button.width / 2,
                                 y - self.button.height / 2)

    def draw(self):
        self.button.draw()
        self.update()

    def is_button_pressed(self):
        if self.is_button_press:
            self.is_button_press = False
            BUTTON_SOUND.play()
            return True
        return False

    def update(self):
        self.debug_time -= self.window.delta_time()
        if self.mouse.is_over_object(self.button):
            if not self.mouse.is_button_pressed(self.mouse.BUTTON_LEFT):
                self.is_button_press = False
            elif self.debug_time <= 0:
                self.debug_time = 1
                self.is_button_press = True
Example #4
0
class Snowflake:

    flakeImage = ('sprite/scenario/flakeL.png', 'sprite/scenario/flakeR.png')

    endOfScreen = False  # Checks if snowflake is at end of screen

    global startSpeed
    changeY = startSpeed  # Snowflake speed

    def __init__(self, y, pos):
        self.pos = pos  # left or right
        self.y = y  # y coordinate

        if pos == "left":
            self.type = 0
        else:
            self.type = 1

        # Retrieves snowflake image
        self.texture = GameImage(self.flakeImage[self.type])
        self.set_position()

    # Changes position
    def set_position(self):
        if self.pos == "left":
            self.texture.set_position(flakeDist, self.y)
        else:
            self.texture.set_position(-flakeDist, self.y)

    # Displays snowflake
    def paint(self):
        self.set_position()
        self.texture.draw()

    # Moves snowflake
    def move(self, snowmanPos):

        newY = self.y + self.changeY
        lowerBound = newY + branchHeight  # y coordinate for bottom of flake
        bottomOfSnowman = snowmanY + snowmanH  # y value for bottom of snowman

        # New flake would be in snowmans space
        if lowerBound > snowmanY and newY < bottomOfSnowman \
        and snowmanPos == self.pos:
            # Gain points and health by catching snowflakes
            scorer.snowflake_calc()
            # This allows us to delete snowflake later
            self.endOfScreen = True

        elif (lowerBound > sHeight):
            # Snowflake reaches end of screen
            self.endOfScreen = True
        else:
            # Snowflake moves down
            self.y += self.changeY
            self.paint()
Example #5
0
    def show_lives(self):
        life = GameImage("images/life.png")
        life.set_position(78, 170)
        life.draw()

        text = "LIFE:{}".format(self.lives)
        # text_space = len(text) * 14
        self.window.draw_text(text=text,
                              x=60,
                              y=245,
                              size=24,
                              color=(200, 200, 200),
                              font_name="Monospace",
                              bold=True)
Example #6
0
class LifeHud:
    def __init__(self,
                 bar_x=4,
                 bar_y=0,
                 life_hud=LIFE_HUD,
                 life_points=LIFE_POINTS):
        self.bar = GameImage(life_hud)
        self.bar.set_position(bar_x, bar_y)
        self.value = Sprite(*life_points)
        self.value.set_position(bar_x - 10, bar_y - 10)
        self.value.set_curr_frame(4)

    def draw(self):
        self.bar.draw()
        self.value.draw()

    def add_life(self):
        point = self.value.curr_frame + 1
        self.value.set_curr_frame(self.__checkLife(point))

    def full_life(self):
        self.value.set_curr_frame(4)

    def lose_life(self):
        point = self.value.curr_frame - 1
        if point >= 0:
            self.value.set_curr_frame(self.__checkLife(point))
        return point

    def is_empty_life(self):
        return self.value.curr_frame == 0

    def empty_life(self):
        self.value.set_curr_frame(0)

    def __checkLife(self, point):
        if point < 0:
            return 0
        elif point > 4:
            return 4
        else:
            return point

    def move(self, x, y):
        self.bar.set_position(x, y)
        self.value.set_position(x - 10, y - 10)
Example #7
0
class TimeHud:
    def __init__(self, window):
        self.window = window
        self.bar = GameImage(TIME_HUD)
        self.bar.set_position(self.window.width / 2 - self.bar.width / 2, 6)
        self.time = TIME

    def draw(self):
        self.bar.draw()
        self.time = self.time - self.window.delta_time()
        seconds = self.time

        if int(seconds) == 0:
            self.window.main_scene.change_scene('City')

        text = CenterText(self.window,
                          self.window.width / 2,
                          46,
                          text=int(seconds))
        text.draw()
Example #8
0
class Botao:
    def __init__(self, popup, janela, nome_image, mult_y, add_y, mult_x,
                 add_x):
        self.janela = janela
        self.popup = popup
        self.objeto = GameImage(nome_image)
        self.largura = self.objeto.width
        self.altura = self.objeto.height
        self.x = self.janela.width / 2 - popup.largura / 2 + mult_x * self.largura + add_x
        self.y = self.janela.height / 2 - popup.altura / 2 + mult_y * self.altura + add_y
        self.objeto.set_position(self.x, self.y)

    def draw(self):
        self.objeto.draw()

    def is_clicked(self, mouse):
        mouse_p = mouse.get_position()
        if (self.x <= mouse_p[0] <= self.x + self.largura
                and self.y + self.altura >= mouse_p[1] >= self.y
                and mouse.is_button_pressed(1)):
            return True
Example #9
0
class MenuHud:
    def __init__(self, window):
        self.window = window
        self.button = GameImage(PAUSE_HUD)
        self.button.set_position(self.window.width - self.button.width - 10,
                                 self.window.height - 130)
        self.points = 0

        self.menu_screen = GameImage(PAUSE_SCREEN)
        self.menu_screen.set_position(
            self.window.width / 2 - self.menu_screen.width / 2, 85)

        self.menu_button = Button(self.window, self.window.width / 2, 320,
                                  "MENU")
        self.return_button = Button(self.window, self.window.width / 2, 500,
                                    "VOLTAR")

        self.show_menu = False

    def draw(self):
        self.button.draw()
        if self.show_menu:
            self.menu_screen.draw()
            self.menu_button.draw()
            self.return_button.draw()

    def update(self):
        if self.window.get_mouse().is_button_pressed(
                1) and self.window.get_mouse().is_over_object(self.button):
            BUTTON_SOUND.play()
            self.window.main_scene.running = False
            self.show_menu = True
        elif self.window.get_keyboard().key_pressed(
                "ESCAPE") or self.return_button.is_button_pressed():
            self.window.main_scene.running = True
            self.show_menu = False
        elif self.menu_button.is_button_pressed():
            self.window.main_scene.running = True
            self.show_menu = False
            self.window.main_scene.change_scene()
Example #10
0
class PointHud:
    def __init__(self, window):
        self.window = window
        self.bar = GameImage(POINTS_HUD)
        self.bar.set_position(self.window.width - self.bar.width, 0)
        self.points = 0

    def draw(self):
        self.bar.draw()
        text = CenterText(self.window,
                          self.window.width - self.bar.width / 2 - 8,
                          40,
                          text=self.points)
        text.draw()

    def addPoint(self, amount):
        self.points += amount

    def get_point(self):
        return self.points

    def remove_point(self, amount: int):
        self.points -= amount
Example #11
0
class Button:
    def __init__(self, window, x, y, text):
        self.window = window
        self.mouse = window.get_mouse()
        self.button = GameImage(NORMAL_BUTTON)
        self.button.set_position(x - self.button.width / 2,
                                 y - self.button.height / 2)
        self.is_normal = True
        self.is_button_press = False
        self.debug_time = 0
        self.x = x - self.button.width / 2
        self.y = y - self.button.height / 2
        self.text_str = text

    def draw(self):
        self.button.draw()
        color = NEAR_BLACK
        if self.mouse.is_over_object(self.button):
            color = ORANGE

        text = CenterText(self.window,
                          self.x + self.button.width / 2,
                          self.y + self.button.height / 2,
                          color=color,
                          size=80,
                          text=self.text_str)
        text.draw()
        self.update()

    def is_button_pressed(self):
        if self.is_button_press:
            self.is_button_press = False
            BUTTON_SOUND.play()
            return True
        return False

    def update(self):
        self.debug_time -= self.window.delta_time()
        if self.mouse.is_over_object(self.button):
            if not self.mouse.is_button_pressed(self.mouse.BUTTON_LEFT):
                self.button = GameImage(HOVER_BUTTON)
                self.button.set_position(self.x, self.y)
                self.is_normal = False
                self.is_button_press = False
            elif self.debug_time <= 0:
                self.debug_time = 1
                self.is_button_press = True
                self.is_normal = False
        elif not self.is_normal:
            self.button = GameImage(NORMAL_BUTTON)
            self.button.set_position(self.x, self.y)
            self.is_normal = True
            self.is_button_press = False
Example #12
0
class Popup:
    def __init__(self, janela):
        self.janela = janela
        self.objeto = GameImage(Popup_Images.inventario['fundo'])

    # popup(1) -> inventário
    # popup(2) -> prontuario
    def set_popup(self, tipo, soldado):

        self.tipo = tipo
        if (self.tipo == 1):
            self.texto = None
            self.objeto = GameImage(Popup_Images.inventario['fundo'])
            self.largura = self.objeto.width
            self.altura = self.objeto.height
            self.objeto.set_position(
                (self.janela.width / 2 - self.largura / 2),
                self.janela.height / 2 - self.altura / 2)
            self.bt_repor = Botao(self, self.janela,
                                  Popup_Images.inventario['bt_repor'], 2, 0, 0,
                                  10)
            self.bt_dormir = Botao(self, self.janela,
                                   Popup_Images.inventario['bt_dormir'], 3, 1,
                                   0, 10)
            self.bt_comer = Botao(self, self.janela,
                                  Popup_Images.inventario['bt_comer'], 4, 2, 0,
                                  10)
            self.bt_ok = None
            self.bt_cancelar = None

        if (self.tipo == 2):
            self.texto = str(soldado.prontuario)
            self.objeto = GameImage(Popup_Images.prontuario['fundo'])
            self.largura = self.objeto.width
            self.altura = self.objeto.height
            self.objeto.set_position(
                (self.janela.width / 2 - self.largura / 2),
                self.janela.height / 2 - self.altura / 2)
            self.bt_ok = Botao(self, self.janela,
                               Popup_Images.prontuario['bt_ok'], 13, 0, 0.5, 0)
            self.bt_cancelar = Botao(self, self.janela,
                                     Popup_Images.prontuario['bt_cancelar'],
                                     14, 1, 0.5, 0)
            self.bt_repor = None
            self.bt_dormir = None
            self.bt_comer = None

        if (self.tipo == 0):
            self.texto = ""
            self.objeto = GameImage(Popup_Images.start['fundo'])
            self.largura = self.objeto.width
            self.altura = self.objeto.height
            self.objeto.set_position(
                (self.janela.width / 2 - self.largura / 2),
                self.janela.height / 2 - self.altura / 2)
            self.bt_ok = Botao(self, self.janela,
                               Popup_Images.prontuario['bt_ok'], 10, 0, 0.7, 0)
            self.bt_cancelar = Botao(self, self.janela,
                                     Popup_Images.prontuario['bt_cancelar'],
                                     13, 0, 0.7, 0)
            self.bt_repor = None
            self.bt_dormir = None
            self.bt_comer = None

    def draw(self):
        self.objeto.draw()
        self.janela.draw_text(self.texto,
                              self.janela.width / 2 - self.largura / 2 +
                              self.texto.__sizeof__() * 2,
                              self.janela.height / 2 - self.altura / 4 + 40,
                              size=20,
                              color=(0, 0, 0),
                              bold=True)
        if (self.tipo == 1):
            self.bt_repor.draw()
            self.bt_dormir.draw()
            self.bt_comer.draw()
        elif (self.tipo == 2 or self.tipo == 0):
            self.bt_cancelar.draw()
            self.bt_ok.draw()

    def bt_clicked(self):
        mouse = self.janela.get_mouse()
        if (self.tipo == 1):
            if self.bt_comer.is_clicked(mouse):
                return 3
            if self.bt_dormir.is_clicked(mouse):
                return 2
            if self.bt_repor.is_clicked(mouse):
                return 1

        elif (self.tipo == 2 or self.tipo == 0):
            if self.bt_cancelar.is_clicked(mouse):
                return 0
            if self.bt_ok.is_clicked(mouse):
                return 4
        return 0
Example #13
0
class SelectPlaneScene(SceneInterface):
    def __init__(self, hud: HudManager):
        self.hud = hud
        self.window = hud.get_window()
        self.mouse = hud.get_window().get_mouse()
        self.fundo = GameImage(BACKGROUND_HOME)
        self.time = 0
        self.select = False
        points_background = pygame.transform.scale(
            GameImage(SOUND_BACKGROUND).image, (1100, 800))
        self.point_background = GameImage(SOUND_BACKGROUND)
        self.point_background.image = points_background
        self.point_background.set_position(
            self.window.width / 2 - points_background.get_width() / 2, 0)

        self.text = CenterText(hud.get_window(),
                               WIDTH_DIV,
                               300,
                               text="Escolha qual será sua próxima nave")

        self.jet_g_bool = False
        self.jet_green = Sprite(*JET_GREEN_FLY)
        self.jet_green.set_position(
            WIDTH_DIV - WIDTH_DIV / 2 - self.jet_green.width + 200, 350)

        self.jet_y_bool = False
        self.jet_yellow = Sprite(*JET_YELLOW_FLY)
        self.jet_yellow.set_position(WIDTH_DIV + WIDTH_DIV / 2 - 200, 350)

    def handle_event(self, speed: int, scene: bool):
        if self.mouse.is_over_object(self.jet_green):
            self.jet_g_bool = True
            self.jet_y_bool = False
            if self.mouse.is_button_pressed(mouse.BUTTON_LEFT):
                self.hud.set_ship_look(JET_GREEN_FLY)
                self.select = True
        elif self.mouse.is_over_object(self.jet_yellow):
            self.jet_y_bool = True
            self.jet_g_bool = False
            if self.mouse.is_button_pressed(mouse.BUTTON_LEFT):
                self.hud.set_ship_look(JET_YELLOW_FLY)
                self.select = True
        else:
            self.time = 2
            self.jet_g_bool = False
            self.jet_y_bool = False

    def __draw_jet(self, jet: Sprite, enabled: bool):
        if enabled:
            if self.time >= 0.0:
                self.time -= self.window.delta_time()
            if 1.7 <= self.time <= 2.0:
                jet.draw()
            elif 1.1 <= self.time <= 1.4:
                jet.draw()
            elif 0.5 <= self.time <= 0.8:
                jet.draw()
            elif self.time <= 0.0:
                jet.draw()
        else:
            jet.draw()

    def draw(self, state: bool):
        self.fundo.draw()
        self.point_background.draw()
        self.__draw_jet(self.jet_yellow, self.jet_y_bool)
        self.__draw_jet(self.jet_green, self.jet_g_bool)
        self.text.draw()

    def update(self, state: bool):
        if self.select:
            self.window.main_scene.change_scene('Desert')
Example #14
0
 def draw_sprite(self, sprite: GameImage, position: Vec):
     sx, sy = self.get_screen_position(*position)
     sprite.set_position(sx, sy)
     sprite.draw()
Example #15
0
class ShopHud:
    def __init__(self, window):
        self.window = window
        self.mouse = window.get_mouse()

        self.button = GameImage(SHOP_HUD)
        self.button.set_position(10, self.window.height - 130)

        self.shop_screen = GameImage(SHOP_SCREEN)
        self.shop_screen.set_position(
            self.window.width / 2 - self.shop_screen.width / 2, 85)

        self.blue_fire_shop = GameImage(BLUE_FIRE_SHOP)
        self.blue_fire_shop.set_position(
            self.window.width / 2 - self.shop_screen.width / 2, 140)
        self.blue_fire_shop_b = GameImage(BLUE_FIRE_SHOP_B)
        self.blue_fire_shop_b.set_position(
            self.window.width / 2 - self.shop_screen.width / 2, 140)
        self.blue_text = CenterText(self.window,
                                    self.window.width / 2 + 20,
                                    294,
                                    color=SKY_BLUE,
                                    size=46,
                                    text="10 C")

        self.pink_fire_shop = GameImage(PINK_FIRE_SHOP)
        self.pink_fire_shop.set_position(
            self.window.width / 2 - self.shop_screen.width / 2, 140)
        self.pink_fire_shop_b = GameImage(PINK_FIRE_SHOP_B)
        self.pink_fire_shop_b.set_position(
            self.window.width / 2 - self.shop_screen.width / 2, 140)
        self.pink_text = CenterText(self.window,
                                    self.window.width / 2 + 20,
                                    370,
                                    color=PURPLE,
                                    size=46,
                                    text="10 C")

        self.torpedo_shop = GameImage(TORPEDO_SHOP)
        self.torpedo_shop.set_position(
            self.window.width / 2 - self.shop_screen.width / 2, 140)
        self.torpedo_shop_b = GameImage(TORPEDO_SHOP_B)
        self.torpedo_shop_b.set_position(
            self.window.width / 2 - self.shop_screen.width / 2, 140)
        self.torpedo_text = CenterText(self.window,
                                       self.window.width / 2 + 20,
                                       446,
                                       color=FOREST_GREEN,
                                       size=46,
                                       text="10 C")

        self.torpedo_black_shop = GameImage(TORPEDO_BLACK_SHOP)
        self.torpedo_black_shop.set_position(
            self.window.width / 2 - self.shop_screen.width / 2, 140)
        self.torpedo_black_shop_b = GameImage(TORPEDO_BLACK_SHOP_B)
        self.torpedo_black_shop_b.set_position(
            self.window.width / 2 - self.shop_screen.width / 2, 140)
        self.torpedo_black_text = CenterText(self.window,
                                             self.window.width / 2 + 20,
                                             522,
                                             color=BLACK,
                                             size=46,
                                             text="10 C")

        self.choose_skin = [True, False, False, False]

        self.time_delay = 0
        self.points = 0
        self.show_shop = False

    def draw_shop(self):
        if self.choose_skin[0]:
            self.blue_fire_shop_b.draw()
            self.pink_fire_shop.draw()
            self.torpedo_shop.draw()
            self.torpedo_black_shop.draw()
        elif self.choose_skin[1]:
            self.blue_fire_shop.draw()
            self.pink_fire_shop_b.draw()
            self.torpedo_shop.draw()
            self.torpedo_black_shop.draw()
        elif self.choose_skin[2]:
            self.blue_fire_shop.draw()
            self.pink_fire_shop.draw()
            self.torpedo_shop_b.draw()
            self.torpedo_black_shop.draw()
        elif self.choose_skin[3]:
            self.blue_fire_shop.draw()
            self.pink_fire_shop.draw()
            self.torpedo_shop.draw()
            self.torpedo_black_shop_b.draw()
        self.blue_text.draw()
        self.pink_text.draw()
        self.torpedo_text.draw()
        self.torpedo_black_text.draw()

    def draw(self):
        self.button.draw()
        if self.show_shop:
            self.shop_screen.draw()
            self.draw_shop()

    def update(self):
        if self.__is_clicking(self.button):
            BUTTON_SOUND.play()
            self.window.main_scene.running = not self.window.main_scene.running
            self.show_shop = not self.show_shop
        elif self.window.get_keyboard().key_pressed("ESCAPE"):
            self.window.main_scene.running = True
            self.show_shop = False
        elif self.__is_clicking_shop(0):
            if self.window.main_scene.get_hud().set_special_look(0):
                self.choose_skin = [True, False, False, False]
        elif self.__is_clicking_shop(1):
            if self.window.main_scene.get_hud().set_special_look(1):
                self.choose_skin = [False, True, False, False]
        elif self.__is_clicking_shop(2):
            if self.window.main_scene.get_hud().set_special_look(2):
                self.choose_skin = [False, False, True, False]
        elif self.__is_clicking_shop(3):
            if self.window.main_scene.get_hud().set_special_look(3):
                self.choose_skin = [False, False, False, True]

    def __is_clicking(self, button: GameImage):
        self.time_delay -= self.window.delta_time()
        if self.mouse.is_over_object(button) and self.mouse.is_button_pressed(
                self.mouse.BUTTON_LEFT):
            if self.time_delay <= 0:
                self.time_delay = 0.5
                return True
        return False

    def __is_clicking_shop(self, pos: int):
        if self.choose_skin[pos]:
            return False
        if pos == 0:
            if self.mouse.is_over_area(
                (480, 250), (800, 330)) and self.mouse.is_button_pressed(
                    self.mouse.BUTTON_LEFT):
                return True
        elif pos == 1:
            if self.mouse.is_over_area(
                (480, 331), (800, 410)) and self.mouse.is_button_pressed(
                    self.mouse.BUTTON_LEFT):
                return True
        elif pos == 2:
            if self.mouse.is_over_area(
                (480, 411), (800, 480)) and self.mouse.is_button_pressed(
                    self.mouse.BUTTON_LEFT):
                return True
        else:
            if self.mouse.is_over_area(
                (480, 481), (800, 560)) and self.mouse.is_button_pressed(
                    self.mouse.BUTTON_LEFT):
                return True
        return False
Example #16
0
class BattleSceneFirst(SceneInterface):
    def __init__(self, hud: HudManager):
        self.hud = hud
        self.window = hud.get_window()
        self.key_board = hud.get_window().get_keyboard()
        self.background = BackgroundModel(BACKGROUND_BATTLE1)
        self.air_plane = AirPlaneModel(shoot=self.hud.get_special_look(),
                                       sprite=self.hud.get_ship_look())
        self.enemy_plane = EnemyAirPlaneModel(*ENEMY_PLANE_FIRST_POSITION)
        self.coin = CoinModel()
        self.life = LifeModel(WIDTH_SCREEN, HEIGHT_SCREEN / 2, True)
        self.special = SpecialModel(WIDTH_SCREEN / 2, HEIGHT_SCREEN / 2, True)
        self.point = 0
        points_background = pygame.transform.scale(
            GameImage(SOUND_BACKGROUND).image, (250, 90))
        self.point_background = GameImage(SOUND_BACKGROUND)
        self.point_background.image = points_background
        self.point_background.set_position(
            self.window.width / 2 - points_background.get_width() / 2, -15)
        self.shot_time = 0.0

        self.game_objects = [
            self.background, self.enemy_plane, self.air_plane, self.coin,
            self.life, self.special,
            self.air_plane.get_shot(),
            self.air_plane.get_shot_special(),
            self.enemy_plane.get_shot()
        ]
        self.enemys = [self.enemy_plane]
        self.enemy_shot_times = [0.0]

    def handle_event(self, speed, state):
        if not state:
            return

        self.shot_time -= self.hud.get_window().delta_time()

        for i in range(len(self.enemys)):
            self.enemy_shot_times[i] -= self.hud.get_window().delta_time()

            if self.air_plane.get_shot().collide(self.enemys[i]):
                self.point += 1

                if self.point % 4 == 0:
                    self.special.change_visibility(self.enemys[i].animation.x,
                                                   self.enemys[i].animation.y)
                if self.point % 5 == 0:
                    self.life.change_visibility(self.enemys[i].animation.x,
                                                self.enemys[i].animation.y)

                if (self.enemys[i].lifeModel.lose_life()) == 0:
                    self.enemys[i].hidden()

            if self.air_plane.get_shot_special().collide(self.enemys[i]):
                self.point += 3
                self.enemys[i].lifeModel.empty_life()
                self.enemys[i].hidden()

            if self.enemys[i].get_shot().collide(self.air_plane):
                self.hud.lose_life()

            if self.enemy_shot_times[i] <= 0.0:
                self.enemys[i].can_shot(self.air_plane)
                self.enemy_shot_times[i] = 2

        if self.key_board.key_pressed("UP"):  # Direcional ^
            self.air_plane.up(speed * 2)
        if self.key_board.key_pressed("DOWN"):
            self.air_plane.down(speed * 2)
        if self.key_board.key_pressed("RIGHT"):
            self.air_plane.forward(speed * 2)
        if self.key_board.key_pressed("LEFT"):
            self.air_plane.backward(speed * 2)
        if self.shot_time <= 0.0:
            if self.key_board.key_pressed("SPACE"):
                self.air_plane.shot()
                self.shot_time = 1
        if self.key_board.key_pressed("S") and self.hud.get_special() >= 4:
            self.hud.lose_special()
            self.air_plane.shot_special()

        for game_object in self.game_objects:
            game_object.move(speed)

        if self.coin.collide(self.air_plane):
            self.hud.point.addPoint(1)

        if self.life.collide(self.air_plane):
            self.life.change_visibility()
            self.hud.add_life()

        if self.special.collide(self.air_plane):
            self.special.change_visibility()
            self.hud.add_special()

    def draw(self, state):

        for game_object in self.game_objects:
            game_object.draw()

        for enemy in self.enemys:
            enemy.get_life().draw()

        self.hud.draw()
        self.point_background.draw()

        CenterText(self.hud.get_window(),
                   self.hud.get_window().width / 2, 30, GOLD, 64,
                   "Pontos " + str(self.point)).draw()

    def update(self, state):
        if not state:
            return

        if self.point >= POINTS:
            self.hud.get_window().main_scene.change_scene('SecondHistory')

        for game_object in self.game_objects:
            game_object.update()
Example #17
0
class Branches:

    global startSpeed
    changeY = startSpeed  # Speed at which branch moves down
    direction = "up"  #Determines whether speed increases or decreases over time

    # Images for branches
    tree_types = ('sprite/branches/right.png', 'sprite/branches/left.png',
                  'sprite/branches/middle.png')

    endOfScreen = False  # Records if branch has reached end of screen

    def __init__(self, y, pos):
        self.y = y  # y-coordinate (distance from top of screen)
        self.pos = pos
        if pos == "left":  # branch 'left' to tree
            self.type = 1
        elif pos == "right":  # branch 'right' to tree
            self.type = 0
        else:
            self.type = 2  # no branch if position is 'middle'

        # Assigns an image to each object
        self.texture = GameImage(self.tree_types[self.type])
        self.texture.set_position(0, self.y)

    # Change position of object
    def set_position(self, x, y):
        self.texture.set_position(x, y)

    # Display branch
    def paint(self):
        self.set_position(0, self.y)
        self.texture.draw()

    # Move branch
    def move(self, snowmanPos):
        global game_state

        # Finds new y value (which defines top of branch)
        newY = self.y + self.changeY

        lowerBound = newY + branchHeight  # y coordinate for bottom of branch
        bottomOfSnowman = snowmanY + snowmanH  # y value for bottom of snowman

        if lowerBound > snowmanY and newY < bottomOfSnowman \
        and snowmanPos == self.pos:
            # New branch would be in snowmans space (snowman hits branch)
            game_state = 0  # Game over
            gameEnd.play()  # Play sound effect

        # Branch reaches end of screen so starts at top again
        elif (newY > sHeight):
            # Useful for objects of type 'middle' which create tree
            self.y = -64
            self.paint()
            # Useful for other objects which are actual branches
            self.endOfScreen = True
        else:
            # Branch moves down
            self.y += self.changeY
            self.paint()