Prise en compte d'un obstacle (pygame)

Signaler
-
 alex -
Bonjour, je voudrais savoir comment prendre en compte un obstacle en utilisant pygame:
mon personnage rencontre une barrière et la seule manière de l'éviter c'est de sauter. Je veut que si il n'évite pas la barrière, mon personnage sera bloqué.

pour savoir, l'obstacle serat une image.

1 réponse

Messages postés
845
Date d'inscription
lundi 23 mars 2020
Statut
Membre
Dernière intervention
13 janvier 2021
94
Bonjour alex,

As-tu commencé à faire quelque chose ?

As-tu un début de code à nous montrer ?

Si oui, l'indentation étant importante en Python, merci de copier/coller ici ton code complet avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Visuellement, ça doit ressembler à ceci (avec la coloration syntaxique) :

def test():
    print('test')

test()
je ne pense pas que mon code soit utile mais si tu le demande alors le voici :
main.py:
import pygame, sys
from game import Game

pygame.init()

screen = pygame.display.set_mode((1199, 800))

game = Game

running = True 

while running:
    pygame.display.flip() 
    screen.blit(game.player.skin, game.player.rect)

    if game.pressed.get(pygame.K_q):
        game.player.move_left()
    elif game.pressed.get(pygame.K_d):
        game.player.move_right()

    for event in pygame.event.get():

        if event.type == pygame.QUIT: 
            running = False 

        if event.type == pygame.KEYDOWN:
            game.pressed[event.key] = True
        elif event.type == pygame.KEYUP:
            game.pressed[event.key] = False
pygame.quit() 
sys.exit()



game.py:
import pygame
from player import Player

class Game():

    player = Player()
    pressed = {}



player.py:
import pygame

class Player(pygame.sprite.Sprite):

    def __init__(self):
        super().__init__()
        self.speed = 1.5
        self.skin = pygame.image.load('player/player_right.png')
        self.rect = self.skin.get_rect()
        self.rect.x = 100.0
        self.posx = self.rect.x
        self.rect.y = 670.0

    def move_left(self):

        self.posx -= self.speed
        self.rect.x = self.posx
        self.skin = pygame.image.load('player/player_left.png')

    def move_right(self):

        self.posx += self.speed
        self.rect.x = self.posx
        self.skin = pygame.image.load('player/player_right.png')

-je n'ai pas encore mis d'obstacle et je ne compte ne pas en mettre, c'est juste que je vais mettre un terrain (un peu cubique) et faire en sorte qu'il ne peut pas le traverser.
-dans le fichier player.py, j'ai créé une deuxième variable "posx" qui sert a ce que la variable "rect.x" soit un float.