היכן השחקן מתחיל
חלק מהיחידה עולמות במסלול ה-Pygame של Coddy. שיעור 4 מתוך 35.
רמה קובעת איפה השחקן מתחיל, לכן הוסיפו גם אותו למפה: אחד P. כשהלולאות קוראות את המפה, המשבצת P מציינת את המיקום ההתחלתי של השחקן.
elif char == "P":
player = pygame.Rect(col * TILE + 4, row * TILE + 4, 28, 28)השחקן הוא ריבוע בגודל 28 פיקסלים, לכן הוא מתחיל במרחק של (36 - 28) / 2 = 4 פיקסלים מפינת המשבצת, במרכז המשבצת. עכשיו הזזת ה-P בטקסט משנה את נקודת ההתחלה: אין צורך לחשב מספרים.
הלולאה רצה לפני לולאת המשחק, לכן player קיים עד שלולאת המשחק מזיזה אותו. ודאו ששום דבר אחרי הלולאות לא מגדיר שוב את player, אחרת השורה המאוחרת יותר היא שתקבע.
אתגר
קלבמפה יש עכשיו P. קוד ההתחלה מציב את השחקן במיקום קבוע (40, 40).
- בלולאות של המפה, עבור
P, צרו אתplayer = pygame.Rect(col * TILE + 4, row * TILE + 4, 28, 28). - הסירו את השורה שמציבה את השחקן ב־
(40, 40).
נסו בעצמכם
import pygame
TILE = 36
WALL = (120, 90, 60)
COIN = (255, 196, 0)
PLAYER = (80, 200, 120)
LEVEL = [
"################",
"#..............#",
"#.C..####...C..#",
"#..............#",
"#....C....##...#",
"#..##.....##.C.#",
"#..##..P.......#",
"#.C.......###..#",
"#..............#",
"####..####..####",
]
pygame.init()
screen = pygame.display.set_mode((576, 360))
pygame.display.set_caption("Map from Text")
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))
player = pygame.Rect(40, 40, 28, 28)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
player.x -= 4
if keys[pygame.K_RIGHT]:
player.x += 4
if keys[pygame.K_UP]:
player.y -= 4
if keys[pygame.K_DOWN]:
player.y += 4
screen.fill((30, 30, 46))
for wall in walls:
pygame.draw.rect(screen, WALL, wall)
for coin in coins:
pygame.draw.rect(screen, COIN, coin)
pygame.draw.rect(screen, PLAYER, player)
pygame.display.flip()
clock.tick(60)
pygame.quit()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה עולמות
תרגלו בעצמכם: Pygame אונליין