Menu
CoddyTech

לוח התוצאות

שיעור 34 מתוך 41 בקורס צרו משחקים עם Pygame של Coddy.

כדור שיוצא מימין מעניק נקודה לשחקן שמשמאל, ולהפך. פצלו את הבדיקה לשניים, כדי שכל צד ידע מי הבקיע:

if ball.left > 600:
    left_score += 1
    ball.center = (300, 200)
    vx = -vx
if ball.right < 0:
    right_score += 1
    ball.center = (300, 200)
    vx = -vx

הציגו את שתי התוצאות בשורה אחת בחלק העליון, במרכז: f"{left_score} : {right_score}" מוצג כך: 2 : 1.

challenge icon

אתגר

קל

נהלו את הניקוד של שני השחקנים.

  1. לפני הלולאה, צרו את font = pygame.font.Font(None, 36), את left_score = 0 ואת right_score = 0.
  2. כדור שיוצא מימין מוסיף 1 ל־left_score, וכדור שיוצא משמאל מוסיף 1 ל־right_score; בשני המקרים עדיין מאפסים את מיקום הכדור.
  3. הציגו את f"{left_score} : {right_score}" בצבע (240, 240, 240), במרכז (300, 30).

לחצו על "שחק" ותנו לכדור לחמוק מכם: הניקוד יהיה 1 : 0. לאחר מכן לחצו על "בדיקה".

נסו בעצמכם

import pygame

pygame.init()
screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pong")
clock = pygame.time.Clock()

ball = pygame.Rect(293, 193, 14, 14)
vx, vy = 5, 4
left = pygame.Rect(20, 160, 12, 80)
right = pygame.Rect(568, 160, 12, 80)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    if keys[pygame.K_w]:
        left.y -= 6
    if keys[pygame.K_s]:
        left.y += 6
    if keys[pygame.K_UP]:
        right.y -= 6
    if keys[pygame.K_DOWN]:
        right.y += 6
    left.clamp_ip(screen.get_rect())
    right.clamp_ip(screen.get_rect())

    ball.x += vx
    ball.y += vy
    if ball.top <= 0 or ball.bottom >= 400:
        vy = -vy
    if ball.colliderect(left):
        vx = abs(vx)
    if ball.colliderect(right):
        vx = -abs(vx)
    if ball.right < 0 or ball.left > 600:
        ball.center = (300, 200)
        vx = -vx

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), left)
    pygame.draw.rect(screen, (235, 80, 80), right)
    pygame.draw.rect(screen, (255, 196, 0), ball)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

כל השיעורים ביחידה צרו משחקים עם Pygame

תרגלו בעצמכם: Pygame אונליין