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