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

تدرّب بنفسك: Playground لـ Pygame