בנו את המערות
חלק מהיחידה עולמות במסלול ה-Pygame של Coddy. שיעור 28 מתוך 35.
Moss Caves הוא משחק פלטפורמה משלך: רוצו דרך מערה מכוסה טחב, אספו מטבעות, קפצו מעל קוצים ובורות, רמסו כתמים, מצאו את המפתח, פתחו את הדלת והגיעו לדגל. כל שלב מוסיף חלק אחד, שנבנה ממה שיצרתם ביחידה הזאת.
כל השלב הוא המפה שבקוד הפתיחה, ברוחב של 64 עמודות. # הוא קרקע, P הוא נקודת ההתחלה, והאותיות האחרות מייצגות דברים שתוסיפו: מטבעות C, קוצים ^, כתמים E, המפתח K, הדלת D, הדגל F. עד ששלב כלשהו יקרא אות, האריח שלה נשאר ריק.
קודם כול, בנו את הקרקע. מעבר אחד על פני המפה ממלא את walls במופעי Rect להתנגשויות ואת tiles בזוגות (image, Rect) לציור, תוך בחירה בין דשא, אדמה או אריח קצה באמצעות solid(), כמו בפרק Tiles:
rect = pygame.Rect(col * TILE, row * TILE, TILE, TILE)
if char == "#":
# בחר תמונה באמצעות solid(), כמו קודם
walls.append(rect)
tiles.append((image, rect))
elif char == "P":
start = rect.midbottomהשחקן עומד על start, במרכז החלק התחתון של אריח P.
אתגר
בינוני- לפני לולאת המשחק, צרו את
wallsואתtiles, ואז עברו בלולאה על המפה. עבור כל#, בחרו אתdirt_img, אתgrass_left_img, אתgrass_right_imgאו אתgrass_imgבאמצעותsolid(), כמו בשיעור „אריחי קצה”, והוסיפו את ה־Rect ל־wallsואת הזוג ל־tiles. - עבור
P, הגדירו אתstartלערךmidbottomשל האריח. - צרו את
player = player_img.get_rect(midbottom=start). - בלולאת המשחק, אחרי הרקע, ציירו כל אריח במיקום ה־Rect שלו, ואז את השחקן.
נסו בעצמכם
import pygame
TILE = 36
WIDTH, HEIGHT = 576, 360
LEVEL = [
"................................................................",
"................................................................",
"................................................................",
"................................................................",
"#..............................................................#",
"#....................C.........................#####...........#",
"#......CC...C................CC.....CC.........#####.....CC....#",
"#....................#.........................D...............#",
"#.P.........#...E....#...^.......K......E......D.C....^......F.#",
"#######..####################..##########################..#####",
]
pygame.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Moss Caves")
clock = pygame.time.Clock()
def load(name):
return pygame.image.load("assets/images/" + name).convert_alpha()
background = pygame.image.load("assets/backgrounds/forest.png").convert_alpha()
grass_img = load("grass.png")
grass_left_img = load("grass_left.png")
grass_right_img = load("grass_right.png")
dirt_img = load("dirt.png")
player_img = load("player.png")
def solid(row, col):
if row < 0 or row >= len(LEVEL) or col < 0 or col >= len(LEVEL[0]):
return False
return LEVEL[row][col] == "#"
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
for y in range(0, HEIGHT, 72):
for x in range(0, WIDTH, 72):
screen.blit(background, (x, y))
pygame.display.flip()
clock.tick(60)
pygame.quit()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה עולמות
7מערות הטחב
בנו את המערותרוצו וקפצותרגלו בעצמכם: Pygame אונליין