سلام
هده مجموعة دروس لكي نصنع لعبة كرة مضرب .
بسم الله الرحمن الرحيم
الدرس الاول
في هدا الدرس سوف نحاول تكوين برنامج بسط كمقدمة لباقي اجزاء اللعبة , حيت سنكتفي بتكوين برنامج يقوم بتحريك الكرة داخل الفورم , بحيت تتحرك في جميع اتجاهات الفورم وتصطدم بالهوامش العلوية و السفلية و الجانبية وترتد بالاتجاه المعاكس .
كون مشروع جديد , تم قم بتخزينه .
بدلك تكون كونت اللعبة , والى اللقاء في مشاريع اخرى , :P
يا أخي انا بس بهزر معاك , يلى نبداء . ;)
ضع الادوات التالية على الفورم
1) Timer توقيت ©
-عدل خاصية Enabled الى false
2) ضع زرين على الفورم تم عدل خاصية Caption
- الاول ضعها Paly
- التاني ضعها Stop
3) ضع شكل Shape على الفورم تم قم بتعديل التالي
- غير اسمه name الي Ball
- غير الخاصية Shape الى stCircle لياخد شكل الدائرة
-من خاصية Brunsh تم خاصية Color غير لونه الى اللون الدي تريد .
-باستخدام الماوس صغر في حجمه .
الان نحن جاهزين لندخل مرحلة البرمجة , استراحة قصيرة مع الاعلان تم نعود بعدها . :mad:
اول خطوة برمجية هي
1- تعريف متغيران خارجييان هما Horizontal,Vertical
وهما لتحديد الحركة الافقية و العمودية للكرة , وسوف اضع جزء من الكود لكي تعرف مكان التعريف بالضبط .
var
Form1: TForm1;
Horizontal,Vertical: integer;
implementation
{$R *.DFM}
انه قبل جزء التمتيل implementation وبعد تعريف متغير الفورم
Form1: TForm1;
هدا المكان دائما يستخدم لتعريف المتغيرات الخارجية .
2-الخطو ة التانية هي اعطاء المتغيران قيمتهما الابتدائية , ودلك بالضغط المتتالي على الفورم = يعني في الحدت oncreate =
اكتب الحطوات التالية بين امري Begin و End
Horizontal := 20;
Vertical := -5;
3- الخطوة التالتة هي برمجة زر Play وهو زر بدء اللعبة .
بعد الضغط مرتين بالماوس على زر Play , اكتب الحطوات التالية بين امري Begin و End
Timer1.Enabled:=true;
وهي خطوة تفيد بداء تنفيد التوقيت .
4- الخطوت الرابعة هي هي برمجة زر ايقاف اللعبة Stop
بعد الضغط مرتين بالماوس على زر Play , اكتب الخطوات التالية بين امري Begin و End
Timer1.Enabled:=false;
5- الخطو الاخيرة و المهمة جدا هي تحريك الكرة و معرفة الحدود التي يجب ان ترتد عندها الكرة .وهدا كله يتم داخل التوقيت Timer
بالضغط مرتين على Timer
اكتب الخطوات التالية بين امري Begin و End
if (Ball.Top < 0) or (Ball.Top + Ball.Height > form1.Height) then
Vertical := Vertical * -1;
If (Ball.Left <0 ) or (Ball.left + Ball.Width > form1.Width ) then
Horizontal := Horizontal * -1;
Ball.Top := Ball.Top + Vertical; //Move the ball
Ball.Left := Ball.Left + Horizontal; //
اول امر هو امر مقارنة , حيت نتبين من وصول الكرة الى الهامش السفلي للفورم Ball.Top < 0 او وصولها الى الهامش العلوي لها
Ball.Top + Ball.Height > form1.Height
وادا حدت دلك يتم تغيير اتجاه حركة الكرة العمودية في الاتجاه المعاكس
Vertical := Vertical * -1;
المقارنة التانية , نتبين بها من وصول الكرة الى الهوامش الجانبية
الايسر Ball.Left <0
و الايمن Ball.left + Ball.Width > form1.Width
وادا حدت دلك يتم تغيير اتجاه حركة الكرة الافقية في الاتجاه المعاكس
Horizontal := Horizontal * -1;
الخطوتين الاخيرتين يتم فيهما تحريك الكرة في الاتجاه المناسب
Ball.Top := Ball.Top + Vertical;
Ball.Left := Ball.Left + Horizontal;
و اخيرا بعد ان تتم مرحلة البرمجة , نفد وشوف النتيجة .
تلا حظ ان حركة الكرة بطيئة جدا , لتجعلها سريعة قم بتعديل
خاصية Interval في التوقيت Timer وصغر في قيمتها الى 50
وشوف النتيجة .
وشكرا