رؤوس C/C++ مختلفة أحادية الملف ومتعددة المنصات تنفذ مكتبات قائمة بذاتها.
مكتبة | وصف | أحدث نسخة | اللغة (اللغات) |
---|---|---|---|
Cute_c2 | إجراءات الكشف عن الاصطدام ثنائي الأبعاد على الأوليات، والنتائج المنطقية و/أو توليد المشعبات، واختبار الشكل المصبوب/المسح، وبث الأشعة | 1.10 | ج/ج++ |
com.cute_net | مكتبة الشبكات للألعاب التي تتطلب طبقة موثوقية اختيارية عبر UDP مع نظام أمان مدمج | 1.03 | ج/ج++ |
com.cute_tiled | محمل فعال للغاية للخرائط المتجانبة المصدرة إلى تنسيق JSON | 1.07 | ج/ج++ |
com.cute_aseprite | يوزع ملفات .ase/.aseprite في مجموعة بنية مدمجة ومريحة | 1.04 | ج/ج++ |
com.cute_sound | تحميل/تشغيل/حلقة (مع مكون إضافي)/عموم WAV + OGG (مجمع stb_vorbis لـ OGG) في أحادي/ستيريو، خلاط مخصص عالي الأداء، موسيقى + دعم التلاشي المتداخل | 2.08 | ج/ج++ |
Cute_math | المستوى الاحترافي للرياضيات المتجهة ثلاثية الأبعاد عبر SSE intrinsics | 1.02 | سي ++ |
Cute_png | تحميل/حفظ PNG، مترجم أطلس الملمس، مزيل الضغط المتوافق مع DEFLATE | 1.05 | ج/ج++ |
com.cute_spritebatch | وقت التشغيل 2D العفريت المجمع. يبني أطالس سريعة في الذاكرة. من المفيد تنفيذ أداة تجميع الكائنات لأي غرض (مثل الألعاب ثنائية الأبعاد) للعرض عالي الأداء، دون الحاجة إلى ترجمة أطالس النسيج مسبقًا على القرص. | 1.06 | ج/ج++ |
com.cute_sync | مجموعة من أساسيات المزامنة العملية، بما في ذلك قفل القراءة/الكتابة ونظام تجميع الخيوط/المهام | 1.01 | ج/ج++ |
Cute_tls | أنشئ اتصال TLS بموقع ويب عبر TCP، وهو أمر مفيد لطلبات HTTPS. | 1.01 | C/C++/Obj-C |
بشكل عام، لا تحتوي هذه الرؤوس على تبعيات وتهدف إلى تضمينها مباشرة في المصدر الخاص بك (راجع كل رأس للحصول على وثائق محددة في الجزء العلوي من الملف). يحتوي كل رأس على رمز LIBNAME_IMPLEMENTATION؛ أضف هذا إلى وحدة ترجمة واحدة في الكود الخاص بك وقم بتضمين الرأس مباشرة بعد ذلك لتحديد رموز المكتبة. فقط قم بتضمين الرأس كالمعتاد.
تحتوي بعض الرؤوس أيضًا على رمز مثال أو عروض توضيحية. في هذا الريبو فقط ابحث عن الأمثلة المقابلة أو مجلدات الاختبارات. تعتبر مجلدات الأمثلة مفيدة بشكل خاص لمعرفة كيفية استخدام رأس معين.
إليك رابط لدردشة الديسكورد الخاصة بـ Cute_headers. لا تتردد في الدخول وطرح الأسئلة أو تقديم الاقتراحات أو إجراء مناقشة. إذا كان أي شخص قد استخدم Cute_headers فسيكون من الرائع سماع تجربتك! https://discord.gg/2DFHRmX
هناك طريقة أخرى سهلة للتواصل معي وهي على تويتر @randypgaul.
- ما الفائدة من إنشاء ملف واحد؟ لماذا يوجد تنفيذ ووظائف ثابتة في الرؤوس؟
إن تضمين هذه الرؤوس يشبه تضمين رأس عادي. ومع ذلك، لتحديد التنفيذ، يبدو كل رأس كما يلي:
// Do this ONCE in a .c/.cpp file
#define LIBNAME_IMPLEMENTATION
#include "libname.h"
// Everywhere else, just include like a typical header
#include "libname.h"
سيؤدي هذا إلى تحويل الملف إلى مجموعة ملفات header + c مرة واحدة. الهدف من ذلك هو: أ) يعد التعامل مع الرأس أو إرساله إلى الأشخاص أمرًا سهلاً، ولا توجد ملفات مضغوطة أو أي شيء، فقط قم بنسخ ملف واحد ولصقه؛ ب) تعد نصوص البناء أمرًا صعبًا، ويمكن دمج هذه الملفات المفردة في أي مشروع دون تعديل نص بناء واحد.
- ألا يتم كتابة كل التعليمات البرمجية في أوقات تجميع الخراب في الرأس؟
تأتي وصمة العار المتمثلة في أن تطبيقات الرأس تبطئ وقت الترجمة من التعليمات البرمجية المضمّنة والبريد العشوائي في القالب. في كلتا الحالتين، يجب على كل وحدة ترجمة واحدة أن تتنقل عبر الرأس وتضع إصدارات مضمنة من الوظائف، أو بالنسبة للقوالب، تولد وظائف مختلفة خاصة بالنوع. ويزداد الأمر سوءًا بمجرد بدء تشغيل الرابط ويحتاج إلى دمج وحدات الترجمة معًا، وحذف الرموز المكررة. غالبًا ما تكون الروابط عبارة عن مهام ذات ترابط واحد ويمكن أن تؤدي إلى اختناق أوقات البناء.
لن يستخدم رأس الملف الفردي الذي تم إنشاؤه جيدًا أي قوالب وسيستخدمه بشكل مقتصد. بالإضافة إلى ذلك، تستخدم رؤوس الملف الفردي المصممة جيدًا #define لوضع التنفيذ (تعريفات الوظيفة ورموزها) في وحدة ترجمة واحدة . بهذه الطريقة، يعد رأس الملف الفردي المصمم جيدًا أفضل شيء يمكن أن يصادفه مترجم لغة C، بقدر ما تستغرق أوقات الإنشاء. خاصةً عندما يمكن للرأس تحديد الميزات غير الضرورية بشكل اختياري.
- أليست هذه المكتبات ذات العناوين فقط مجرد بدعة جديدة؟
أنا شخصيًا لا أعرف حقًا ما إذا كانت هذه موضة أم لا، لكن هذه الملفات ليست مجرد رؤوس. إنها رؤوس مع جزء ملف .C (التنفيذ) مرفق في النهاية. إنهما ملفان مختلفان عالقان مع معالج C الأولي، لكن جزء التنفيذ لا يظهر أبدًا إلا إذا قام المستخدم #define LIB_IMPLEMENTATION. خطوة التعريف هذه هي خطوة التكامل الوحيدة المطلوبة لاستخدام هذه الرؤوس.
لسوء الحظ، فإن كتابة مكتبة رأس جيدة أمر صعب للغاية، لذا فإن أي مكتبة رأس عشوائية موجودة في البرية ربما لا تكون فكرة جيدة. تعد STB وRJM من المكتبات الرأسية الجيدة جدًا، وهي مرجع جيد للحصول على فكرة عن شكل lib الرأس الجيد. ماتياس جوستافسون لديه مجموعتي المفضلة من الرؤوس.
- ما هو الترخيص؟
يحتوي كل lib على معلومات الترخيص في نهاية الملف. هناك خيار بين المجال العام، وzlib.
- كنت أبحث عن رأسية رأيتها من قبل، لكنها مفقودة. أين ذهبت؟
أصبحت بعض الرؤوس التي لا تحظى بشعبية أو ليست مفيدة جدًا مهملة، وهي موجودة هنا الآن.
- *هل لديكم مكتبات للمستوى العالي؟ هذه تبدو منخفضة المستوى بعض الشيء.
الرؤوس اللطيفة هي بالفعل ذات مستوى منخفض إلى حد ما. يحلون مشاكل محددة. إذا كنت تبحث عن إطار عمل لإنشاء ألعاب بمستوى أعلى، فأنا أقترح عليك تجربة Cute Framework، وهو إطار عمل لإنشاء ألعاب ثنائية الأبعاد تم إنشاؤه إلى حد كبير فوق الرؤوس اللطيفة المتنوعة ذات المستوى المنخفض التي تظهر هنا.