Menu
CoddyTech

كتلة ساقطة

جزء من قسم حلقة اللعبة في رحلة Pygame على Coddy. الدرس 24 من 32.

الشيء الساقط هو شيء تزداد قيمة y لديه في كل إطار. اجعل الكتلة Rect أيضًا، وأضف إلى قيمة y لديها في كل دورة من الحلقة:

block = pygame.Rect(220, 0, 20, 20)

while running:
    # الأحداث والمفاتيح
    block.y += 3
    # املأ، ارسم

عند 60 إطارًا في الثانية، تعادل 3 بكسلات في الإطار 180 بكسلًا في الثانية. ارتفاع النافذة 360 بكسلًا، لذا تستغرق الكتلة ثانيتين لتصل إلى الأسفل.

تتحرك هذه اللعبة بحسب الإطار، كما في «حرّك مربعًا»، وليس بحسب dt. يحتفظ Rect بالأعداد الصحيحة فقط، لذا فإن خطوة مثل 0.6 بكسل ستُقَرَّب إلى 0، ولن يتحرك Rect أبدًا. تحتفظ الألعاب التي تحرّك Rects بحسب الزمن بالموقع في Vector2، ثم تنسخه إلى Rect.

تواصل الكتلة السقوط بعد مغادرتها النافذة. لا شيء يوقفها حتى الآن؛ سيعيدها الدرس التالي.

challenge icon

التحدي

سهل
  1. أسفل السلة، أنشئ block = pygame.Rect(220, 0, 20, 20).
  2. في الحلقة، بعد تحريك السلة، أضف 3 إلى block.y.
  3. ارسم الكتلة باللون الأحمر (235, 80, 80) بعد السلة.

جرّب بنفسك

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)

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())

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

pygame.quit()

جميع دروس حلقة اللعبة

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