סיימו את המשחק שלכם
חלק מהיחידה פרויקטים במסלול ה-Pygame של Coddy. שיעור 31 מתוך 31.
עכשיו נעבור לשלבים 3 עד 5: אתגר, סיום וטקסט. במשחק Rock Dodge הסלעים נשמרים ברשימה של Rects: סלע חדש כל 400 ms, ורבים מהם נמצאים על המסך בו־זמנית.
rocks = []
# כשמתרחש אירוע הטיימר NEW_ROCK:
rocks.append(pygame.Rect(random.randint(0, 450), -30, 30, 30))
# בכל פריים:
for rock in rocks:
rock.y += 5
if rock.colliderect(player):
state = "lost"
rocks = [rock for rock in rocks if rock.top < 360]השורה האחרונה היא יצירת רשימה באמצעות הבנת רשימה: רשימה חדשה שמכילה רק את הסלעים שעדיין נמצאים על המסך, כך שהרשימה לא תגדל לעד.
מחרוזת state, שיכולה להיות "playing", "lost" או "won", קובעת מה כל פריים עושה, כמו במשחק Sky Runner. וגם pygame.time.get_ticks() מחזירה את מספר האלפיות השנייה שחלפו מאז שהמשחק התחיל, וכך אפשר ליצור טיימר: שרוד 20 שניות כדי לנצח.
המשחק שלך יכול להשתמש בכל מה שלמדת במסלול: קבוצת ספרייטים במקום הרשימה, תמונות, צליל בעת פגיעה, מוזיקה, תפריט לפני המשחק, שיא ניקוד, וחדרים שנבנים ממפות טקסט.
הפוך את המשחק לשלך: שנה את הצבעים, את המהירויות ואת הכללים. ואז שחק בו. אם קשה מדי לנצח או קל מדי להפסיד, שנה את המספרים עד שיהיה כיף.
אתגר
קלהשלם את המשחק שלך כך שיהיו בו:
- משהו שזז מעצמו.
- טקסט על המסך, כמו ניקוד או טיימר.
- סיום: דרך לנצח, דרך להפסיד או שניהם.
הבדיקות מחפשות טקסט, משהו שזז בלי שמקש כלשהו לחוץ, משחק שרץ במשך 30 שניות בלי שגיאה וחלון שנסגר. כל השאר נתון לבחירתך: צורות או תמונות, צלילים, מוזיקה, מצבים ומפות — כולם מתאימים.
נסו בעצמכם
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Rock Dodge")
clock = pygame.time.Clock()
player = pygame.Rect(220, 320, 40, 20)
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 -= 7
if keys[pygame.K_RIGHT]:
player.x += 7
player.clamp_ip(screen.get_rect())
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), player)
pygame.display.flip()
clock.tick(60)
pygame.quit()
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה פרויקטים
תרגלו בעצמכם: Pygame אונליין