Menu
CoddyTech

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

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

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

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

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

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

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

challenge icon

التحدي

سهل

بعد التحقق من مفاتيح الأسهم الأربعة وقبل التعبئة، أبقِ المربع داخل النافذة ذات الأبعاد 480 × 360: قيّد x من 0 إلى 440 و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()

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

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