📚 استخدام مكتبة Pygame لرسم الأشكال
المفاهيم الأساسية
نظام ألوان (RGB): تعريف ألوان البرنامج باستخدام قيم الأحمر والأخضر والأزرق.
الشاشة (screen): النافذة التي يتم إنشاؤها والرسم عليها.
pygame.draw.rect(): دالة تستخدم لرسم مستطيل.
pygame.draw.lines(): دالة تستخدم لرسم خطوط.
خريطة المفاهيم
```markmap
المكتبات والنماذج البرمجية في بايثون
مفهوم النموذج البرمجي
تعريف
- حزمة ملفات تحتوي مقاطع برمجية
- امتدادها .py
- يتم استيرادها لتنفيذ وظائف
مصادر النماذج
المكتبة القياسية (Standard library)
#### تعريف
- تُثبَّت تلقائياً مع بايثون
- جزء أساسي من اللغة
- تحتوي على أكثر من 200 نموذج برمجي
#### طرق الاستيراد
##### 1. استيراد الكل
- الأمر: `from module_name import *`
##### 2. استيراد دوال من نموذج برمجي
- الأمر: `from module_name import function_a, function_b, function_c`
##### 3. استيراد النماذج البرمجية
- الأمر: `import module_name`
##### أمثلة على نماذجها
###### math
- الهدف: الوصول إلى دوال وثوابت رياضية شائعة
- طريقة الاستيراد: `import math`
- أمثلة على استخدامه:
-
الدوال الأكبتان (التقريب)
- `math.ceil(x)`: تقريب الرقم `x` إلى أقرب عدد صحيح أكبر (السقف).
- مثال: `math.ceil(10.1657)` ← 11
- `math.floor(x)`: تقريب الرقم `x` إلى أقرب عدد صحيح أصغر (الأرضية).
- مثال: `math.floor(10.1657)` ← 10
- مثال مع الأرقام السالبة: `math.floor(-10.1657)` ← -11
###### tkinter
- الهدف: إنشاء واجهات رسومية (GUI).
- طريقة الاستيراد: `from tkinter import *` (حالة نموذجية لاستيراد الكل بسبب كثرة الدوال المستخدمة).
- خطوات إنشاء نافذة أساسية:
1. `window = Tk()`: إنشاء كائن النافذة.
2. `window.title("عنوان")`: تحديد عنوان النافذة.
3. `window.geometry("عرضxارتفاع")`: تحديد حجم النافذة.
4. `window.mainloop()`: إبقاء النافذة مفتوحة.
###### time
- الهدف: توفير دوال للعمل مع الأوقات.
- طريقة الاستيراد: `import time`
- أمثلة على استخدامه:
- معرفة الوقت بالساعة والدقيقة (تنسيق 24 ساعة) واليوم من الأسبوع وما إذا كان صباحًا أم مساءً.
- الأمر: `print(time.strftime("%H:%M"), time.strftime("%A %p"))`
- مثال على المخرجات: `10:49 Wednesday AM`
###### datetime
- الهدف: التعامل مع التواريخ والوقت بكثرة في البرامج المختلفة.
- طريقة الاستيراد: `import datetime`
- أمثلة على استخدامه:
- معرفة تاريخ اليوم.
- الأمر: `print(datetime.date.today())`
- مثال على المخرجات: `2023-11-15`
- يمكن استخراج السنة والشهر واليوم من التاريخ.
- استخدام سمة (Attribute) الدالة:
- الصيغة العامة: `module_name.function_name().attribute_name`
- مثال لاستخراج اليوم: `datetime.date.today().day`
- مثال لاستخراج الشهر: `datetime.date.today().month`
- مثال لاستخراج السنة: `datetime.date.today().year`
- حساب الأيام المتبقية لحدث (مثال: يوم التأسيس):
1. استيراد `date` من `datetime`.
2. الحصول على تاريخ اليوم: `today = date.today()`.
3. تحديد تاريخ الحدث: `foundationDay = date(today.year, 2, 22)`.
4. التحقق إذا مضى الحدث هذا العام باستخدام `date.replace()`:
- `if foundationDay < today: foundationDay = foundationDay.replace(year=today.year + 1)`
5. حساب الفرق بالأيام: `time_to_foundationDay = foundationDay - today`.
6. طباعة النتيجة: `print("Days left:", time_to_foundationDay.days)`.
###### pygame
- الهدف: استخدام النموذج لإنشاء أشكال هندسية على الشاشة.
- خطوات التثبيت في PyCharm:
1. الضغط على
Packages (الحزم).
2. كتابة باي جايم (pygame) في شريط البحث.
3. اختيار pygame والضغط على Install (تثبيت).
4. ظهور رسالة تؤكد اكتمال التثبيت.
- `import pygame`: استيراد جميع الدوال المنتمية لهذا النموذج البرمجي.
- `pygame.init()`: تهيئة جميع دوال pygame التي يتم استدعاؤها.
- `screen = pygame.display.set_mode((x,y))`: فتح نافذة بالحجم (x,y) وحفظها في متغير اسمه (screen).
- `colorName = (r,g,b)`: تعريف متغير اللون في نظام (RGB).
- `screen.fill(colorName)`: تعبئة الشاشة باللون المحدد.
- `pygame.display.update()`: عرض جميع الرسومات الخاصة بك منذ آخر استدعاء.
-
رسم مستطيل:
- الدالة: `pygame.draw.rect()`
- مثال: `pygame.draw.rect(screen, red, pygame.Rect(30, 30, 60, 60))`
- رسم خطوط:
- الدالة: `pygame.draw.lines()`
- مثال: `pygame.draw.lines(screen, pink, False, [(i,10), (250,350)], 1)`
- معاملات الدالة:
- `screen`: الشاشة المرسوم عليها.
- `pink`: لون الخط.
- `False`: عدم إغلاق الشكل (عدم توصيل نقطة النهاية بالبداية).
- `[(i,10), (250,350)]`: قائمة بنقاط البداية والنهاية للخط.
- `1`: سمك الخط.
- إبقاء النافذة مفتوحة:
- استخدام دالة `time.sleep(5)` من نموذج `time` لإبقاء النافذة مفتوحة لمدة 5 ثوانٍ قبل إغلاقها بـ `pygame.quit()`.
مميزات إنشاء المقطع البرمجي الخاص
- يلائم احتياجاتك الحقيقية
- التحكم الكامل والقدرة على التصحيح والتغيير الفوري
- أكثر موثوقية (معلومات التوثيق في النماذج الخارجية قد تكون غير كافية أو غير صحيحة)
- تجنب مشكلة توقف التحديثات إذا توقف المطور الأصلي
- تجنب التكلفة العالية أو القيود على ترخيص النماذج الخارجية
مدير حزم بايثون (PIP)
دوره
- تثبيت حزم غير متوفرة في المكتبة القياسية
فهرس حزمة بايثون (PyPI)
- مستودع برامج خاص ببايثون
- موقع افتراضي للبحث عن الحزم
- يستضيف الحزم التي يساهم بها المجتمع
طريقة التثبيت
- الأمر: `install`
- مثال: تثبيت حزمة `pygame` (مكتبة مفتوحة المصدر لإنشاء تطبيقات الوسائط المتعددة والألعاب)
الحزمة
- تحتوي على جميع الملفات المطلوبة في النموذج البرمجي
```
نقاط مهمة
- يتم تعريف الألوان في Pygame باستخدام نظام (RGB) مثل `darkBlue = (0,0,128)`.
- دالة `pygame.draw.rect()` ترسم مستطيلاً، وتحتاج إلى تحديد الشاشة واللون ومستطيل الإحداثيات.
- دالة `pygame.draw.lines()` ترسم خطوطاً، وتحدد فيها نقاط البداية والنهاية وسمك الخط.
- يتم استخدام `time.sleep(5)` لإبقاء النافذة المرسومة مفتوحة لمدة 5 ثوانٍ قبل إغلاق البرنامج.