وصف المشروع:
قمت بتطوير محاكاة كاملة للعبة الورق الشهيرة "البصرة" (Basra Card Game) باستخدام لغة MATLAB. المشروع ليس مجرد لعبة، بل هو تطبيق عملي لخوارزميات البحث والمنطق الشرطي المعقد، حيث يواجه المستخدم "الكمبيوتر" في مباراة تعتمد على الحظ والذكاء.
يتميز المشروع بوجود "خصم ذكي" (AI Opponent) يقوم بتحليل الأوراق الموجودة على الأرض واختيار أفضل ورقة لديه لجمع أكبر عدد ممكن من الكروت، مما يجعل اللعبة تمثل تحدياً برمجياً وهندسياً.
المميزات التقنية والبرمجية (Technical Features):
البرمجة الكائنية (OOP):
بناء فئة خاصة (Class) باسم playing_cards لتعريف خصائص الورقة (القيمة والنوع) وإنشاء كائنات (Objects) لكل ورقة في المجموعة، مما يسهل إدارة البيانات وعرضها.
خوارزميات الذكاء الاصطناعي (AI Logic):
تطوير نظامين للصعوبة (Easy & Hard).
في المستوى الصعب (Hard Mode)، يستخدم البرنامج خوارزمية ذكية (findAllIndicesForSum ) تقوم بحساب جميع الاحتمالات الممكنة لمجموع الأوراق على الأرض، واختيار النقلة التي تمنح الكمبيوتر أكبر عدد من المكاسب (Maximization Algorithm).
+2
معالجة البيانات (Data Handling):
استخدام المصفوفات الخلوية (Cell Arrays) وهياكل البيانات للتعامل مع مجموعات الأوراق المختلفة (اليد، الأرض، والمكاسب).
تطوير دوال مساعدة مثل processCellArray_new لفلترة النتائج واختيار المجموعات غير المتداخلة (Disjoint sets) لضمان صحة الحسابات.
محاكاة قوانين اللعبة بدقة:
تنفيذ قواعد "البصرة" الخاصة مثل: الولد (Jack) يلم جميع الأوراق، والـ 7 الكومي (7 Diamond) التي تأخذ حكم الولد.
حساب النقاط (Score) وعدد مرات "البصرة" (Sweeps) بدقة لكل من المستخدم والكمبيوتر.
طريقة العمل:
يتم توزيع الأوراق عشوائياً باستخدام randperm لضمان نزاهة التوزيع.
واجهة تفاعلية عبر سطر الأوامر (Command Window) تعرض أوراق المستخدم وأوراق الأرض بوضوح.
نظام أدوار (Turn-based system) يتبادل فيه المستخدم والكمبيوتر اللعب حتى انتهاء أوراق المجموعة (Deck).
المهارات المكتسبة والمستخدمة:
MATLAB Programming: التعامل المتقدم مع الحلقات التكرارية (Loops) والشروط (Conditions).
Algorithm Design: تصميم خوارزميات الجمع التوافقي (Combinatorial Sum Problem).
Object-Oriented Programming.
Game Logic Development.