לנצח או להפסיד
חלק מהיחידה לולאת המשחק במסלול ה-Pygame של Coddy. שיעור 29 מתוך 32.
המשחק מסתיים. כאן מפסידים כשהחיים מגיעים ל־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). ציור על גבי 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()
כל השיעורים ביחידה לולאת המשחק
5תפוס את הבלוקים
הסלבלוק נופלתרגלו בעצמכם: Pygame אונליין