Advertisement
shh_algo_PY

Pro - Arcade 2

Nov 25th, 2022
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.23 KB | None | 0 0
  1. from random import randint
  2. from pygame import*
  3.  
  4. win_width = 800
  5. win_height = 600
  6.  
  7. x_start, y_start = 20, 10
  8.  
  9. img_file_back = 'cave.png'
  10. img_file_hero = 'm1.png'
  11. img_file_enemy = 'enemy.png'
  12.  
  13. C_GREEN = (32, 128, 32)
  14.  
  15. class Hero(sprite.Sprite):
  16.     def __init__(self, filename, x_speed=0, y_speed=0, x=x_start, y=y_start, width=120, height=120):
  17.         sprite.Sprite.__init__(self)
  18.        
  19.         self.image = transform.scale(image.load(filename), (width, height)).convert_alpha()
  20.    
  21.         self.rect = self.image.get_rect()
  22.        
  23.         self.rect.x = x
  24.         self.rect.y = y
  25.        
  26.         self.x_speed = x_speed
  27.         self.y_speed = y_speed
  28.    
  29.     # NEW
  30.  
  31.     def gravitate(self):
  32.         self.y_speed += 0.25
  33.    
  34.     def jump(self, y):
  35.         if self.stands_on:
  36.             self.y_speed = y
  37.    
  38.     def update(self):
  39.         self.rect.x += self.x_speed
  40.  
  41.         # Touching check: Platforms
  42.         # Just checking, they don't disappear!
  43.         platforms_touched = sprite.spritecollide(self, barriers, False)
  44.  
  45.         # Processing movement: R
  46.         if self.x_speed > 0:
  47.             for p in platforms_touched:
  48.                 self.rect.right = min(self.rect.right, p.rect.left)
  49.        
  50.         # Processing movement: L
  51.         elif self.x_speed < 0:
  52.             for p in platforms_touched:
  53.                 self.rect.left = max(self.rect.left, p.rect.right)
  54.        
  55.         self.gravitate()
  56.         self.rect.y += self.y_speed
  57.  
  58.         platforms_touched = sprite.spritecollide(self, barriers, False)
  59.        
  60.         if self.y_speed > 0:
  61.             for p in platforms_touched:
  62.                 self.y_speed = 0
  63.                 if p.rect.top < self.rect.bottom:
  64.                     self.rect.bottom = p.rect.top
  65.                     self.stands_on = p
  66.        
  67.         elif self.y_speed < 0:
  68.             self.stands_on = False
  69.             for p in platforms_touched:
  70.                 self.y_speed = 0  
  71.                 self.rect.top = max(self.rect.top, p.rect.bottom)
  72.  
  73. class Wall(sprite.Sprite):
  74.     def __init__(self, x=20, y=0, width=120, height=120, color=C_GREEN):
  75.         sprite.Sprite.__init__(self)
  76.         self.image = Surface([width, height])
  77.         self.image.fill(color)
  78.    
  79.         self.rect = self.image.get_rect()
  80.         self.rect.x = x
  81.         self.rect.y = y
  82.  
  83. class Enemy(sprite.Sprite):
  84.     def __init__(self, x=20, y=0, filename=img_file_enemy, width=100, height=100):
  85.         sprite.Sprite.__init__(self)
  86.    
  87.         self.image = transform.scale(image.load(filename), (width, height)).convert_alpha()
  88.         self.rect = self.image.get_rect()
  89.         self.rect.x = x
  90.         self.rect.y = y
  91.    
  92.     # NEW
  93.     def update(self):
  94.         self.rect.x += randint(-5, 5)
  95.         self.rect.y += randint(-5, 5)
  96.  
  97. display.set_caption("ARCADE")
  98. window = display.set_mode([win_width, win_height])
  99.  
  100. back = transform.scale(image.load(img_file_back).convert(), (win_width, win_height))
  101.  
  102. all_sprites = sprite.Group()
  103. barriers = sprite.Group()
  104. enemies = sprite.Group()
  105.  
  106. player = Hero(img_file_hero)
  107. all_sprites.add(player)
  108.  
  109. w1 = Wall(50, 150, 480, 20)
  110. barriers.add(w1)
  111. all_sprites.add(w1)
  112.  
  113. w2 = Wall(700, 50, 50, 360)
  114. barriers.add(w2)
  115. all_sprites.add(w2)
  116.  
  117. w3 = Wall(350, 380, 640, 20)
  118. barriers.add(w3)
  119. all_sprites.add(w3)
  120.  
  121. w4 = Wall(-200, 590, 1600, 20)
  122. barriers.add(w4)
  123. all_sprites.add(w4)
  124.  
  125. e1 = Enemy(50, 480)
  126. all_sprites.add(e1)
  127. enemies.add(e1)
  128.  
  129. e2 = Enemy(400, 480)
  130. all_sprites.add(e2)
  131. enemies.add(e2)
  132.  
  133. run = True
  134. finished = False
  135.  
  136. while run:
  137.  
  138.     for e in event.get():
  139.        
  140.         if e.type == QUIT:
  141.             run = False
  142.        
  143.         elif e.type == KEYDOWN:
  144.             if e.key == K_LEFT:
  145.                 player.x_speed = -5
  146.             elif e.key == K_RIGHT:
  147.                 player.x_speed = 5
  148.             elif e.key == K_UP:
  149.                 player.jump(-7)
  150.        
  151.         elif e.type == KEYUP:
  152.             if e.key == K_LEFT:
  153.                 player.x_speed = 0
  154.             elif e.key == K_RIGHT:
  155.                 player.x_speed = 0
  156.    
  157.     if not finished:
  158.         window.blit(back, (0,0))
  159.         all_sprites.update()
  160.         all_sprites.draw(window)
  161.  
  162.     display.update()
  163.     time.delay(20)
  164.  
  165.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement