Menu
CoddyTech

الفناء

الدرس 1 من 20 في دورة مشروع Pygame: الصمود في القلعة على Coddy.

في هذه الدورة، تبني لعبة كاملة، ميزةً في كل درس. يقف فارس في ساحة قلعة ليلًا. تأتي الوحوش من فوق الأسوار، ويزداد عددها أكثر فأكثر، وتطلق أسلحة الفارس النار من تلقاء نفسها. كل ما عليك هو التحرك. اصمد حتى الفجر، وستُنجى القلعة.

تبدأ اللعبة بالساحة: شبكة من مربعات بحجم 48 بكسل، 15 مربعًا عرضًا و10 مربعات طولًا، أرضية في الداخل وجدار حول الحافة. يمكنك رسم 150 مربعًا في كل إطار، لكنها لا تتغير أبدًا. ارسمها مرة واحدة على Surface بحجم النافذة، ثم اعرض تلك الصورة على الشاشة في كل إطار:

background = pygame.Surface((WIDTH, HEIGHT))
for row in range(HEIGHT // TILE):
    for col in range(WIDTH // TILE):
        x = col * TILE
        y = row * TILE
        background.blit(floor_img, (x, y))

courtyard هو Rect داخل الجدران. تكون courtyard.collidepoint(x, y) True عندما تكون النقطة (x, y)، وهي هنا الزاوية العلوية اليسرى لمربع، داخلها.

challenge icon

التحدي

سهل
  1. أسفل # build the courtyard here، كرّر على كل صف وعمود من البلاطات.
  2. ارسم floor_img على background حيث تكون courtyard.collidepoint(x, y) صحيحة، وارسم wall_img في كل مكان آخر.
  3. في حلقة اللعبة، استبدل screen.fill((20, 20, 30)) بـ screen.blit(background, (0, 0)).

جرّب بنفسك

import pygame

WIDTH, HEIGHT = 720, 480
TILE = 48

pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Hold the Keep")
clock = pygame.time.Clock()


def load(name):
    return pygame.image.load("assets/images/" + name).convert_alpha()


floor_img = load("floor.png")
wall_img = load("wall.png")

courtyard = pygame.Rect(TILE, TILE, WIDTH - 2 * TILE, HEIGHT - 2 * TILE)
background = pygame.Surface((WIDTH, HEIGHT))
# أنشئ ساحة القلعة هنا


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

    screen.fill((20, 20, 30))
    pygame.display.flip()
    clock.tick(60)

pygame.quit()

جميع دروس مشروع Pygame: الصمود في القلعة

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