לוח תוצאות
שיעור 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
4שני שחקנים וכדור
הכדורקפיצהתרגלו בעצמכם: Pygame אונליין