נפילות אקראיות
שיעור 11 מתוך 40 בקורס יוצרים משחקים עם 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 מציב אותו ממש מעל לחלון, כך שהוא נכנס בהחלקה מלמעלה.
אתגר
קל- הוסף
import randomבראש הקובץ. - אחרי שהבלוק נופל, כאשר
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
2אירועים והתנגשויות
הסלבלוק נופלתרגלו בעצמכם: Pygame אונליין