المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : خطوة بخطوة لعمل لعبة ثلاثية الأبعاد بالدركبيسك - (الجزء الثالث) - بقلم : احمد البنا



Ahmedbna
11-02-2009, 09:44 AM
http://img299.imageshack.us/img299/1455/les3rj4.jpg (http://imageshack.us/)





الدرس الثالث : تحريك الكميرا





سنعلمك كيفية تغيير مواضع و دوران الكميرا مستخدما ازرار لوحة







Rem Setup sync
Sync On


Sync Rate 30




Rem Create 5 cubes and place randomly



For x = 1 to 5


Make object cube x,100


Position object x,Rnd(2000),0,Rnd(2000)


Next x


Rem Main loop


Do


Rem Store camera angle


caY#= Camera angle Y()


Rem Control input for camera movement


If Upkey()=1 then Move camera 10


If Leftkey()=1 then Yrotate Camera Wrapvalue(caY#-5)


If Rightkey()=1 then Yrotate Camera Wrapvalue(caY#+5)


Rem Refresh Screen


Sync
Loop




سوف نبدأ درسنا بالحديث عن الحلقة التكراية "For Next" .





For x = 1 to 5


Make object cube x,100


Position object x,Rnd(2000),0,Rnd(2000)


Next x







الحلقة التكراية "For Next" تستخدم لتنفيذ امر او مجموعة اوامر ونضع رقم عدد التكرار ، لقد استخدمنا المتغير x لتخزين عدد الأرقام اللتى ستنفذ داخل الحلقة ، دائما داخل الحلقة التكرارية "For Next" نستخدم العبارة to لكى ننفذ رقم المرات اللتى نريد تنفيذها داخل الحلقة ، فى حالتنا نحن حددنا التكرار من الرقم 1 الى الرقم 5 ، وقد وضعنا الأوامر اللتى نريد تنفيذها داخل جسم ال loop او الحلقة التكرارية كما سميناها ، لقد استخدمنا العبارة next والمتغير العددى x لكى نخبر البرنامج ان هذه هى نهاية الحلقة التكرارية وايضا لينقص فى قيمة المتغير x ،، داخل ال loop نحن صنعنا الأوبجكت مكعب ، واعطينا اسم الأوبجكت نفس اسم المتغير المستخدم داخل الحلقة التكرارية ، بعد ذلك استخدمنا الأمر Position Object لموضع الأوبجكت داخل احداثيات مشهدنا ، اول رقم فى الأمر Position Object هو رقم الأوبجكت اللذى سنحدد موضعه ، وقد استعضنا عن هذا الرقم بالمتغير X ، أما الثلاثة ارقام اللتى بعد رقم الأوبجكت وهم الأحداثيات X - Y - Z هم احداثيات الأبجكت ، ومكان الأحداثيات X - Z نحن استخدمنا الأمر RND ،،الأمر RND يستخدم لتوليد رقم عشوائى يبدأ من صفر ويكتب الرقم بين علامتى الأقواس ، فى كل مرة سينفذ الأمر "Position Object" سيتم وضع الأوبجكت الجديد داخل الأحداثيات اللتى اعلاناها لل X - Z ، وطبعا فى مثالنا نحن اعطينا الأحداثى Y الرقم صفر .





If Upkey()=1 then Move camera 10






امرنا التالى هو الأمر "Move camera" وهذا الأمر يشبة الأمر "Move Object" ماعدا ان طبعا اننا فى الأمر "Move camera" لا نحدد رقم للأبجكت ، الرقم اللذى بعد الأمر "Move camera" هو رقم مقدار الوحدات اللتى نريد تحديدها لحركة الكميرا وذلك عندما يتم الضغط على مفتاح (سهم لأعلى) فى كل مرة داخل الدائرة الرئيسية main loop .







If Leftkey()=1 then Yrotate Camera Wrapvalue(caY#-5)


If Rightkey()=1 then Yrotate Camera Wrapvalue(caY#+5)





ان الأمر "YRotate Camera" يعتبر شبه الأمر "YRotate Object" ، ما عد ان هذا الأمر "YRotate Camera" يلف الكميرا حول المحور y ،، يجب عليك ان تفهم كيف يتم تحريك موضع الكميرا ، حاول ان تتلاعب فى قسم المثال وتجرب من نفسك حاول التغيير فى الرقم 10 فى الأمر move camera ، حاول ان تغير فى yrotate camera الى مثلا xrotate camera وأنظر للنتيجة أو حاول ان تغير فى قيم الأمر rnd لترى ما سيحدث ، يجب عليك التجربة بنفسك لتثقل نفسك اكثر بالمواهب اللتى علمتها لك .



















ملاحظة : قد تجد فى بعض الأسطر ان الكود معكوس والسبب طبعا صفحات الوب اللتى اكتب فيها الدرس ، وللتغلب على تلك المشكلة ومعرفة الكود بشكله الصحيح انسخ الكود مباشرة داخل برنامج الدركبيسك

محب نت
11-02-2009, 10:03 AM
جميل جدا ....بالتوفيق
اعجبني هاذا الدرس ^^

Ahmedbna
12-02-2009, 10:51 AM
مشكور على المرور اخى - وان شاء الله تعجبك باقى الدروس

abu2020
15-02-2009, 01:56 PM
السلام عليكم
هذه دروس اكثر من رائعة
لكن اريد رابط تحميل البرنامج والاصدار الذي تعمل عليه هذه الاكواد ويا حبذا لو كان كامل

Ahmedbna
16-02-2009, 06:24 PM
مشكور على المرور وقد ارسلت لك الروابط