Menu
CoddyTech

صل إلى الهدف

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

تحتاج اللعبة إلى هدف. ارسم مربعًا أخضر في الزاوية السفلية اليمنى، وعندما يدخل مربع اللاعب إليه، يفوز اللاعب.

يقع الهدف عند (420, 300) وأبعاده 60 في 60. يكون مربع اللاعب داخل الهدف عندما يكون جانبه الأيسر عند 420 أو أكثر، وأعلاه عند 300 أو أكثر. يجب أن يتحقق الشرطان، لذا اربطهما بـ and.

يجب أن يستمر الفوز. احتفظ به في متغير يبدأ بـ False ولا تتغير قيمته أبدًا إلا إلى True:

won = False

while running:
    # حرّك المربع
    if x >= 420 and y >= 300:
        won = True
    if won:
        screen.fill((40, 110, 70))
    else:
        screen.fill((30, 30, 46))

بمجرد أن تصبح قيمة won هي True، لا يعيدها أي شيء إلى قيمتها السابقة، لذا تظل الخلفية خضراء حتى لو غادر المربع الهدف.

challenge icon

التحدي

سهل
  1. قبل الحلقة، عيّن won = False.
  2. بعد تقييد x وy، عيّن won = True عندما يكون x >= 420 وy >= 300.
  3. املأ الشاشة باللون (40, 110, 70) عندما تكون قيمة won صحيحة، وباللون (30, 30, 46) خلاف ذلك.
  4. قبل رسم مربع اللاعب، ارسم الهدف: باللون الأخضر (60, 200, 120) عند (420, 300, 60, 60).

جرّب بنفسك

import pygame

pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Move the Square")
clock = pygame.time.Clock()

x, y = 220, 160

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    keys = pygame.key.get_pressed()
    speed = 4
    if keys[pygame.K_SPACE]:
        speed = 8
    if keys[pygame.K_LEFT]:
        x -= speed
    if keys[pygame.K_RIGHT]:
        x += speed
    if keys[pygame.K_UP]:
        y -= speed
    if keys[pygame.K_DOWN]:
        y += speed

    x = max(0, min(x, 480 - 40))
    y = max(0, min(y, 360 - 40))

    screen.fill((30, 30, 46))
    pygame.draw.rect(screen, (255, 196, 0), (x, y, 40, 40))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconاختبر نفسك

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

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

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