لوحة النتائج
الدرس 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.
التحدي
سهلاحتفظ بالنتيجة لكلا اللاعبين.
- قبل الحلقة، أنشئ
font = pygame.font.Font(None, 36)وleft_score = 0وright_score = 0. - خروج الكرة من الجهة اليمنى يضيف 1 إلى
left_score، ومن الجهة اليسرى يضيف 1 إلىright_score؛ وفي الحالتين أعد الكرة إلى موضعها. - اعرض
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