كتلة ساقطة
جزء من قسم حلقة اللعبة في رحلة 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.
تواصل الكتلة السقوط بعد مغادرتها النافذة. لا شيء يوقفها حتى الآن؛ سيعيدها الدرس التالي.
التحدي
سهل- أسفل السلة، أنشئ
block = pygame.Rect(220, 0, 20, 20). - في الحلقة، بعد تحريك السلة، أضف 3 إلى
block.y. - ارسم الكتلة باللون الأحمر
(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