أعداد عشوائية
جزء من قسم Python في نافذة لعبة في رحلة Pygame على Coddy. الدرس 28 من 32.
تختار وحدة random في Python الأعداد عشوائيًا. استوردها في أعلى البرنامج، فوق import pygame أو تحته:
import randomتعطي random.randint(a, b) عددًا صحيحًا من a إلى b، مع تضمين الطرفين. وتختار random.choice(items) عنصرًا واحدًا من قائمة:
x = random.randint(20, 620)
size = random.choice([3, 4, 5])في كل استدعاء، تختار قيمة جديدة، لذا استدعها عندما تحتاج إلى قيمة جديدة. نجمة يضعها الضغط على Space:
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
x = random.randint(20, 620)
y = random.randint(60, 300)
stars.append((x, y))لاحظ القوسين المتداخلين في stars.append((x, y)): تأخذ append عنصرًا واحدًا، وهذا العنصر هو الصف (x, y). أما إذا اخترت x وy مرة واحدة قبل حلقة اللعبة، فستظهر كل نجمة في الموضع نفسه.
التحدي
متوسطاجعل مفتاح المسافة ينثر النجوم:
- أضف
import randomفي الأعلى. - عند وصول حدث
KEYDOWNللمفتاحK_SPACE، اخترx = random.randint(20, 620)وy = random.randint(60, 300)، وأضف(x, y)إلىstars. - تظل النقرات تضيف النجوم كما في السابق.
جرّب بنفسك
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# هيّئ الأشياء هنا، قبل حلقة اللعبة.
stars = []
font = pygame.font.Font(None, 36)
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))
# ارسم هنا، بعد ملء الشاشة.
for star in stars:
pygame.draw.circle(screen, (255, 255, 255), star, 5)
text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))
screen.blit(text, (20, 20))
pygame.display.flip()
clock.tick(60)
pygame.quit()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Python في نافذة لعبة
تدرّب بنفسك: Playground لـ Pygame