Menu
CoddyTech
flag He iconעבריתdown icon

חזרה למרכז

שיעור 33 מתוך 40 בקורס יוצרים משחקים עם Pygame של Coddy.

כשהשחקן מחטיא, הכדור יוצא מהחלון בצד שלו. החזירו אותו לאמצע ושלחו אותו לכיוון הצד השני.

if ball.right < 0 or ball.left > 600:
    ball.center = (300, 200)
    vx = -vx

ball.right < 0 פירושו שכל הכדור עבר את הקצה השמאלי, ו-ball.left > 600 פירושו שכל הכדור עבר את הקצה הימני. הגדרת ball.center מזיזה את ה-Rect כך שמרכזו יהיה בנקודה הזאת; גודלו נשאר זהה.

הפקודה vx = -vx כאן בטוחה: הכדור נמצא באמצע, רחוק מכל מחבט.

challenge icon

אתגר

קל

כשהכדור כולו עובר את הקצה השמאלי או הימני, הגדר את center שלו ל-(300, 200) והפוך את vx.

נסו בעצמכם

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)

    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()
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יוצרים משחקים עם Pygame

תרגלו בעצמכם: Pygame אונליין