Menu
CoddyTech

ابقَ على الشاشة

الدرس 7 من 41 في دورة اصنع ألعابًا باستخدام Pygame على Coddy.

استمر في الضغط على اليمين مدة كافية، وسيخرج المربع من النافذة. لإبقائه داخلها، قيّد x وy بعد تحريكهما.

تعطي min(a, b) العدد الأصغر، وتعطي max(a, b) العدد الأكبر. ويُستخدمان معًا لإبقاء عدد بين حدّين:

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

تمنع min(x, 440) قيمة x من تجاوز 440، وتمنع max(0, ...) قيمتها من النزول عن 0. لماذا 440 وليس 480؟ تمثل x الجانب الأيسر من المربع، لذا يقع الجانب الأيمن عند x + 40. عند 440 يلامس الجانب الأيمن حافة النافذة.

وينطبق الأمر نفسه على y، مع ارتفاع النافذة.

challenge icon

التحدي

سهل

أبقِ المربع داخل النافذة التي أبعادها 480 في 360.

  1. بعد اختبارات الأسهم الأربعة وقبل التعبئة، حدِّد نطاق x من 0 إلى 440.
  2. حدِّد نطاق y من 0 إلى 320.

اضغط «العب» واستمر في الضغط على أحد الأسهم: سيتوقف المربع عند الحافة. ثم اضغط «تحقق».

جرّب بنفسك

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

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

pygame.quit()

جميع دروس اصنع ألعابًا باستخدام Pygame

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