Advertisement
MCreeper12731

Lesson 6 - Coins

Apr 7th, 2025
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.73 KB | None | 0 0
  1. import pygame
  2. pygame.init()
  3.  
  4. width = 1200
  5. height = 600
  6. window = pygame.display.set_mode((width, height))
  7. pygame.display.set_caption("Platformer Game")
  8.  
  9. # Spremenljivke, ki jih bomo potrebovali za igralca
  10. # ---
  11.  
  12. class Player:
  13.     def __init__(self, x, y):
  14.         self.size = 75
  15.         self.position = pygame.Rect(x, y, self.size, self.size)
  16.         self.image = pygame.image.load("images/scratch-cat.png")
  17.         self.image = pygame.transform.scale(self.image, (self.size, self.size))
  18.         self.speed_x = 0
  19.         self.speed_y = 0
  20.         self.on_ground = False
  21.         self.score = 0
  22.         self.direction = 0
  23.    
  24.     def move(self):
  25.         keys = pygame.key.get_pressed()
  26.         if keys[pygame.K_d]:
  27.             self.speed_x = 5
  28.             self.direction = 1
  29.         elif keys[pygame.K_a]:
  30.             self.speed_x = -5
  31.             self.direction = -1
  32.         else:
  33.             self.speed_x = 0
  34.  
  35.         if keys[pygame.K_SPACE] and self.on_ground == True:
  36.             self.on_ground = False
  37.             self.speed_y = -18
  38.  
  39.         if self.speed_y < 20:
  40.             self.speed_y += 1
  41.  
  42.         self.position.x += self.speed_x
  43.         self.position.y += self.speed_y
  44.  
  45.         if self.position.x < 0:
  46.             self.position.x = 0
  47.         if self.position.x > width - self.size:
  48.             self.position.x = width - self.size
  49.         if self.position.y < 0:
  50.             self.position.y = 0
  51.         if self.position.y > height - self.size:
  52.             self.position.y = height - self.size
  53.        
  54.         for platform in platforms:
  55.             if self.position.colliderect(platform):
  56.                 resolve_collision(self.position, platform)
  57.  
  58.        
  59.  
  60. player = Player(100, 100)
  61. player2 = Player(300, 300)
  62.  
  63. platforms = [pygame.Rect(0, height - 50, width, 50), pygame.Rect(300, 500, 200, 20), pygame.Rect(600, 350, 200, 20), pygame.Rect(900, 400, 200, 20)]
  64.  
  65. # ---
  66.  
  67. def resolve_collision(rect_a, rect_b):
  68.     # Compute overlap distances in x and y
  69.     dx1 = rect_b.right - rect_a.left
  70.     dx2 = rect_a.right - rect_b.left
  71.     dy1 = rect_b.bottom - rect_a.top
  72.     dy2 = rect_a.bottom - rect_b.top
  73.  
  74.     # Find the smallest displacement to separate them
  75.     min_dx = min(dx1, dx2)
  76.     min_dy = min(dy1, dy2)
  77.  
  78.     if min_dx < min_dy:
  79.         # Move rect_a left or right
  80.         if dx1 < dx2:
  81.             rect_a.x += dx1  # Move right
  82.         else:
  83.             rect_a.x -= dx2  # Move left
  84.     else:
  85.         # Move rect_a up or down
  86.         if dy1 < dy2:
  87.             player.speed_y = 0
  88.             rect_a.y += dy1  # Move down
  89.         else:
  90.             player.on_ground = True
  91.             player.speed_y = 0
  92.             rect_a.y -= dy2  # Move up
  93.    
  94.     return True  # Collision was resolved
  95.  
  96. # Glavna zanka igre
  97. clock = pygame.time.Clock()
  98. running = True
  99. while running:
  100.     for event in pygame.event.get():
  101.         if event.type == pygame.QUIT:
  102.             running = False
  103.  
  104.     window.fill((255, 255, 255))
  105.     # background_image = pygame.image.load("images/New Piskel.png")
  106.     # background_image = pygame.transform.scale(background_image, (width, height))
  107.     # window.blit(background_image, (0, 0))
  108.     # Premikanje igralčevega lika
  109.     # ---
  110.  
  111.     # Vsako ponovitev zanke (vsak frame) dobimo pritisnjene tipke
  112.     # in se glede na njih odločimo, kako bomo igralca premaknili
  113.  
  114.     player.move()
  115.  
  116.  
  117.     # ---
  118.     # Izris likov
  119.     # ---
  120.  
  121.     if (player.direction < 0):
  122.         window.blit(pygame.transform.flip(player.image, True, False), player.position)
  123.     else:
  124.         window.blit(player.image, player.position)
  125.     for platform in platforms:
  126.         pygame.draw.rect(window, (0, 127, 0), platform)
  127.  
  128.  
  129.     # ---
  130.  
  131.     pygame.display.update()
  132.     clock.tick(60)
  133.  
  134. pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement