Menu
CoddyTech

נפילות אקראיות

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

כשהבלוק נופל מעבר לתחתית, החזר אותו מעל לחלק העליון כדי שייפול שוב. החלק העליון שלו נמצא מעבר לתחתית כאשר block.top > 360.

כדי להפוך את המשחק לפחות צפוי, הפיל אותו במקום אקראי. המודול random של Python בוחר מספרים: random.randint(0, 460) הוא מספר שלם מ־0 עד 460, כולל שניהם.

import random

if block.top > 360:
    block.y = -20
    block.x = random.randint(0, 460)

למה 460? רוחב הבלוק הוא 20, ולכן ערך x של 460 מציב את הצד הימני שלו בקצה החלון. ו־y = -20 מציב אותו ממש מעל לחלון, כך שהוא נכנס בהחלקה מלמעלה.

challenge icon

אתגר

קל

שחרר בלוק חדש במקום אקראי אחרי כל בלוק.

  1. הוסף import random בחלק העליון.
  2. אחרי שהבלוק נופל, כאשר block.top > 360, הגדר את block.y = -20 ואת block.x ל-random.randint(0, 460).

לחץ על "שחק": הבלוקים ממשיכים ליפול במקומות אקראיים. לאחר מכן לחץ על "בדיקה".

נסו בעצמכם

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()

basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)

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_LEFT]:
        basket.x -= 8
    if keys[pygame.K_RIGHT]:
        basket.x += 8
    basket.clamp_ip(screen.get_rect())

    block.y += 3

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (80, 160, 255), basket)
    pygame.draw.rect(screen, (235, 80, 80), block)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

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

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