لوحة النتائج
جزء من قسم المشاريع في رحلة Pygame على Coddy. الدرس 16 من 31.
خروج الكرة من الجهة اليمنى يمنح نقطة للاعب الأيسر، والعكس صحيح. قسّم الاختبار إلى قسمين، حتى يعرف كل جانب من سجّل:
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()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المشاريع
تدرّب بنفسك: Playground لـ Pygame