mlx_42_examples — أمثلة عملية على مكتبة MiniLibX بلغة C
أمثلة قابلة للتشغيل على مكتبة MiniLibX بلغة C — نافذة وخطوط وخوارزمية Bresenham ورايكاستينغ، مع

عن هذا المشروع
مجموعة أمثلة عملية على مكتبة MiniLibX بلغة C: فتح نافذة، رسم خطوط بخوارزمية Bresenham، ورايكاستينغ، مع بيئة تطوير جاهزة عبر Docker.
التقنيات
مستودع أمثلة مرجعية لمكتبة MiniLibX، موجّه لطلاب 42 المقبلين على مشاريع الرسم مثل FdF وcub3d. المستودع ما زال قيد التطوير.
نظرة عامة
MiniLibX مكتبة رسم مبسّطة تُستخدم في مشاريع 42 الرسومية، لكن توثيقها شحيح. هذا المستودع يقدّم أمثلة قصيرة وقابلة للتشغيل بدلاً من شرح نظري، مع بيئة تطوير جاهزة تعمل حتى على Windows.
| المثال | ما يغطيه |
|---|---|
src/window |
تهيئة MLX، إنشاء نافذة، ورسم خطوط |
src/bresenham |
رسم الخطوط بخوارزمية Bresenham |
| ray-cast | تطبيق رايكاستينغ مُحال إليه من مستودع خارجي |
المشكلة
العقبة أمام مشاريع MLX نادراً ما تكون الخوارزمية نفسها، بل ما يسبقها:
- مكتبتان مختلفتان بالاسم نفسه. إصدار MLX على macOS يختلف عن إصدار Linux، والربط يختلف تبعاً لذلك.
- لا توجد أمثلة رسمية كافية. التوثيق يصف الدوال دون أن يربطها في برنامج يعمل من أوّل تشغيل.
- مطوّرو Windows خارج المعادلة. MLX لا تدعم Windows أصلاً، فيتوقّف الطالب عند خطوة التهيئة قبل أن يكتب سطراً واحداً.
التخطيط
رُتّبت الأمثلة تصاعدياً: مثال يثبت أن البيئة تعمل (نافذة تظهر)، ثم مثال يقدّم خوارزمية رسم حقيقية، ثم مثال مرجعي لمشروع كامل. كل مثال يسكن مجلداً مستقلاً تحت src/ ليُقرأ وحده دون تتبّع بقية المستودع.
القرارات المعمارية
اختيار المكتبة داخل Makefile لا في التعليمات. البديل الشائع أن يقول README «إن كنت على Linux فغيّر أمر الربط». هذا ينجح مرة ويفشل مع أوّل مستخدم يتجاوز السطر. هنا يكتشف Makefile نظام التشغيل ويربط إصدار MLX المناسب، فيبقى make أمراً واحداً على النظامين.
بيئة Docker مع X11 بدل التثبيت المحلي. المستودع يتضمّن مجلد .devcontainer، فيُفتح مباشرة داخل حاوية من VS Code. الرسم يخرج من الحاوية إلى خادم X على جهاز المضيف، وهذا ما يفتح الباب أمام مستخدمي Windows عبر Xming.
التنفيذ
التهيئة خارج الحاوية تتطلّب السماح للحاوية بالوصول إلى خادم العرض:
# على جهاز المضيف (macOS / Linux)
xhost + .ثم داخل الحاوية يُوجّه الإخراج إلى عنوان المضيف:
export DISPLAY=<HOST IP>:0.0
xclock # اختبار سريع — ظهور الساعة يعني أن المسار سليمعلى Windows تُضبط أداة Xming على وضع Multiple windows، مع Start no client، وتعطيل التحكم بالوصول. اختبار xclock متعمّد: فصل مشكلة العرض عن مشكلة الشيفرة يوفّر ساعات من التخمين عندما تبقى النافذة سوداء.
النتيجة والدروس
المستودع يختصر المسافة بين «مشروع رسومي جديد» و«نافذة ترسم شيئاً» إلى أمر بناء واحد، وهو ما زال ينمو بأمثلة جديدة.
- البيئة جزء من المشروع. تغليف التهيئة في
.devcontainerحوّل «لا تعمل عندي» إلى مشكلة قابلة للإعادة والإصلاح. - المثال يسبق الشرح. مثال قابل للترجمة يوصل معنى دالة MLX أسرع من فقرة تصف وسائطها.
الروابط
- المستودع: github.com/i99dev/mlx_42_examples