لوحة النتائج
الدرس 34 من 40 في دورة اصنع ألعابًا باستخدام 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. في الحالتين، أعد الكرة إلى المنتصف واعكسvx. - اعرض
f"{left_score} : {right_score}"باللون(240, 240, 240)، مع توسيطه عند(300, 30).
جرّب بنفسك
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