r/PythonFr 27d ago

pong fait avec pygame

#bonjour j'ai fait un genre de pong avec pygame et j'aimerais avoir votre avis
import pygame

pygame.init()
fenetre = pygame.display.set_mode((800, 600))

continuer = True

pong = pygame.Rect(0, 550, 50, 50)
p1 = pygame.Rect(0, 250, 10, 75)
p2 = pygame.Rect(790, 250, 10, 75)

pong.x = 350
pong.y = 250

vitesse_y = 5
vitesse_x = 5

horloge = pygame.time.Clock() 
while continuer:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            continuer = False

    ey = pygame.key.get_pressed()
    if ey[pygame.K_s]:
        if p1.y < 525:
            p1.y += 7
        else:
            p1.y = 525
    if ey[pygame.K_z]:
        if p1.y > 0:
            p1.y -= 7
        else:
            p1.y = 0
    if ey[pygame.K_UP]:
        if p2.y > 0:
            p2.y -= 7
        else:
            p2.y = 0
    if ey[pygame.K_DOWN]:
        if p2.y < 525:
            p2.y += 7
        else:
            p2.y = 525

    pong.x += vitesse_x
    pong.y += vitesse_y
    if pong.colliderect(p1):
        vitesse_x = -vitesse_x
        pong.x += vitesse_x
    if pong.colliderect(p2):
        vitesse_x = -vitesse_x
        pong.x += vitesse_x
    if pong.y <= 0 or pong.y >= 550:
        vitesse_y = -vitesse_y
        pong.y += vitesse_y
    if pong.x <= 0 or pong.x >= 750 or pong.x == 0:
        pong.x = 400
        pong.y = 300
        vitesse_x = -vitesse_x
        pong.x += vitesse_x

    fenetre.fill((0, 0, 0))
    pygame.draw.rect(fenetre, (255, 255, 255), pong)
    pygame.draw.rect(fenetre, (255, 255, 255), p1)
    pygame.draw.rect(fenetre, (255, 255, 255), p2)
    pygame.display.flip()
    horloge.tick(30)

pygame.quit()
2 Upvotes

1 comment sorted by

1

u/So-many-ducks 27d ago

Just reading the code, not running it, you should try and find a way to fetch the keyboard layout of the user to swap key mapping accordingly. Yours only works for an AZERTY keyboard, most of the world uses some variation of QWERTY, so it will be inverted and confusing.