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. ציירו באמצעות blit את floor_img על background כאשר courtyard.collidepoint(x, y) הוא True, ואת 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: להגן על המצודה

תרגלו בעצמכם: Pygame אונליין