صحيح أم خطأ
جزء من قسم Python في نافذة لعبة في رحلة Pygame على Coddy. الدرس 14 من 32.
True وFalse قيمتان مستقلتان تُسمّيان القيم المنطقية. يمكن لمتغير أن يحمل إحداهما، مثل المفتاح:
lamp_on = Falseيمكن لعبارة if اختبارها مباشرةً: تعمل if lamp_on: عندما تكون قيمتها True. تعكسها not، لذا تبدّل lamp_on = not lamp_on حالة المصباح.
يحتاج المفتاح إلى ضغطة على المفتاح، لا إلى إبقائه مضغوطًا. تكون get_pressed() بقيمة True في كل إطار يكون فيه المفتاح مضغوطًا، لذا ستبدّل حالة المصباح 60 مرة في الثانية. تحدث الضغطة مرة واحدة، على شكل حدث KEYDOWN، في حلقة الأحداث عند بداية حلقة اللعبة:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
lamp_on = not lamp_onيشرح القسم 2 الأحداث بالكامل. في الوقت الحالي: يبيّن event.type ما الذي حدث، ويبيّن event.key المفتاح الذي ضُغط.
التحدي
متوسطاجعل مفتاح المسافة يبدّل حالة المصباح:
- في جزء الإعداد، اجعل
lamp_on = False. - في حلقة الأحداث، عند وصول حدث
KEYDOWNللمفتاحK_SPACE، اجعلlamp_on = not lamp_on. - ارسم الضوء عند
(320, 290)بنصف قطر 30:(255, 220, 100)عندما تكون قيمةlamp_onهي True، وإلا فاستخدم(70, 70, 90).
جرّب بنفسك
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# هيّئ العناصر هنا قبل حلقة اللعبة.
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# عدّل العناصر هنا مرة واحدة لكل إطار.
screen.fill((20, 24, 48))
# ارسم هنا بعد ملء الشاشة.
pygame.draw.rect(screen, (90, 90, 110), (310, 300, 20, 180))
pygame.draw.circle(screen, (70, 70, 90), (320, 290), 30)
pygame.display.flip()
clock.tick(60)
pygame.quit()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Python في نافذة لعبة
تدرّب بنفسك: Playground لـ Pygame