Bonjour ! J'ai un problème: je crée un système de scrolling sur mon rpg fait avec pygame mais le joueur va plus vite que le scroll C'est un problème :p ... Donc je suis là pour vous poser cette question savez-vous comment résoudre le problème?
Merci d'avance pour vos réponses !

main.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import pygame
from game import Game
from level import *
pygame.init()
 
lvl = Level()
screen = pygame.display.set_mode((1024, 768))
pygame.display.set_caption("RPG") 
game = Game()
cam = Camera(1024, 768)
running = True
lvl.generer()
print(game.player.rect)
clock = pygame.time.Clock()
lvl.afficher(screen, 0, 0, cam.rect.x, cam.rect.y)
 
while running:
    cam.update(game.player)
    #print(cam.rect.topleft)
    if game.pressed.get(pygame.K_RIGHT):
        game.player.move_right()
        lvl.afficher(screen, 0, 0, cam.rect.x, cam.rect.y)
        #print(game.player.rect.x)
 
    elif game.pressed.get(pygame.K_LEFT):
        game.player.move_left()
        lvl.afficher(screen, 0, 0, cam.rect.x, cam.rect.y)
        #print(game.player.rect.x)
 
    elif game.pressed.get(pygame.K_DOWN):
        game.player.move_down()
        lvl.afficher(screen, 0, 0, cam.rect.x, cam.rect.y)
        #print(game.player.rect.y)
 
    elif game.pressed.get(pygame.K_UP):
        game.player.move_up()
        lvl.afficher(screen, 0, 0, cam.rect.x, cam.rect.y)
        #print(game.player.rect.y)
 
    #print(cam.rect.x, cam.rect.y)
    #print(cam.rect)
 
    screen.blit(game.player.image, game.player.rect)
 
    pygame.display.flip()
 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            pygame.quit()
 
        elif event.type == pygame.KEYDOWN:
             game.pressed[event.key] = True
 
        elif event.type == pygame.KEYUP:
            game.pressed[event.key] = False
level.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import pygame
from game import Game
from level import *
pygame.init()
 
lvl = Level()
screen = pygame.display.set_mode((1024, 768))
pygame.display.set_caption("RPG") 
game = Game()
cam = Camera(1024, 768)
running = True
lvl.generer()
print(game.player.rect)
clock = pygame.time.Clock()
lvl.afficher(screen, 0, 0, cam.rect.x, cam.rect.y)
 
while running:
    cam.update(game.player)
    #print(cam.rect.topleft)
    if game.pressed.get(pygame.K_RIGHT):
        game.player.move_right()
        lvl.afficher(screen, 0, 0, cam.rect.x, cam.rect.y)
        #print(game.player.rect.x)
 
    elif game.pressed.get(pygame.K_LEFT):
        game.player.move_left()
        lvl.afficher(screen, 0, 0, cam.rect.x, cam.rect.y)
        #print(game.player.rect.x)
 
    elif game.pressed.get(pygame.K_DOWN):
        game.player.move_down()
        lvl.afficher(screen, 0, 0, cam.rect.x, cam.rect.y)
        #print(game.player.rect.y)
 
    elif game.pressed.get(pygame.K_UP):
        game.player.move_up()
        lvl.afficher(screen, 0, 0, cam.rect.x, cam.rect.y)
        #print(game.player.rect.y)
 
    #print(cam.rect.x, cam.rect.y)
    #print(cam.rect)
 
    screen.blit(game.player.image, game.player.rect)
 
    pygame.display.flip()
 
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            pygame.quit()
 
        elif event.type == pygame.KEYDOWN:
             game.pressed[event.key] = True
 
        elif event.type == pygame.KEYUP:
            game.pressed[event.key] = False
player.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import pygame
from level import Camera
 
class Player(pygame.sprite.Sprite):
    def __init__(self, game):
        super(Player, self).__init__()
        self.game = game
        self.health = 100
        self.maxHealth = 100
        self.attack = 10
        self.velocity = 7
        self.dimension = (64, 88)
        self.image = pygame.image.load("assets/player/player_face/player_face.png")
        self.original_image = pygame.image.load("assets/player/player_face/player_face.png")
        self.image = pygame.transform.scale(self.image, self.dimension) 
        self.rect = self.image.get_rect()
        self.rect.x = 512
        self.rect.y = 384
 
 
 
    def move_right(self):
        self.rect.x += self.velocity
        self.image = pygame.image.load("assets/player/player_profileLeft/player_profile_left.png")
        self.image = pygame.transform.scale(self.image, self.dimension)
 
 
    def move_left(self):
        self.rect.x -= self.velocity
        self.image = pygame.image.load("assets/player/player_profileRight/player_profile_right.png")
        self.image = pygame.transform.scale(self.image, self.dimension)
 
    def move_down(self):
        self.rect.y += self.velocity
        self.image = pygame.image.load("assets/player/player_face/player_face.png")
        self.image = pygame.transform.scale(self.image, self.dimension)
 
    def move_up(self):
        self.rect.y -= self.velocity
        self.image = pygame.image.load("assets/player/player_back/player_dos.png")
        self.image = pygame.transform.scale(self.image, self.dimension)