عن المشروع

تطبيق "سيد 8-ball" هو تطبيق PWA للعبة بلياردو (8-ball) فردية مصمم للهواتف في الوضع الأفقي. يمكن اللعب مباشرة عبر فتح صفحة الويب، أو إضافته إلى الشاشة الرئيسية للهاتف، والعمل دون اتصال بعد التحميل الأول. فيما يتعلق بأسلوب اللعب، يقوم اللاعب بتحريك إصبعه على طاولة البلياردو لضبط اتجاه العصا، والتحكم في قوة الضربة عبر شريط القوة على الجانب الأيمن، ثم النقر على "ضرب" للتأكيد. بعد أول تسجيل قانوني، يتم توزيع الكرات الصلبة أو المخططة على اللاعب. الفوز يتحقق بإدخال جميع كرات مجموعته ثم إدخال الكرة السوداء 8. إدخال الكرة البيضاء، أو عدم لمس الكرة المستهدفة، أو لمس كرة من المجموعة الخاطئة أولاً يعتبر خطأ، مما يمنح الخصم كرة حرة؛ عندما يحصل اللاعب على كرة حرة، يمكنه النقر على موقع قانوني على الطاولة لتحريك الكرة البيضاء. من حيث الوظائف، يستخدم المشروع Matter.js لمحاكاة تصادم الكرات، وارتدادها عن الحواف، والتباطؤ بالاحتكاك، واكتشاف الجيوب الستة، ويتضمن قواعد مبسطة للعبة 8-ball، وحالات جولة كاملة، وتحديد الفوز والخسارة. يوفر ثلاثة مستويات من الخصوم بالذكاء الاصطناعي (سهل، عادي، صعب)، وثلاث مجموعات من السمات للطاولة والعصا والبيئة، بالإضافة إلى إمكانية ضبط خط التصويب، وحساسية القوة، والمؤثرات الصوتية، والاهتزاز. الواجهة متوافقة مع منطقة الأمان في الوضع الأفقي، وتدعم التخزين المؤقت دون اتصال وتثبيت PWA. للتطوير المحلي، يلزم وجود Node.js 22+ و pnpm. بعد تنفيذ الأمرين pnpm install و pnpm dev، افتح العنوان المحلي المعروض في الطرفية في المتصفح وقم بتدوير الهاتف إلى الوضع الأفقي. للتحقق، يمكن تشغيل pnpm test و pnpm build، حيث تغطي الاختبارات أحكام القواعد، واختيار الهدف القانوني للذكاء الاصطناعي، والتصادم، والاحتكاك، وارتداد الحواف، واكتشاف إدخال الكرات. في عملية النشر، يتم تشغيل الاختبارات والبناء الإنتاجي مع كل دفع إلى الفرع الرئيسي (main)، وبعد اجتيازها جميعًا، يقوم GitHub Actions بنشر مجلد dist إلى GitHub Pages؛ للنشر الأول، يجب اختيار GitHub Actions في إعدادات المستودع → Pages → Build and deployment. مجموعة التقنيات المستخدمة هي TypeScript و Vite و Phaser 3 و Matter.js و Vitest و vite-plugin-pwa.