Menu
CoddyTech

عُدّ النجوم

جزء من قسم 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 = []. إنشاء الخط يحمّله، وهذا يستغرق وقتًا، لذا افعل ذلك مرة واحدة. عرض النص عملية سريعة وتحدث في كل إطار، ولذلك يكون العدد محدّثًا دائمًا.

ارسم التسمية أخيرًا في جزء الرسم، حتى لا يحجبها أي نجم.

challenge icon

التحدي

سهل

اعرض العدد:

  1. في جزء الإعداد، اكتب font = pygame.font.Font(None, 36).
  2. في نهاية جزء الرسم، اعرض 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