סיים את המשחק שלך
שיעור 40 מתוך 40 בקורס יוצרים משחקים עם Pygame של Coddy.
עכשיו נעבור לשלבים 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", מחליפה כמה דגלים. ו-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
תרגלו בעצמכם: Pygame אונליין