Menu
CoddyTech

الصوت عند وقوع حدث

جزء من قسم الصوت وإحساس اللعب في رحلة 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 مرة في الثانية، مُصدرًا أزيزًا طويلًا.

challenge icon

التحدي

سهل

يجمع المربع الأخضر العملات باستخدام مفاتيح الأسهم. أضف صوتًا لكل عملة:

  1. قبل الحلقة، حمّل assets/sounds/coin.ogg في coin_sound.
  2. شغّله داخل عبارة 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()
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الصوت وإحساس اللعب

تدرّب بنفسك: Playground لـ Pygame