Ahmedbna
06-02-2009, 09:35 AM
ادخال و ازاحة العنصر أو الأبجكت
اهداف الدرس : سنعلمك كيف تغير مواضع العنصر object وتجعله يستدير بأستخدام لوحة المفاتيح .
سوف نبدأ هذا الدرس بالتعليمة rem وهى امر رائع اذ تمكنك من عمل مفكرة لنفسك داخل برنامجك ، هذا الأمر هو تعليمة بالدراكبيسك وهى تخبره بأن يتجاهل كل شيىء يكتب بعدها فى نفس السطر ، فأتدتها انك لو كتبت مجموعة من المتغيرات أو الأوامر قد تنسى مخصصاتها او لماذا كتبتها اذن التعليمة rem هى تجعلك تكتب شرح لتلك المتغيرات اللتى كتبتها او الأوامر اللتى تنوى وضعها ، بمعنى اصح هى كما قلت مفكرة انت تصنعها بيدك لتسهل عليك قراءة برنامجك .
Rem Setup sync rate
Sync On
Sync Rate 30
Rem Create sphere
Make object cube 1,100
Rem Main loop
Do
Rem Store the object's Y angle in aY#
aY# = Object angle Y(1)
Rem Control input
If Upkey()=1 then Move object 1,2
If Leftkey()=1 then aY# = Wrapvalue(aY#+5)
If Rightkey()=1 then aY# = Wrapvalue(aY#-5)
Rem rotate the sphere
Yrotate object 1,aY#
Rem Refresh Screen
Sync
Loop
ربما عند نظرك للكود السابق تجد انك تعرف بعض منه لأننا شرحناه ، فى دروسنا القادمة سنستخدم اكواد قد استخدمناها فى وقت سابق ، ولو اكتشفت انك لم تفهم امر من الأوامر السابقة اقرأ الدرس الأول مرة اخرى ، أو راجع مساعد ملفات داركبيسك ، تعالى نلقى نظرة على المتغيرات variables ، المتغيرات هى اسماء يمكن ان تستخدمها لتخزين قيم ويستخدم الداركبيسك العديد من المتغيرات اللتى تكون مميزة الصيغة ، انظر الى الكود التالى :
aY# = Object angle Y(1)
فى هذا السطر نحن خزنا الزاوية y للأبجكت رقم 1 فى المتغير "aY#" لأحظ ان العلامة # هى رمز يخبر الداركبيسك بأن المتغير عشرى floating والمتتغير العشرى او الكسر معروف مثل 3.5 أو 1.0000 .... الخ اذا هو يسمح للمتغير بالتعامل مع كل كسر موجود ،،، هناك بعض المتغيرات للدركبيسك تستخدم متغيرات حرفية string أو مصفوفات arrays وايضا intergers اعداد صحيحة،، المتغيرات الحرفية تستخدم الرمز $ فى تخزين البيانات كهذا المثال A$ = "Hello World" ". ، وطبعا بيانات المتغير الحرفى يجب ان توضع كما ترى بين علامتى اقتباس ... أما المصفوفات تخزن مجموعات من البيانات فى نفس البيانات عموما سوف نبحث المصفوفات فى درس لاحق . ،، المتغيرات الصحيحة Integers تخزن ارقام صحيحة سواء ان كانت موجبة او سالبة كمثال ( 5- أو 5 ، 1000- أو 2000 أو 2513 أو 4561- ... الخ) ولاحظ ان integers لا ستخدم امتدادات واقصد طبعا امتدادات عشرية او ما خلافة .
حاول ان تجعل اسماء المتغيرات تدل على مغزاها او محتواته حتى لا تتوه او اذ احببت ان تتبادل الكود مع صديق لك لا يتوه فى تلك المتغيرات ووظائفها كما ستنفعك تلك الطريقة فى معرفة اكتشاف خطأك بسهولة ، فى مثالنا نحن سمينا هذا المتغير "aY#" لكى يمثل الزاوية y للأبجكت رقم 1 ، ملاحظة بسيطة لم نستخدم الأسم "AngleY#" كمثال بسبب اننا لا نريد ان يبقى الأسم طويلا ، لكن بالطبع تستطيع تغيير الأسم الى اى اسم تراه سهل لك لقرائته .
If Upkey()=1 then Move object 1,2
if - then هى تعبير شائع كثيرا فى لغة الدراكبيسك ، يتم كتابة ما تريده ان يحدث بعد عبارة if ، لو كان ما تريدة صحيحا اذن نفذ ما بعد العبارة then ولو كان ما تريده خاطئا اذن تجاهل ما بعد العبارة then http://www.bna.eg.vg/images/smilies/smile.gif اظنك قد بدأت تستوعب يعنى لو شرحنا الأمر بالعامية نقول لو حصل الحدث كذا اذن افعل الأمر كذا ، ولو لم يحدث الحدث كذا فلا تفعل كذا ، اظنى بسطت الأمر ،، اما العبارة "Upkey()" فهى عبارة وضعت بعد الأمر if فى مثالنا هذا ، وعبارة "Upkey()" هى فى الأصل أمر ليختبر ما اذا كان المستخدم سيضغط المفتاح (سهم لأعلى) من لوحة المفاتيح ام لا وهذا الأمر اذا جعلناه = الرقم 1 فمعناه ان المفتاح قد تم الضغط عليه ام اذا كان = 0 فمعناه انه لم يتم الضغط علية بعد ، لو ان المفتاح upkey تم الضغط عليه سينفذ الأمر اللذى يلية وسيحرك الأوبجكت مباشرة عن طريق الأمر move object ، اول رقم بعد الأمر move object هو رقم تعريف الأبجكت id ، اما الرقم الثانى بعده فهو رقم مقدار الوحدات المدفوعة فى كل مرة وانت ضاغط على الزر ، ممكن تسميته فى مثالنا هذا برقم السرعة .
If Leftkey()=1 then aY# = Wrapvalue(aY#+5)
If Rightkey()=1 then aY# = Wrapvalue(aY#-5)
هذا ان السطران اللذى بهم الأمران IF - THEN هما لأختبار ما اذا كانت الأزرار (سهم لأيمن)و(سهم لأيسر) مضغوطان ام لا ، ماذا سيحدث اذ تم الضغط على اى من المفتاحين هذا ما سأقوله ، هنا نحن استخدمنا المتغير "aY#" لكى يخزن قيمة .،،، الأمر "Wrapvalue" هى عبارة عن امر تثبيت لقيمة دائرية تقبل اكبر من الصفر واقل من 360 يعنى بالعامية امر يولد قيمة دائرية من صفر الى 360 ، وهذا الرقم هو ما سنستخدمة فى حساب مثالنا هذا للزوايا ، لو ان القيمة خرجت عن هذه الحدود سواء بأقل أو بأكثر ستقوم الدالة او الأمر Wrapvalue بأعادة لفها ، سوف تلف القيمة فى مثالنا من 365 الى القيمة 5 ،، اما داخل الأقواس فلقد وضعنا متغير الزاوية Y ثم ضفنا وطرحنا فى كلا السطرين العملية القيمة 5 ، اذن لو ضغط المفتاح الأيسر ستضاف القيمة 5 الى "aY#" وسوف تخزن فى المتغير "aY#" .
Yrotate object 1,aY#
ال "Yrotate object" هو امر استدارة للأوبجكت حول المحور Y ، اول رقم بعد الأمر هو رقم الأوبجكت اللذى تريد تدويرة ، اما الرقم الثانى فهى الزاوية اللتى تريد تدويرها للأبجكت ، ملاحظة لقد وضعنا مكان الرقم فى الثانى فى مثالنا متغير variable ، وفى كل مشاريع الدرك بيسك تستطيع تبديل هذا الرقم بمتغير ،،،،، اما اخر امر فهو امر SYNC وهو طبعا لتحديث المشهد انه مثل الريندر كما شرحناه فى الدرس السابق .
اتمنى ان تكونوا قد استوعبتم الدرس ، حاولوا تغيير القيم بتتعرفوا اكثر على خبايا اكثر تسطيعون مثلا ذيادة رقم Move object 1,2 لتزيدو السرعة ، تسطيعون التبديل بين محاور الزاوية فى الأمر Object angle بدلا من Y الى X أو Z ،، وغيرة من الكثير من الخبايا ...
انتظرونى فى الدرس القادم
ملاحظة : قد تجد فى بعض الأسطر ان الكود معكوس والسبب طبعا صفحات الوب اللتى اكتب فيها الدرس ، وللتغلب على تلك المشكلة ومعرفة الكود بشكله الصحيح انسخ الكود مباشرة داخل برنامج الدركبيسك
اهداف الدرس : سنعلمك كيف تغير مواضع العنصر object وتجعله يستدير بأستخدام لوحة المفاتيح .
سوف نبدأ هذا الدرس بالتعليمة rem وهى امر رائع اذ تمكنك من عمل مفكرة لنفسك داخل برنامجك ، هذا الأمر هو تعليمة بالدراكبيسك وهى تخبره بأن يتجاهل كل شيىء يكتب بعدها فى نفس السطر ، فأتدتها انك لو كتبت مجموعة من المتغيرات أو الأوامر قد تنسى مخصصاتها او لماذا كتبتها اذن التعليمة rem هى تجعلك تكتب شرح لتلك المتغيرات اللتى كتبتها او الأوامر اللتى تنوى وضعها ، بمعنى اصح هى كما قلت مفكرة انت تصنعها بيدك لتسهل عليك قراءة برنامجك .
Rem Setup sync rate
Sync On
Sync Rate 30
Rem Create sphere
Make object cube 1,100
Rem Main loop
Do
Rem Store the object's Y angle in aY#
aY# = Object angle Y(1)
Rem Control input
If Upkey()=1 then Move object 1,2
If Leftkey()=1 then aY# = Wrapvalue(aY#+5)
If Rightkey()=1 then aY# = Wrapvalue(aY#-5)
Rem rotate the sphere
Yrotate object 1,aY#
Rem Refresh Screen
Sync
Loop
ربما عند نظرك للكود السابق تجد انك تعرف بعض منه لأننا شرحناه ، فى دروسنا القادمة سنستخدم اكواد قد استخدمناها فى وقت سابق ، ولو اكتشفت انك لم تفهم امر من الأوامر السابقة اقرأ الدرس الأول مرة اخرى ، أو راجع مساعد ملفات داركبيسك ، تعالى نلقى نظرة على المتغيرات variables ، المتغيرات هى اسماء يمكن ان تستخدمها لتخزين قيم ويستخدم الداركبيسك العديد من المتغيرات اللتى تكون مميزة الصيغة ، انظر الى الكود التالى :
aY# = Object angle Y(1)
فى هذا السطر نحن خزنا الزاوية y للأبجكت رقم 1 فى المتغير "aY#" لأحظ ان العلامة # هى رمز يخبر الداركبيسك بأن المتغير عشرى floating والمتتغير العشرى او الكسر معروف مثل 3.5 أو 1.0000 .... الخ اذا هو يسمح للمتغير بالتعامل مع كل كسر موجود ،،، هناك بعض المتغيرات للدركبيسك تستخدم متغيرات حرفية string أو مصفوفات arrays وايضا intergers اعداد صحيحة،، المتغيرات الحرفية تستخدم الرمز $ فى تخزين البيانات كهذا المثال A$ = "Hello World" ". ، وطبعا بيانات المتغير الحرفى يجب ان توضع كما ترى بين علامتى اقتباس ... أما المصفوفات تخزن مجموعات من البيانات فى نفس البيانات عموما سوف نبحث المصفوفات فى درس لاحق . ،، المتغيرات الصحيحة Integers تخزن ارقام صحيحة سواء ان كانت موجبة او سالبة كمثال ( 5- أو 5 ، 1000- أو 2000 أو 2513 أو 4561- ... الخ) ولاحظ ان integers لا ستخدم امتدادات واقصد طبعا امتدادات عشرية او ما خلافة .
حاول ان تجعل اسماء المتغيرات تدل على مغزاها او محتواته حتى لا تتوه او اذ احببت ان تتبادل الكود مع صديق لك لا يتوه فى تلك المتغيرات ووظائفها كما ستنفعك تلك الطريقة فى معرفة اكتشاف خطأك بسهولة ، فى مثالنا نحن سمينا هذا المتغير "aY#" لكى يمثل الزاوية y للأبجكت رقم 1 ، ملاحظة بسيطة لم نستخدم الأسم "AngleY#" كمثال بسبب اننا لا نريد ان يبقى الأسم طويلا ، لكن بالطبع تستطيع تغيير الأسم الى اى اسم تراه سهل لك لقرائته .
If Upkey()=1 then Move object 1,2
if - then هى تعبير شائع كثيرا فى لغة الدراكبيسك ، يتم كتابة ما تريده ان يحدث بعد عبارة if ، لو كان ما تريدة صحيحا اذن نفذ ما بعد العبارة then ولو كان ما تريده خاطئا اذن تجاهل ما بعد العبارة then http://www.bna.eg.vg/images/smilies/smile.gif اظنك قد بدأت تستوعب يعنى لو شرحنا الأمر بالعامية نقول لو حصل الحدث كذا اذن افعل الأمر كذا ، ولو لم يحدث الحدث كذا فلا تفعل كذا ، اظنى بسطت الأمر ،، اما العبارة "Upkey()" فهى عبارة وضعت بعد الأمر if فى مثالنا هذا ، وعبارة "Upkey()" هى فى الأصل أمر ليختبر ما اذا كان المستخدم سيضغط المفتاح (سهم لأعلى) من لوحة المفاتيح ام لا وهذا الأمر اذا جعلناه = الرقم 1 فمعناه ان المفتاح قد تم الضغط عليه ام اذا كان = 0 فمعناه انه لم يتم الضغط علية بعد ، لو ان المفتاح upkey تم الضغط عليه سينفذ الأمر اللذى يلية وسيحرك الأوبجكت مباشرة عن طريق الأمر move object ، اول رقم بعد الأمر move object هو رقم تعريف الأبجكت id ، اما الرقم الثانى بعده فهو رقم مقدار الوحدات المدفوعة فى كل مرة وانت ضاغط على الزر ، ممكن تسميته فى مثالنا هذا برقم السرعة .
If Leftkey()=1 then aY# = Wrapvalue(aY#+5)
If Rightkey()=1 then aY# = Wrapvalue(aY#-5)
هذا ان السطران اللذى بهم الأمران IF - THEN هما لأختبار ما اذا كانت الأزرار (سهم لأيمن)و(سهم لأيسر) مضغوطان ام لا ، ماذا سيحدث اذ تم الضغط على اى من المفتاحين هذا ما سأقوله ، هنا نحن استخدمنا المتغير "aY#" لكى يخزن قيمة .،،، الأمر "Wrapvalue" هى عبارة عن امر تثبيت لقيمة دائرية تقبل اكبر من الصفر واقل من 360 يعنى بالعامية امر يولد قيمة دائرية من صفر الى 360 ، وهذا الرقم هو ما سنستخدمة فى حساب مثالنا هذا للزوايا ، لو ان القيمة خرجت عن هذه الحدود سواء بأقل أو بأكثر ستقوم الدالة او الأمر Wrapvalue بأعادة لفها ، سوف تلف القيمة فى مثالنا من 365 الى القيمة 5 ،، اما داخل الأقواس فلقد وضعنا متغير الزاوية Y ثم ضفنا وطرحنا فى كلا السطرين العملية القيمة 5 ، اذن لو ضغط المفتاح الأيسر ستضاف القيمة 5 الى "aY#" وسوف تخزن فى المتغير "aY#" .
Yrotate object 1,aY#
ال "Yrotate object" هو امر استدارة للأوبجكت حول المحور Y ، اول رقم بعد الأمر هو رقم الأوبجكت اللذى تريد تدويرة ، اما الرقم الثانى فهى الزاوية اللتى تريد تدويرها للأبجكت ، ملاحظة لقد وضعنا مكان الرقم فى الثانى فى مثالنا متغير variable ، وفى كل مشاريع الدرك بيسك تستطيع تبديل هذا الرقم بمتغير ،،،،، اما اخر امر فهو امر SYNC وهو طبعا لتحديث المشهد انه مثل الريندر كما شرحناه فى الدرس السابق .
اتمنى ان تكونوا قد استوعبتم الدرس ، حاولوا تغيير القيم بتتعرفوا اكثر على خبايا اكثر تسطيعون مثلا ذيادة رقم Move object 1,2 لتزيدو السرعة ، تسطيعون التبديل بين محاور الزاوية فى الأمر Object angle بدلا من Y الى X أو Z ،، وغيرة من الكثير من الخبايا ...
انتظرونى فى الدرس القادم
ملاحظة : قد تجد فى بعض الأسطر ان الكود معكوس والسبب طبعا صفحات الوب اللتى اكتب فيها الدرس ، وللتغلب على تلك المشكلة ومعرفة الكود بشكله الصحيح انسخ الكود مباشرة داخل برنامج الدركبيسك