shh_algo_PY

Maze Game Part 2

Jun 11th, 2022 (edited)
41
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.41 KB | None | 0 0
  1. from pygame import *
  2.  
  3. #parent class for sprites
  4. class GameSprite(sprite.Sprite):
  5.    #class constructor
  6.     def __init__(self, player_image, player_x, player_y, player_speed):
  7.         super().__init__()
  8.         # each sprite must store an image property
  9.         self.image = transform.scale(image.load(player_image), (55, 55))
  10.         self.speed = player_speed
  11.         # each sprite must store the rect property it is inscribed in
  12.         self.rect = self.image.get_rect()
  13.         self.rect.x = player_x
  14.         self.rect.y = player_y
  15.  
  16.     def reset(self):
  17.         window.blit(self.image, (self.rect.x, self.rect.y))
  18.  
  19. #derived class for the player sprite (controlled by arrows)
  20. class Player(GameSprite):
  21.     def update(self):
  22.         keys = key.get_pressed()
  23.         if keys[K_LEFT] and self.rect.x > 5:
  24.             self.rect.x -= self.speed
  25.         if keys[K_RIGHT] and self.rect.x < win_width - 80:
  26.             self.rect.x += self.speed
  27.         if keys[K_UP] and self.rect.y > 5:
  28.             self.rect.y -= self.speed
  29.         if keys[K_DOWN] and self.rect.y < win_height - 80:
  30.             self.rect.y += self.speed
  31.  
  32. #derived class for the enemy sprite (moves itself)
  33. class Enemy(GameSprite):
  34.     def update(self):
  35.         if self.rect.x <= 470:
  36.             self.side = "right"
  37.         if self.rect.x >= win_width - 85:
  38.             self.side = "left"
  39.         if self.side == "left":
  40.             self.rect.x -= self.speed
  41.         else:
  42.             self.rect.x += self.speed
  43.  
  44. #class for obstacle sprites
  45. class Wall(sprite.Sprite):
  46.     def __init__(self, color_1, color_2, color_3, wall_x, wall_y, wall_width, wall_height):
  47.         super().__init__()
  48.         self.color_1 = color_1
  49.         self.color_2 = color_2
  50.         self.color_3 = color_3
  51.         self.width = wall_width
  52.         self.height = wall_height
  53.         # picture of the wall — creates a rectangle of the desired size and color
  54.         self.image = Surface((self.width, self.height))
  55.         self.image.fill((color_1, color_2, color_3))
  56.         # each sprite must store a rect property
  57.         self.rect = self.image.get_rect()
  58.         self.rect.x = wall_x
  59.         self.rect.y = wall_y
  60.  
  61.     def draw_wall(self):
  62.         window.blit(self.image, (self.rect.x, self.rect.y))
  63.        
  64. #Game stage:
  65. win_width = 700
  66. win_height = 500
  67.  
  68. window = display.set_mode((win_width, win_height))
  69. display.set_caption("Maze")
  70. background = transform.scale(image.load("background.jpg"), (win_width, win_height))
  71.  
  72. #Game characters:
  73. pacman = Player('hero.png', 5, win_height - 80, 4)
  74. monster = Enemy('cyborg.png', win_width - 80, 280, 2)
  75. final = GameSprite('treasure.png', win_width - 120, win_height - 80, 0)
  76.  
  77. w1 = Wall(154, 205, 50, 100, 20 , 450, 10)
  78. w2 = Wall(154, 205, 50, 100, 480, 350, 10)
  79. w3 = Wall(154, 205, 50, 100, 20 , 10, 380)
  80.  
  81. game = True
  82. finish = False
  83. clock = time.Clock()
  84. FPS = 60
  85.  
  86. #music
  87. mixer.init()
  88. mixer.music.load('jungles.ogg')
  89. mixer.music.play()
  90.  
  91. money = mixer.Sound('money.ogg')
  92. kick = mixer.Sound('kick.ogg')
  93.  
  94. while game:
  95.     for e in event.get():
  96.         if e.type == QUIT:
  97.             game = False
  98.  
  99.     if finish != True:
  100.         window.blit(background,(0, 0))
  101.         pacman.update()
  102.         monster.update()
  103.      
  104.         pacman.reset()
  105.         monster.reset()
  106.         final.reset()
  107.  
  108.         w1.draw_wall()
  109.         w2.draw_wall()
  110.         w3.draw_wall()
  111.  
  112.     display.update()
  113.     clock.tick(FPS)
  114.  
Add Comment
Please, Sign In to add comment