shh_algo_PY

Maze Game - Part 2 - Class Inheritance

Jul 22nd, 2022 (edited)
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.66 KB | None | 0 0
  1. '''
  2. Part 2: Updates
  3. - New classes: Player, Enemy
  4. - Updated game loop variable (Finish = False)
  5. - Change GameSprite() to Player() for main player sprite
  6. - Change GameSprite() to Enemy() for the enemy sprite
  7. - Updated game loop - add updates
  8. '''
  9.  
  10. from pygame import *
  11.  
  12. class GameSprite(sprite.Sprite):
  13.     def __init__(self, player_image, player_x, player_y, player_speed):
  14.         super().__init__()
  15.        
  16.         self.image = transform.scale(image.load(player_image), (65, 65))
  17.        
  18.         self.rect = self.image.get_rect()
  19.         self.rect.x = player_x
  20.         self.rect.y = player_y
  21.  
  22.         self.speed = player_speed
  23.  
  24.     def reset(self):
  25.         window.blit(self.image, (self.rect.x, self.rect.y))
  26.  
  27. '''
  28. Additional script starts here!  
  29. '''
  30. class Player(GameSprite):
  31.     def update(self):
  32.         keys = key.get_pressed()
  33.         if keys[K_LEFT] and self.rect.x > 5:
  34.             self.rect.x -= self.speed
  35.         if keys[K_RIGHT] and self.rect.x < win_width - 80:
  36.             self.rect.x += self.speed
  37.         if keys[K_UP] and self.rect.y > 5:
  38.             self.rect.y -= self.speed
  39.         if keys[K_DOWN] and self.rect.y < win_height - 80:
  40.             self.rect.y += self.speed
  41.  
  42. class Enemy(GameSprite):
  43.     direction = "left"
  44.     def update(self):
  45.         if self.rect.x <= 470:
  46.             self.direction = "right"
  47.         if self.rect.x >= win_width - 85:
  48.             self.direction = "left"
  49.        
  50.         if self.direction == "left":
  51.             self.rect.x -= self.speed
  52.         else:
  53.             self.rect.x += self.speed
  54.  
  55. ''' end of additional classes'''
  56.  
  57. #Game scene:
  58. win_width = 700
  59. win_height = 500
  60.  
  61. window = display.set_mode((win_width, win_height))
  62. display.set_caption("Maze")
  63. background = transform.scale(image.load("background.jpg"), (win_width, win_height))
  64.  
  65. # Game characters:
  66. # Change the packman's class from GameSprite to Player
  67. # Change the monster's class from GameSprite to Enemy
  68.  
  69. packman = Player('hero.png', 5, win_height - 80, 4)
  70. monster = Enemy('cyborg.png', win_width - 80, 280, 2)
  71. final = GameSprite('treasure.png', win_width - 120, win_height - 80, 0)
  72.  
  73. game = True
  74. finish = False              # ADD THIS VARIABLE
  75. clock = time.Clock()
  76. FPS = 60
  77.  
  78. #music
  79.  
  80. mixer.init()
  81. mixer.music.load('jungles.ogg')
  82. mixer.music.play()
  83.  
  84. # UPDATE THE GAME LOOP
  85. while game:
  86.     for e in event.get():
  87.         if e.type == QUIT:
  88.             game = False
  89.  
  90.     if finish != True:     
  91.         window.blit(background,(0, 0))
  92.         packman.update()
  93.         monster.update()
  94.      
  95.         packman.reset()
  96.         monster.reset()
  97.         final.reset()
  98.  
  99.     display.update()
  100.     clock.tick(FPS)
  101.  
Add Comment
Please, Sign In to add comment