حل لغز الـ 8-Puzzle باستخدام خوارزمية A*
هذا المشروع عبارة عن تطبيق واجهة رسومية (GUI) باستخدام مكتبة Tkinter في بايثون لحل لغز 8-Puzzle (لوحة 3×3 تحتوي على أرقام من 1 إلى 8 ومربع فارغ) باستخدام خوارزمية A* لإيجاد الحل الأمثل.
مكونات المشروع:
واجهة المستخدم (GUI):
عرض لوحة 3×3 للأرقام والمربع الفارغ باستخدام أزرار Tkinter.
أزرار للتحكم: "حل" و "خلط" لتوليد حالات مختلفة للوحة.
خوارزمية الحل A* (A-Star):
تستخدم دالة heuristic لحساب عدد البلاطات غير في أماكنها الصحيحة.
تبحث عن المسار الأمثل من حالة البداية إلى حالة الهدف.
تضمن أن اللوحة قابلة للحل عن طريق عمليات عشوائية من حالة الهدف عند الخلط.
وظائف رئيسية:
الخلط (_shuffle_board): يقوم بتحريك البلاطات بشكل عشوائي من حالة الهدف لضمان أن اللوحة قابلة للحل.
الحل (_solve_puzzle): ينفذ خوارزمية A* ويعرض خطوات الحل بطريقة متحركة في واجهة المستخدم.
تحديث اللوحة (_update_tiles): لتحديث واجهة المستخدم مع كل خطوة من خطوات الحل.
توليد الحركات الممكنة (move_checking): لتحريك البلاطات الفارغة بشكل قانوني.
تحويل اللوحة إلى Tuple (board_to_tuple): لتسهيل تخزين الحالة في مجموعة "visited" وعدم تكرارها.
مميزات المشروع:
عرض خطوات الحل متحركة على اللوحة لتوضيح كيفية الوصول للحل.
حساب الوقت وعدد الخطوات المطلوبة لحل اللغز.
تصميم واجهة مستخدم بسيطة وواضحة.
يمكن إعادة خلط اللوحة لتجربة حلول مختلفة.
التقنيات المستخدمة:
لغة البرمجة: Python
مكتبة الرسوميات: Tkinter
خوارزميات: A*, Heuristic (عدد البلاطات في غير مكانها)
هياكل البيانات: قائمة، tuple، heap queue، set