I want to implement solid blocks to my simple platformer game I´m working on, but I don´t know how. I tried lots of things, but nothing work. I want to do following: when I jUMP on it, I will stay there when I jump underneath it, I won´t reach the top when I jump from left side, I won´t reach the right side when I jump from right side, I won´t reach the left side
I would really appreciate your help, thanks.
my code:
from pygame.locals import *
SCREEN_WIDTH = 1923
SCREEN_HEIGHT = 1000
class Player(pygame.sprite.Sprite):
def __init__(self, x, y):
super(Player, self).__init__()
self.surf = pygame.image.load('C:\Sprites\mrkva.png').convert()
self.surf.set_colorkey((0, 0, 0), RLEACCEL)
self.rect = self.surf.get_rect()
self.rect.y = y
self.rect.x = x
self.isJump = False
self.jumpCount = 9
def update(self, pressed_keys):
if pressed_keys[K_a]:
self.rect.move_ip(-10, 0)
if pressed_keys[K_d]:
self.rect.move_ip(10, 0)
if pressed_keys[K_LEFT]:
self.rect.move_ip(-10, 0)
if pressed_keys[K_RIGHT]:
self.rect.move_ip(10, 0)
if self.rect.left < 0:
self.rect.left = 0
if self.rect.right > SCREEN_WIDTH:
self.rect.right = SCREEN_WIDTH
if self.rect.top <= 0:
self.rect.top = 0
if self.rect.bottom >= 970:
self.rect.bottom = 970
def jump(self):
if self.isJump:
if self.jumpCount >= -10:
neg = 3
if self.jumpCount < 0:
neg = -3
self.rect.y -= self.jumpCount**2 * 0.101 * neg
self.jumpCount -= 1
else:
self.isJump = False
self.jumpCount = 9
class Platform(pygame.sprite.Sprite):
def __init__(self, xloc, yloc):
super(Platform, self).__init__()
self.surf = pygame.image.load('C:\Sprites\kocka.png').convert()
self.surf.set_colorkey((255, 255, 255), RLEACCEL)
self.rect = self.surf.get_rect()
self.rect.y = yloc
self.rect.x = xloc
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption('gameee')
platform = Platform(1, 527)
player = Player(1, 969)
all_sprites = pygame.sprite.Group()
all_sprites.add(platform)
all_sprites.add(player)
clock = pygame.time.Clock()
run = True
while run:
for event in pygame.event.get():
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
run = False
elif event.key == K_SPACE:
player.isJump = True
elif event.type == QUIT:
run = False
clock.tick(35)
screen.blit(player.surf, player.rect)
screen.fill((28, 173, 234))
for entity in all_sprites:
screen.blit(entity.surf, entity.rect)
pygame.display.flip()
pressed_keys = pygame.key.get_pressed()
player.jump()
player.update(pressed_keys)
pygame.display.update()
pygame.quit()```