Developing an 8-Puzzle Solver Using A* Algorithm with Tkinter GUI

تفاصيل العمل

حل للعبة اللغز المعروفة باسم "8-Puzzle" باستخدام خوارزمية A* (A-star)، ويوفر واجهة رسومية باستخدام مكتبة Tkinter في Python. إليك ملخص لوظائف وأهداف الكود:

1. **الفئة Puzzle**:

- تُمثل حالة اللعبة في كل لحظة بوضعية لوحة معينة، مكونة من مصفوفة 3x3.

- تحتوي على دوال لحساب تقييم الهيورستيك (المسافة المانهاتن) وللتحقق مما إذا كانت اللوحة الحالية تمثل الحالة الهدف.

2. **دالة الحركة (`move_function`)**:

- تولد جميع الحركات الممكنة للقطع في اللوحة، مثل الحركة للأعلى، الأسفل، اليمين، واليسار.

3. **دالة أفضل قيمة F (`best_fvalue`)**:

- تبحث في قائمة الألواح المفتوحة للعثور على اللوحة التي لديها أقل قيمة F، والتي تمثل التقييم الكامل (المسافة المنهاتن + عدد الخطوات).

4. **خوارزمية A* (`AStar`)**:

- تبدأ من لوحة بداية معينة وتستخدم خوارزمية A* لحساب المسار الأمثل إلى الحالة الهدف.

- تستخدم قائمة مفتوحة لتخزين اللواح المرشحة للاستكشاف وقائمة مغلقة لتخزين اللواح التي تمت استكشافها بالفعل.

- تقوم بتوليد الحركات الممكنة، وحساب تكلفة كل حركة، وإضافة اللواح الجديدة إلى قائمة الألواح المفتوحة بناءً على تقييمها.

5. **الفئة PuzzleGUI**:

- توفر واجهة رسومية لعرض وتفاعل المستخدم مع لوحة اللغز.

- تحتوي على أزرار لتحريك القطع وحل اللغز وإعادة تعيين اللوحة إلى الحالة الابتدائية.

بشكل عام، الهدف من الكود هو توفير حل تفاعلي للعبة اللغز 8-Puzzle باستخدام خوارزمية ذكاء اصطناعي A*، وعرضها للمستخدم بواسطة واجهة مستخدم بسيطة باستخدام Tkinter.

بطاقة العمل

اسم المستقل محمد ع.
عدد الإعجابات 0
عدد المشاهدات 10
تاريخ الإضافة

المهارات المستخدمة