|
After Width: | Height: | Size: 2.9 MiB |
|
After Width: | Height: | Size: 3.1 MiB |
|
After Width: | Height: | Size: 3.3 MiB |
|
After Width: | Height: | Size: 2.9 MiB |
|
Before Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 1.4 MiB |
|
After Width: | Height: | Size: 660 KiB |
|
After Width: | Height: | Size: 738 KiB |
|
After Width: | Height: | Size: 795 KiB |
|
After Width: | Height: | Size: 880 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 1.9 MiB |
|
After Width: | Height: | Size: 1.4 MiB |
@ -0,0 +1,14 @@
|
|||||||
|
import pygame
|
||||||
|
import settings
|
||||||
|
|
||||||
|
class Obstacle:
|
||||||
|
def __init__(self, x, y, image_path):
|
||||||
|
self.image = pygame.image.load(image_path).convert_alpha()
|
||||||
|
self.image = pygame.transform.scale(self.image, (300, 150)) # Größe anpassen
|
||||||
|
self.rect = self.image.get_rect(topleft=(x, y))
|
||||||
|
|
||||||
|
def draw(self, screen, camera_offset):
|
||||||
|
screen.blit(self.image, (self.rect.x - camera_offset, self.rect.y))
|
||||||
|
|
||||||
|
def get_rect(self):
|
||||||
|
return self.rect
|
||||||
@ -0,0 +1,69 @@
|
|||||||
|
import pygame
|
||||||
|
import settings
|
||||||
|
|
||||||
|
class Player:
|
||||||
|
def __init__(self, x, y):
|
||||||
|
# PLAYER BILDER
|
||||||
|
# --- NORMAL
|
||||||
|
self.image_normal = pygame.transform.scale(pygame.image.load(settings.player.fred.normal).convert_alpha(),settings.player.size)
|
||||||
|
|
||||||
|
# --- JUMP
|
||||||
|
self.image_jump = pygame.transform.scale(pygame.image.load(settings.player.fred.olli).convert_alpha(),settings.player.size)
|
||||||
|
|
||||||
|
# --- BACK
|
||||||
|
self.image_left = pygame.transform.scale(pygame.image.load(settings.player.fred.left).convert_alpha(),settings.player.size)
|
||||||
|
|
||||||
|
self.image = self.image_normal # Anfangszustand
|
||||||
|
self.rect = self.image.get_rect(topleft=(x, y))
|
||||||
|
self.velocity_y = 0
|
||||||
|
self.speed = settings.player.speed
|
||||||
|
self.gravity = settings.player.gravity
|
||||||
|
self.jump_strength = settings.player.jump_strength
|
||||||
|
self.on_ground = False
|
||||||
|
|
||||||
|
def update(self, ground_y, obstacles=[]):
|
||||||
|
keys = pygame.key.get_pressed()
|
||||||
|
|
||||||
|
# Bewegung seitlich
|
||||||
|
if keys[pygame.K_LEFT]:
|
||||||
|
self.rect.x -= self.speed
|
||||||
|
if keys[pygame.K_RIGHT]:
|
||||||
|
self.rect.x += self.speed
|
||||||
|
|
||||||
|
# Sprung
|
||||||
|
if keys[pygame.K_SPACE] and self.on_ground:
|
||||||
|
self.velocity_y = self.jump_strength
|
||||||
|
self.on_ground = False
|
||||||
|
|
||||||
|
# Gravitation
|
||||||
|
self.velocity_y += self.gravity
|
||||||
|
self.rect.y += self.velocity_y
|
||||||
|
self.on_ground = False # zurücksetzen
|
||||||
|
|
||||||
|
# Plattform-Kollision prüfen
|
||||||
|
for obs in obstacles:
|
||||||
|
if self.rect.colliderect(obs.get_rect()):
|
||||||
|
# nur wenn Spieler von oben kommt
|
||||||
|
if self.velocity_y > 0 and self.rect.bottom <= obs.get_rect().top + 20:
|
||||||
|
self.rect.bottom = obs.get_rect().top
|
||||||
|
self.velocity_y = 0
|
||||||
|
self.on_ground = True
|
||||||
|
|
||||||
|
# Boden-Kollision
|
||||||
|
if self.rect.bottom >= ground_y:
|
||||||
|
self.rect.bottom = ground_y
|
||||||
|
self.velocity_y = 0
|
||||||
|
self.on_ground = True
|
||||||
|
|
||||||
|
# Bildlogik
|
||||||
|
if not self.on_ground:
|
||||||
|
self.image = self.image_jump
|
||||||
|
elif keys[pygame.K_LEFT]:
|
||||||
|
self.image = self.image_left
|
||||||
|
elif keys[pygame.K_RIGHT]:
|
||||||
|
self.image = self.image_normal
|
||||||
|
else:
|
||||||
|
self.image = self.image_normal
|
||||||
|
|
||||||
|
def draw(self, screen):
|
||||||
|
screen.blit(self.image, self.rect)
|
||||||