بيستخدم مكتبة chess.js كـ محرك قواعد اللعبة (التحقق من النقلات، كش/مات، تعادل...).
وبيستخدم react-chessboard علشان يرسم رقعة الشطرنج ويخلي القطع تتسحب وتتحرك.
المكوّن الرئيسي هو ChessGame، وفيه:
حالة اللعبة الحالية (game) بصيغة FEN.
سجل النقلات (movelog) عشان يعرض تاريخ اللعب.
كل حركة بتتم عبر onDrop:
بيجرب النقلة.
لو صحيحة يحدّث حالة اللعبة ويضيف النقلة للسجل.
لو غير قانونية يرجّع false.
فيه كمان:
عرض لحالة الدور الحالي (White/Black to move أو Check/Checkmate/Draw).
زر Reset Game لإعادة اللعبة من البداية.
لوحة جانبية لعرض Move History.