Menu
CoddyTech

תמונות אריחים

חלק מהיחידה עולמות במסלול ה-Pygame של Coddy. שיעור 6 מתוך 35.

המלבנים החומים מראים היכן נמצאים הקירות. תמונות גורמות לשלב להיראות כמו מקום. טענו כל תמונת אריח פעם אחת, אחרי set_mode:

block_img = pygame.image.load("assets/images/block.png").convert_alpha()
coin_img = pygame.image.load("assets/images/coin.png").convert_alpha()

כל אריח הוא בגודל 36 על 36, כמו גודלו של אריח במפה, ולכן הוא מתאים לרשת בלי שינוי קנה מידה. לתמונת המטבע יש שוליים ריקים, לכן הציגו אותה בפינת האריח, והמטבע יופיע במרכז.

שמרו את מה שצריך לצייר ברשימה אחת של זוגות: איזו תמונה והיכן. tiles.append((block_img, rect)) מוסיף זוג; לולאת המשחק מציגה את כולם:

for image, rect in tiles:
    screen.blit(image, rect)

הלולאה מפרקת כל זוג ל-image ול-rect.

challenge icon

אתגר

קל
  1. אחרי set_mode, טענו את assets/images/block.png אל block_img ואת assets/images/coin.png אל coin_img, כל אחד באמצעות convert_alpha().
  2. לפני לולאת המשחק, בנו רשימה בשם tiles: עבור כל #, הוסיפו את הזוג (block_img, pygame.Rect(col * TILE, row * TILE, TILE, TILE)); עבור כל C, הוסיפו את (coin_img, ...) עם אותו Rect.
  3. בלולאת המשחק, הציגו באמצעות blit כל זוג ברשימה tiles במקום לצייר את המלבנים החומים והצהובים.

נסו בעצמכם

import pygame

TILE = 36
WALL = (120, 90, 60)
COIN = (255, 196, 0)

LEVEL = [
    "###.............",
    "###.............",
    "..........C.....",
    ".........####...",
    "..C.............",
    ".####......C....",
    "..........###...",
    "#....C.........#",
    "###..##...###.##",
    "######..########",
]

pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Tiles")
clock = pygame.time.Clock()

walls = []
coins = []
for row, line in enumerate(LEVEL):
    for col, char in enumerate(line):
        if char == "#":
            walls.append(pygame.Rect(col * TILE, row * TILE, TILE, TILE))
        elif char == "C":
            coins.append(pygame.Rect(col * TILE + 10, row * TILE + 10, 16, 16))

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

    screen.fill((140, 200, 240))
    for wall in walls:
        pygame.draw.rect(screen, WALL, wall)
    for coin in coins:
        pygame.draw.rect(screen, COIN, coin)
    pygame.display.flip()
    clock.tick(60)

pygame.quit()
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה עולמות

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