عُدّ النجوم
جزء من قسم Python في نافذة لعبة في رحلة Pygame على Coddy. الدرس 31 من 32.
يحتاج اللاعب إلى معرفة مدى اقتراب السماء من الامتلاء. اعرض العدد من أصل عشرين في الزاوية العلوية اليسرى:
text = font.render(f"Stars: {len(stars)}/20", True, (230, 230, 240))
screen.blit(text, (20, 20))تمزج السلسلة النصية المنسقة قيمةً، 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 في نافذة لعبة
تدرّب بنفسك: Playground لـ Pygame