ניצחון או הפסד
שיעור 15 מתוך 41 בקורס צרו משחקים עם Pygame של Coddy.
המשחק מסתיים. כאן מפסידים כשהחיים מגיעים ל־0 ומנצחים כשהניקוד מגיע ל־10. כל עוד אף אחד מהדברים האלה לא קרה, המשחק נמשך.
הכניסו את כל מה שזז תחת תנאי אחד, כדי שיפסיק כשהמשחק מסתיים:
if lives > 0 and score < 10:
# מקשים, הסל, הבלוק, תפיסות והחטאותהציור נשאר מחוץ ל־if: המסך עדיין מציג את הפריים האחרון, ומעליו את התוצאה.
if lives == 0:
message = font.render("Game over", True, (240, 240, 240))
screen.blit(message, message.get_rect(center=(240, 160)))message.get_rect(center=(240, 160)) הוא ה־Rect של תמונת הטקסט, שממוקמת כך שמרכזה נמצא ב־(240, 160). הצבה באמצעות blit ב־Rect משתמשת בפינה השמאלית העליונה שלו, ולכן הטקסט ממורכז.
אתגר
בינוניסיים את המשחק בניצחון או בהפסד.
- הוסף הזחה לכל מה שזז (המקשׁים, הסל, הבלוק, תפיסות והחטאות) תחת
if lives > 0 and score < 10:. - אחרי הניקוד ומספר החיים, הצג
Game overכאשרlives == 0, אוYou win!כאשרscore == 10, במרכז(240, 160).
לחץ על "שחק" והחטא שלושה בלוקים: Game over מופיע והמשחק נעצר. לאחר מכן לחץ על "בדיקה".
נסו בעצמכם
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((480, 360))
pygame.display.set_caption("Catch the Blocks")
clock = pygame.time.Clock()
font = pygame.font.Font(None, 32)
basket = pygame.Rect(200, 330, 80, 16)
block = pygame.Rect(220, 0, 20, 20)
score = 0
lives = 3
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]:
basket.x -= 8
if keys[pygame.K_RIGHT]:
basket.x += 8
basket.clamp_ip(screen.get_rect())
block.y += 3
if block.top > 360:
block.y = -20
block.x = random.randint(0, 460)
lives -= 1
if block.colliderect(basket):
block.y = -20
block.x = random.randint(0, 460)
score += 1
screen.fill((30, 30, 46))
pygame.draw.rect(screen, (80, 160, 255), basket)
pygame.draw.rect(screen, (235, 80, 80), block)
score_text = font.render(f"Score: {score}", True, (240, 240, 240))
screen.blit(score_text, (10, 10))
lives_text = font.render(f"Lives: {lives}", True, (240, 240, 240))
screen.blit(lives_text, (370, 10))
pygame.display.flip()
clock.tick(60)
pygame.quit()
כל השיעורים ביחידה צרו משחקים עם Pygame
2אירועים והתנגשויות
הסלבלוק נופלתרגלו בעצמכם: Pygame אונליין