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
- self.score = 0
- self.direction = 0
- def move(self):
- keys = pygame.key.get_pressed()
- if keys[pygame.K_d]:
- self.speed_x = 5
- self.direction = 1
- elif keys[pygame.K_a]:
- self.speed_x = -5
- self.direction = -1
- else:
- self.speed_x = 0
- if keys[pygame.K_SPACE] and self.on_ground == True:
- self.on_ground = False
- self.speed_y = -18
- if self.speed_y < 20:
- self.speed_y += 1
- self.position.x += self.speed_x
- self.position.y += self.speed_y
- if self.position.x < 0:
- self.position.x = 0
- if self.position.x > width - self.size:
- self.position.x = width - self.size
- if self.position.y < 0:
- self.position.y = 0
- if self.position.y > height - self.size:
- self.position.y = height - self.size
- for platform in platforms:
- if self.position.colliderect(platform):
- resolve_collision(self.position, platform)
- player = Player(100, 100)
- player2 = Player(300, 300)
- 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:
- player.speed_y = 0
- rect_a.y += dy1 # Move down
- else:
- player.on_ground = True
- player.speed_y = 0
- 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
- player.move()
- # ---
- # Izris likov
- # ---
- if (player.direction < 0):
- window.blit(pygame.transform.flip(player.image, True, False), player.position)
- else:
- window.blit(player.image, player.position)
- for platform in platforms:
- pygame.draw.rect(window, (0, 127, 0), platform)
- # ---
- pygame.display.update()
- clock.tick(60)
- pygame.quit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement