ספרו את הכוכבים
חלק מהיחידה Python בחלון משחק במסלול ה-Pygame של Coddy. שיעור 31 מתוך 32.
השחקן צריך לדעת עד כמה השמיים מלאים. הציגו את המספר מתוך עשרים בפינה השמאלית העליונה:
text = font.render(f"Stars: {len(stars)}/20", True, (230, 230, 240))
screen.blit(text, (20, 20))מחרוזת ה-f משלבת ערך, len(stars), עם טקסט רגיל, /20. כשיש שבעה כוכבים, מוצג Stars: 7/20.
צרו את הגופן בחלק ההגדרות, ליד stars = []. יצירת גופן טוענת אותו, וזה לוקח זמן, לכן עשו זאת פעם אחת. רינדור הטקסט זול ומתבצע בכל פריים, כך שהספירה תמיד מעודכנת.
ציירו את התווית אחרונה בחלק הציור, כדי שאף כוכב לא יוכל לכסות אותה.
אתגר
קלהצגת הספירה:
- בחלק ההגדרה, יש ליצור את
font = pygame.font.Font(None, 36). - בסוף חלק הציור, יש לרנדר את
f"Stars: {len(stars)}/20"בצבע(230, 230, 240)ולצייר אותו במיקום (20, 20).
נסו בעצמכם
import random
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# הגדירו כאן את הדברים לפני לולאת המשחק.
stars = []
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.MOUSEBUTTONDOWN:
stars.append(event.pos)
# שנו כאן דברים פעם אחת בכל פריים.
screen.fill((20, 24, 48))
# ציירו כאן, אחרי מילוי הרקע.
pygame.draw.circle(screen, (240, 230, 160), (560, 80), 40)
pygame.draw.rect(screen, (14, 16, 30), (0, 430, 640, 50))
for star in stars:
colour = (255, 255, 255)
if random.randint(1, 30) == 1:
colour = (110, 120, 170)
pygame.draw.circle(screen, colour, star, 3)
pygame.display.flip()
clock.tick(60)
pygame.quit()
כל השיעורים ביחידה Python בחלון משחק
תרגלו בעצמכם: Pygame אונליין