Prise en compte d'un obstacle (pygame)

Fermé
alex - 11 janv. 2021 à 14:45
 alex - 11 janv. 2021 à 18:31
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.
A voir également:

1 réponse

Phil_1857 Messages postés 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
11 janv. 2021 à 16:27
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()
0
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.
0