תמונות אריחים
חלק מהיחידה עולמות במסלול ה-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.
אתגר
קל- אחרי
set_mode, טענו אתassets/images/block.pngאלblock_imgואתassets/images/coin.pngאלcoin_img, כל אחד באמצעותconvert_alpha(). - לפני לולאת המשחק, בנו רשימה בשם
tiles: עבור כל#, הוסיפו את הזוג(block_img, pygame.Rect(col * TILE, row * TILE, TILE, TILE)); עבור כלC, הוסיפו את(coin_img, ...)עם אותו Rect. - בלולאת המשחק, הציגו באמצעות 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()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה עולמות
תרגלו בעצמכם: Pygame אונליין