عن المشروع

خادم ألعاب بايثون هو خادم وإطار عمل خفيفان لألعاب متعددة اللاعبين بنظام الأدوار. يستهدف ألعاب الطاولة والبطاقات وكذلك المقررات البرمجية حيث ينفذ الطلاب عملاء أو ألعابًا جديدة. الميزات الرئيسية الموصوفة في README: - مطابقة تلقائية أو انضمام صريح إلى الجلسات - واجهة برمجية مرنة ومحايدة تجاه اللعبة - إطار عمل يخفي تعقيدات تعدد اللاعبين عن المبرمج - إضافة ألعاب جديدة عبر الوراثة من صنف أساسي وإعادة تعريف بضع دوال - تحديثات حالة ذكية لتجنب الاستقصاء المتكرر - دعم اختياري لـ TLS - يتطلب مهارات بايثون أساسية فقط البدء السريع: شغّل الخادم (server/game_server.py)، ثم شغّل عميلين (client/tictactoe_client.py). المتطلب الوحيد هو تثبيت بايثون عادي. واجهة برمجية للعميل: تتيح وحدة client/game_server_api.py للعملاء بدء جلسة لعبة والانضمام إليها وإرسال الحركات واسترجاع حالة اللعبة وإعادة تشغيل لعبة ضمن الجلسة الحالية. يعرض README حلقة لعبة TicTacToe باستخدام GameServerAPI مع معاملات server وport وgame وsession وplayers، بالإضافة إلى استدعاءات join() وstate() وmove(**kwargs)، واستثناء IllegalMove. إضافة ألعاب: أنشئ وحدة في server/games/، ونفّذ صنفًا مشتقًا من AbstractGame، وأعد تعريف الدوال المطلوبة، وسجّله في server/games_list.py. يتوفر قالب في server/games/template.py. لا تحتاج الواجهة البرمجية إلى تغييرات للألعاب الجديدة؛ تقبل الحركات وسائط مفتاحية عشوائية وتُعاد حالة اللعبة كقاموس. تشغيل الخادم: عدّل IP والمنفذ في server/config.py، حيث يمكن ضبط إعدادات أخرى بما في ذلك TLS. يتوفر ملف وحدة systemd للتشغيل كخدمة. يتضمن ويكي المشروع مرجعًا للواجهة البرمجية وإرشادات تنفيذ العميل وملاحظات تشغيل الخادم. خلفية المشروع: طُوّر لمقرر برمجي يتعلم فيه الطلاب بايثون كلغة أولى ويعملون في مجموعات صغيرة. صُمم إطار العمل والواجهة البرمجية بحيث تكفي مهارات البرمجة الأساسية، مع أن الاستخدام لا يقتصر على التعليم. الترحيب بالمساهمات عبر طلبات السحب أو المشكلات أو المناقشات. مرخّص بموجب GPLv3، حقوق النشر 2025، 2026 Fabian Eberts.