החצר
שיעור 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), שבמקרה הזה היא הפינה השמאלית העליונה של אריח, נמצאת בתוכו.
אתגר
קל- מתחת ל־
# build the courtyard here, עברו בלולאה על כל שורה ועמודה של אריחים. - ציירו באמצעות blit את
floor_imgעלbackgroundכאשרcourtyard.collidepoint(x, y)הוא True, ואתwall_imgבכל מקום אחר. - בלולאת המשחק, החליפו את
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 אונליין