صنفك الأول
جزء من قسم الكائنات والصور في رحلة Pygame على Coddy. الدرس 10 من 36.
يتكوّن النجم من ثلاثة متغيرات: star_x وstar_y وstar_speed. هذا مناسب لنجم واحد؛ أما السماء الممتلئة بالنجوم فتحتاج إلى طريقة أفضل لإبقاء أرقام كل نجم معًا.
الصنف هو مخطط لنوع من الكائنات. يحمل كل كائن مُنشأ منه قيمه الخاصة، وتُسمّى هذه القيم السمات:
class Star:
def __init__(self, x, y):
self.x = x
self.y = y
self.speed = 2
star = Star(320, 0)ينشئ Star(320, 0) كائنًا جديدًا من الصنف Star. ثم تشغّل Python الدالة __init__ عليه، وهي الدالة داخل الصنف التي تهيّئ كل كائن جديد (الاسم الذي يتكوّن من شرطتين سفليتين على كل جانب هو الاسم الذي تبحث عنه Python)، باستخدام x = 320 وy = 0. داخلها، يشير self إلى الكائن الجديد، لذا تخزّن self.x = x القيمة 320 فيه. وخارج الصنف، يمكنك الوصول إلى القيمة نفسها باستخدام star.x، وتغييرها بالطريقة نفسها: star.y += star.speed.
تبدأ أسماء الأصناف بحرف كبير: Star هو المخطط، وstar نجم واحد أُنشئ منه.
التحدي
سهل- اكتب صنفًا باسم
Starيخزّنself.xوself.yوself.speed = 2في__init__(self, x, y). - استبدل المتغيرات الثلاثة بـ
star = Star(320, 0). - في الحلقة، استخدم
star.yوstar.speedوstar.xبدلًا من المتغيرات القديمة.
جرّب بنفسك
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Falling Star")
clock = pygame.time.Clock()
star_x = 320
star_y = 0
star_speed = 2
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
star_y += star_speed
if star_y > 480:
star_y = 0
screen.fill((20, 22, 40))
pygame.draw.circle(screen, (255, 255, 255), (star_x, star_y), 4)
pygame.display.flip()
clock.tick(60)
pygame.quit()
جميع دروس الكائنات والصور
4الكائنات الرسومية والمجموعات
صنف Spriteالمجموعاتالإزالة باستخدام kill()الالتقاط باستخدام spritecollideمجموعة ضد مجموعة2دوّر واقلب وغيّر الحجم
التدوير حول المركزوجّهها في اتجاه الطيرانغيّر حجم الصورةدوّر انطلاقًا من الصورة الأصلية5تصادمات مثالية على مستوى البكسل
المستطيلات تبدو غير منصفةالأقنعةكائنات Sprite مثالية على مستوى البكسلمناطق التصادم الدائرية6التحريك باستخدام أوراق الرسوم المتحركة
قصّ ورقة الرسوم المتحركةعداد الإطاراتالتحريك باستخدام الوقتانفجار لمرة واحدةتدرّب بنفسك: Playground لـ Pygame