Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- pygame.init()
- width = 1200
- height = 600
- window = pygame.display.set_mode((width, height))
- pygame.display.set_caption("Platformer Game")
- # Spremenljivke, ki jih bomo potrebovali za igralca
- # ---
- class Player:
- def __init__(self, x, y):
- self.size = 75
- self.position = pygame.Rect(x, y, self.size, self.size)
- self.image = pygame.image.load("images/scratch-cat.png")
- self.image = pygame.transform.scale(self.image, (self.size, self.size))
- self.speed_x = 0
- self.speed_y = 0
- self.on_ground = False
- player = Player(100, 100)
- 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)]
- # ---
- def resolve_collision(rect_a, rect_b):
- # Compute overlap distances in x and y
- dx1 = rect_b.right - rect_a.left
- dx2 = rect_a.right - rect_b.left
- dy1 = rect_b.bottom - rect_a.top
- dy2 = rect_a.bottom - rect_b.top
- # Find the smallest displacement to separate them
- min_dx = min(dx1, dx2)
- min_dy = min(dy1, dy2)
- if min_dx < min_dy:
- # Move rect_a left or right
- if dx1 < dx2:
- rect_a.x += dx1 # Move right
- else:
- rect_a.x -= dx2 # Move left
- else:
- # Move rect_a up or down
- if dy1 < dy2:
- rect_a.y += dy1 # Move down
- else:
- player.on_ground = True
- rect_a.y -= dy2 # Move up
- return True # Collision was resolved
- # Glavna zanka igre
- clock = pygame.time.Clock()
- running = True
- while running:
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- running = False
- window.fill((255, 255, 255))
- # background_image = pygame.image.load("images/New Piskel.png")
- # background_image = pygame.transform.scale(background_image, (width, height))
- # window.blit(background_image, (0, 0))
- # Premikanje igralčevega lika
- # ---
- # Vsako ponovitev zanke (vsak frame) dobimo pritisnjene tipke
- # in se glede na njih odločimo, kako bomo igralca premaknili
- keys = pygame.key.get_pressed()
- if keys[pygame.K_d]:
- player.speed_x = 5
- elif keys[pygame.K_a]:
- player.speed_x = -5
- else:
- player.speed_x = 0
- if keys[pygame.K_SPACE] and player.on_ground == True:
- player.on_ground = False
- player.speed_y = -25
- if player.speed_y < 20:
- player.speed_y += 1
- player.position.x += player.speed_x
- player.position.y += player.speed_y
- if player.position.x < 0:
- player.position.x = 0
- if player.position.x > width - player.size:
- player.position.x = width - player.size
- if player.position.y < 0:
- player.position.y = 0
- if player.position.y > height - player.size:
- player.position.y = height - player.size
- for platform in platforms:
- if player.position.colliderect(platform):
- resolve_collision(player.position, platform)
- # ---
- # Izris likov
- # ---
- window.blit(player.image, player.position)
- for platform in platforms:
- pygame.draw.rect(window, (0, 127, 0), platform)
- # window.blit(slika_ovire, platform)
- # ---
- pygame.display.update()
- clock.tick(60)
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement