נפילות אקראיות
שיעור 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 מציב אותו ממש מעל לחלון, כך שהוא נכנס בהחלקה מלמעלה.
אתגר
קלשחרר בלוק חדש במקום אקראי אחרי כל בלוק.
- הוסף
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 אונליין