PADDLE BALL
Introductions PADDLE BALL
لعبة Paddle Ball هي لعبة أركيد كلاسيكية مبنية باستخدام Flutter.
1. بنية اللعبة وتقنياتها: تم تطوير لعبة Paddle Ball باستخدام Flutter، مستفيدةً من قدراتها العالية في عرض الرسوم المتحركة بسلاسة. محرك الرسوم المتحركة: يتم تشغيل حلقة اللعبة بواسطة StatefulWidget باستخدام SingleTickerProviderStateMixin وAnimationController بمدة ثابتة (16 مللي ثانية لحوالي 60 إطارًا في الثانية). تتولى دالة _updateGame، التي يتم استدعاؤها في كل دورة، معالجة جميع عمليات التحقق من الفيزياء والتصادم. العرض: يتم عرض عناصر اللعبة (الكرة، المضرب، الطوب) باستخدام مجموعة من عناصر Flutter: Transform.translate داخل Stack لتحديد المواقع بدقة بناءً على إحداثيات (x، y) المحسوبة، وعناصر Container المصممة لإضفاء جاذبية بصرية (التدرجات، الظلال). نظام الإحداثيات: يعمل محرك الفيزياء على نظام إحداثيات مركزي حيث(0، 0) هو مركز الشاشة، مما يبسط منطق التصادم مع الحواف والمضرب. 2. آليات اللعب الأساسية أ. حركة الكرة: يتم تحديث موضع الكرة (ballX, ballY) في كل إطار بناءً على متجه سرعتها الحالي (velocityX, velocityY). السرعة والمستويات: تزداد سرعة الكرة مع كل مستوى، مما يجعل اللعب أكثر تحديًا تدريجيًا (velocityX/Y = 4 + (المستوى * 0.5)). الاصطدام بالجدار: عندما تصطدم الكرة بحدود الشاشة الرأسية (يسار/يمين) أو الأفقية (أعلى)، يتم عكس مُركبة السرعة المقابلة (velocityX = -velocityX أو velocityY = -velocityY). التحكم بالمضرب: يتم التحكم في الموضع الأفقي للمضرب (paddleX) مباشرةً عن طريق سحب المستخدم من خلال دالة رد نداء onPanUpdate الخاصة بـ GestureDetector. الارتداد الذكي: يستخدم تصادم المضرب حسابًا ذكيًا للارتداد. تُحدد زاوية خروج الكرة من خلال موضع ضربها على المضرب (كلما اقتربت من الحافة زادت سرعة الكرة أفقيًا)، مما يُشجع على توجيه الضربات المائلة نحو الطوب الذي يصعب الوصول إليه. ج. الطوب والتسجيل: التهيئة: يتم تهيئة الطوب في شبكة (5 × 6 افتراضيًا) بألوان تعتمد على موضعها في الصف. التصادم: يتم التحقق من تصادم الطوب في كل تحديث للعبة. عند اصطدام الكرة، يتم وضع علامة "مدمر" على الطوبة (isDestroyed = true)، وتزداد النتيجة بمقدار 10 نقاط، وينعكس اتجاه الكرة الرأسي أو الأفقي بناءً على جانب الاصطدام. أهداف اللعبة: الارتقاء بالمستوى: يتقدم المستوى عند تدمير جميع الطوب. يتم تهيئة مجموعة جديدة من الطوب، وتزداد سرعة الكرة. خسارة حياة: إذا انخفضت الكرة عن الموضع الرأسي للمضرب (paddleY)، يخسر اللاعب حياة. تُعاد الكرة إلى أعلى المنتصف. انتهت اللعبة: تنتهي اللعبة عندما ينفد عدد محاولات اللاعب (عدد المحاولات ≤ 0). 3. واجهة المستخدم وحالة اللعبة: شاشة العرض الرئيسية (HUD): تعرض النتيجة الحالية وعدد المحاولات والمستوى في أعلى الشاشة. حالات اللعبة: يدير التطبيق ثلاث حالات مميزة: شاشة البداية: تعرض التعليمات وزر "بدء اللعبة" لبدء المستوى 1. اللعبة النشطة: حلقة اللعب الأساسية حيث يكون المضرب والكرة والطوب مرئية ومتحركة. انتهت اللعبة: تعرض النتيجة النهائية والمستوى الذي تم الوصول إليه، بالإضافة إلى زر "إعادة اللعب" لإعادة ضبط حالة اللعبة.