Menu
CoddyTech

سقوط عشوائي

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

عندما تسقط الكتلة إلى ما بعد الحافة السفلية، أعدها إلى أعلى الحافة العلوية لكي تسقط مجددًا. يكون أعلاها قد تجاوز الحافة السفلية عندما 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 الكتلة فوق النافذة مباشرة، فتدخل منها من الأعلى.

challenge icon

التحدي

سهل
  1. أضف import random في الأعلى.
  2. بعد سقوط الكتلة، عندما يكون 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()

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

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