צליל בעת אירוע
חלק מהיחידה צליל ותחושת משחק במסלול ה-Pygame של Coddy. שיעור 2 מתוך 23.
לצליל יש רגע משלו: המטבע נאסף, הדלת נפתחת, האויב נפגע. בקוד שלך כבר יש מקום לכל רגע כזה — ה־if שמשנה את המשחק כשהוא מתרחש. השמע את הצליל בתוך אותו if:
if player.colliderect(coin):
score += 1
coin_sound.play()
coin.x = random.randint(20, 444)ה־if מתקיים למשך פריים אחד בלבד, כי המטבע זז באותו פריים. לכן הצליל מתחיל פעם אחת לכל מטבע.
אם הצליל יושמע במקום אחר, הוא יאבד את הרגע שלו. בקוד הציור שמתחת ל־if score > 0: הוא יתחיל שוב בכל פריים אחרי איסוף המטבע הראשון: 60 פעמים בשנייה, זמזום אחד ארוך.
אתגר
קלהריבוע הירוק אוסף מטבעות בעזרת מקשי החצים. הוסף צליל לכל מטבע:
- לפני הלולאה, טען את
assets/sounds/coin.oggלתוךcoin_sound. - השמע אותו בתוך ה־
ifשאוסף את המטבע, פעם אחת לכל מטבע.
נסו בעצמכם
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Coins")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 32)
player = pygame.Rect(220, 160, 40, 40)
coin = pygame.Rect(100, 100, 16, 16)
score = 0
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]:
player.x -= 5
if keys[pygame.K_RIGHT]:
player.x += 5
if keys[pygame.K_UP]:
player.y -= 5
if keys[pygame.K_DOWN]:
player.y += 5
player.clamp_ip(screen.get_rect())
if player.colliderect(coin):
score += 1
coin.x = random.randint(20, 444)
coin.y = random.randint(50, 324)
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (255, 210, 60), coin)
pygame.draw.rect(screen, (90, 200, 120), player)
score_text = font.render(f"Coins: {score}", True, (240, 240, 240))
screen.blit(score_text, (10, 10))
pygame.display.flip()
clock.tick(60)
pygame.quit()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה צליל ותחושת משחק
תרגלו בעצמכם: Pygame אונליין