Exemple #1
0
 def handleEvent(self, event):
     # Handle home screen events:
     if globals.home_lock == True:
         if event.type == sdl2.SDL_QUIT:
             globals.home_lock = False
             globals.running = False
         if event.type == sdl2.SDL_KEYDOWN:
             if event.key.keysym.sym == sdl2.SDLK_p:
                 globals.home_lock = False
                 self.render_play()  # Render game play screen
     elif globals.game_over_lock == True:
         if event.type == sdl2.SDL_QUIT:
             globals.game_over_lock = False
             globals.running = False
         if event.type == sdl2.SDL_KEYDOWN:
             if event.key.keysym.sym == sdl2.SDLK_p:
                 globals.game_over_lock = False
     # Handle game play events:
     else:
         if event.type == sdl2.SDL_QUIT:
             globals.running = False
         if event.type == sdl2.SDL_KEYDOWN:
             if event.key.keysym.sym == sdl2.SDLK_LEFT:
                 self.salmon.velocity.vx = -6
             elif event.key.keysym.sym == sdl2.SDLK_RIGHT:
                 self.salmon.velocity.vx = 6
             elif event.key.keysym.sym == sdl2.SDLK_UP:
                 self.salmon.velocity.vy = -3
             elif event.key.keysym.sym == sdl2.SDLK_DOWN:
                 self.salmon.velocity.vy = 6
             elif event.key.keysym.sym == sdl2.SDLK_ESCAPE:
                 globals.running = False
             elif event.key.keysym.sym == sdl2.SDLK_SPACE:
                 if globals.pause == False:
                     globals.pause = True
                     self.sp_pauseL = self.factory.from_color(
                         (255, 255, 255, 0), (50, 100))
                     self.pause_barL = sprite_classes.Inert(
                         self.world, self.sp_pauseL, 300, 300)
                     self.pause_barL.setDepth(5)
                     self.sp_pauseR = self.factory.from_color(
                         (255, 255, 255, 0), (50, 100))
                     self.pause_barR = sprite_classes.Inert(
                         self.world, self.sp_pauseR, 370, 300)
                     self.pause_barR.setDepth(5)
                 elif globals.pause == True:
                     globals.pause = False
         elif event.type == sdl2.SDL_KEYUP:
             if event.key.keysym.sym in (sdl2.SDLK_LEFT, sdl2.SDLK_RIGHT,
                                         sdl2.SDLK_UP, sdl2.SDLK_DOWN):
                 self.salmon.velocity.vx -= 1
                 self.salmon.velocity.vy -= 1
Exemple #2
0
 def render_score(self):
     self.sp_score = self.factory.from_text(
         str(self.score), fontmanager=fonts.make_font('Score'))
     self.score_obj = sprite_classes.Inert(self.world, self.sp_score, 84,
                                           18)
     self.score_obj.setDepth(5)
     self.score += 1
Exemple #3
0
 def __init__(self, name, winx, winy):
     super(SalmonRun, self).__init__(name, winx, winy)
     # Init sprites:
     self.sp_blank = self.factory.from_image(
         RESOURCES.get_path('blank.bmp'))
     self.sp_dashboard = self.factory.from_image(
         RESOURCES.get_path('dashboard.bmp'))
     # Init HUD sprites:
     self.sp_energy = self.factory.from_color((0, 255, 0, 0), (155, 30))
     self.energy = sprite_classes.Inert(self.world, self.sp_energy, 625, 10)
     self.energy.setDepth(5)
     # Init sprite class instances: (except for the special salmon...)
     self.blank = sprite_classes.Inert(self.world, self.sp_blank, 0, 0)
     self.dashboard = sprite_classes.Inert(self.world, self.sp_dashboard, 0,
                                           0)
     # Init enemy sizes array:
     self.esizes = [x for x in range(0, 15)]
Exemple #4
0
 def init_energy_bar(self):
     self.render_energy(155)
     self.sp_energybar_border = self.factory.from_image(
         RESOURCES.get_path('energy_bar_border.bmp'))
     self.energybar_border = sprite_classes.Inert(self.world,
                                                  self.sp_energybar_border,
                                                  623, 8)
     self.energybar_border.setDepth(5)
Exemple #5
0
 def render_meals(self):
     self.sp_skull = self.factory.from_image(
         RESOURCES.get_path('skull.bmp'))
     self.skulls = [sprite_classes.Inert(self.world, self.sp_skull)
                    ] * self.salmon.meals.meals
     x = 340
     y = 15
     for skull in self.skulls:
         skull.setPos(x, y)
         skull.setDepth(5)
         x += 30
Exemple #6
0
 def add_image_sprite(self, filename, s_type, x, y, depth):
     self.sp_new_sprite = self.factory.from_image(
         RESOURCES.get_path(filename))
     if s_type == 'inert':
         self.new_sprite = sprite_classes.Inert(self.world,
                                                self.sp_new_sprite, x, y)
     elif s_type == 'player':
         self.new_sprite = sprite_classes.Player(self.world,
                                                 self.sp_new_sprite, x, y)
     elif s_type == 'enemy':
         self.new_sprite = sprite_classes.Enemy(self.world,
                                                self.sp_new_sprite, x, y)
     self.new_sprite.setDepth(depth)
Exemple #7
0
 def render_energy(self, w):
     if self.salmon.energy.energy > 103:
         color = (0, 255, 0, 0)
     elif self.salmon.energy.energy > 51:
         color = (237, 239, 0, 0)
     else:
         color = (255, 0, 0, 0)
     if w > 155:
         w = 155
         self.salmon.energy.energy = 155
     self.sp_energy = self.factory.from_color(color, (w, 30))
     self.energy_bar = sprite_classes.Inert(self.world, self.sp_energy, 625,
                                            10)
     self.energy_bar.setDepth(5)
Exemple #8
0
 def render_home(self):
     music.play_sample('Bubbles.wav', True)
     self.sp_title = self.factory.from_text(
         'SALMON RUN', fontmanager=fonts.make_font('Title'))
     self.title = sprite_classes.Inert(self.world, self.sp_title, 66, 110)
     self.title.setDepth(7)
     self.sp_play = self.factory.from_text(
         'PRESS "P" TO PLAY', fontmanager=fonts.make_font('Play'))
     self.play = sprite_classes.Inert(self.world, self.sp_play, 150, 330)
     self.play.setDepth(7)
     self.blank.setDepth(6)
     # Display size guide:
     x = 110
     y = 450
     size_guide_sprites = []
     for i in range(15):
         self.add_image_sprite('enemy' + str(i) + '.bmp', 'inert', x, y, 7)
         size_guide_sprites.append(self.new_sprite)
         if i < 5:
             x += 30
         elif i < 10:
             x += 40
         else:
             x += 50
     # Wait for user-input:
     while globals.home_lock == True:
         events = sdl2.ext.get_events()
         for event in events:
             self.handleEvent(event)
         self.world.process()
     # Clean up:
     self.blank.setDepth(0)
     for sprite in size_guide_sprites:
         self.delete(sprite)
     self.delete(self.title)
     self.delete(self.play)
Exemple #9
0
 def render_play(self):
     music.play_music('Chiptune.wav', -1)  # Play background music
     music.play_sample('Bubbles.wav', True)
     self.init_salmon(450, 550)
     self.init_energy_bar()
     # Init river & riverbanks then bring up the HUD:
     self.sp_river = self.factory.from_image(
         RESOURCES.get_path('river.bmp'))
     self.river = sprite_classes.Inert(self.world, self.sp_river, 0, 50)
     self.river.setDepth(1)
     self.sp_river_top = self.factory.from_image(
         RESOURCES.get_path('top.bmp'))
     self.sp_river_bottom = self.factory.from_image(
         RESOURCES.get_path('bottom.bmp'))
     self.river_top = sprite_classes.Enemy(self.world, self.sp_river_top,
                                           (0, 1), 0, -550, False)
     self.river_bottom = sprite_classes.Enemy(self.world,
                                              self.sp_river_bottom, (0, 1),
                                              0, 50, False)
     self.river_top.setDepth(2)
     self.river_bottom.setDepth(2)
     self.dashboard.setDepth(4)
     self.world.process()
Exemple #10
0
 def add_text_sprite(self, text, font_type, x, y, depth):
     self.sp_new_text = self.factory.from_text(
         text, fontmanager=fonts.make_font(font_type))
     self.new_text = sprite_classes.Inert(self.world, self.sp_new_text, x,
                                          y)
     self.new_text.setDepth(depth)