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