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

مشاهدة النسخة كاملة : الدرس التــاسع منـ دورة c-script (المؤشرات)



ديمو1
14-10-2008, 08:12 PM
المؤشراتـ

المؤشر هو تعريف يستخدم للأشارة الى احد جسم,دعنا نتخيل التالي....
تخيل اننا نريد صنع لعـبـة pong بأستخدام محرك 3دي جيم ستوديو........

308407

نريد ان نجعل اللوح الايسر يكون تحت سيطرة الآعب واللوح الأيمن يكون تحت سيطرة الحاسوب
ان المشكلة الحقيقية هو كيف نخبر كودنا من هو الاعب ومن هو الحاســــوب؟!!@!@
ان الجواب بسيط نضع مؤشر فقط,الذي يمكن تعريفه بالشكل التالي:..


ENTITY* the_player;

او

function* check_status;

او

STRING* my_name;

او

PANEL* game_over;

او

BMAP* health_picture; حسنا نحن يمكننا إضافة مؤشرات الى الكيانات والوظائف والعبارات واللوحــات والصور....وذلك بإضافة "*" الى كودنا بسيط اليس كذلك...

دعنا ننتقل للعمل...................

قـم بتحميل المرحلة المرفقة
لاتنسى يجب تصيير المرحلة
وقم بتشغيلـهــا,,,,,,,,,,,,,,

ثم اضغط زر Tab واكتــب
wizard.x = 300; .....
رائع لقد اقترب الساحر الاحمر واصبح قريبا للشاشة كم هذا رائع ولكن قديتبادر الى ذهنك
لماذا لم يقترب الساحر الازرق؟ولماذا لم يقترب البيتـ ّ؟
انا خائف كيف لي ان اتحمل كل تلك الاسئلة؟؟؟!
لكني سأعطيك العـبارة التي تحلهم كلهم؟؟::
لقد قمنا بتعريف مؤشر للساحر الاحمر...........
هل ترى نحن نعيش بعالم قاسي ,هذه الحواسيب السيئة لاتهتم بنا نحن البشر....
وانا اعرف ان ذلك النموذج يبدو مثل الساحر,لكن الحواسيب لاتحب ان تتعلم,اذا اخبرتها بان تحرك النموذج
السحري الاحمر فانها ستسخر منك اي نموذج احمر واي خرابيط...
انت يجب ان تستعمل مؤشر لكل كيان يحتاج الى معالجة خاصة من قبل الحاسوب.
دعنا نفتح السكربت المرفق.........

////////////////////////////////////////////////////////////////////

var video_mode = 7; // 800x600 pixels

////////////////////////////////////////////////////////////////////

ENTITY* wizard;

////////////////////////////////////////////////////////////////////

function main()
{
level_load ("work11.wmb");
}

action wizard_with_pointer()
{
wizard = me;
my.ambient = 100;
}

action wizard_simple()
{
my.ambient = 100;
}
الحمدلله,السكربت لايبدو معقدا ابداً,
معظمه درسناه بالدروس السابقة.......
اولا حددنا متغيرا يحدد دقة الشاشة ثم قمنا باستدعاء المرحلة المسماة "work11.wmb" بداخل الوظيفة الرئيسية.....
ثم قمنا باعطاء مؤشر لكيان مسمى الساحر wizard دعنا نلقي نظرة عن قرب على هذا السطر من الكود

ENTITY* wizard; لقد عرفنا مؤشر لكيان واسميناه ساحر wizard ,لايهم يمكنك وضع اي اسم فبائمكانك اعطاء اسم رجل الي لقرد مثلاً:
دعنا الآن نرى المهمة التي اسميناها wizard_with_pointer


action wizard_with_pointer()
{
wizard = me;
my.ambient = 100;
} بالاعلى قمنا يتعريف مؤشر لكيان واسميناه ساحر اذا كنت تذكر نحن هنا عرفنا بأن الذي يستعمل هذه المهمة
يصبح هو الساحر من الىن وصاعدا وذلك من خلال هذا الكود"wizard = me;"
والذي يستخدم المهمة wizard_with_pointer هو الساحر الاحمر اذن هو السـاحر......

والسطر الثاني بالمهمة يعطي نسبة البيئة للساحر فمثلا كانت البيئة =0 فان الساحر سيبدو شبه مضلم واما اذا جعلنا القيمة 100 فان الساحر سيصبح مضيئاً

action wizard_simple()
{
my.ambient = 100;
} هذه المهمة تربط بالساحر اللازرق اوه انا نسيت باننا سنحتاج لمؤشر هنا سنناقشه بنهاية الورشة,
د
الان لنتعرف الطرق التي نكتب بها المؤشر:
1-نعرف المؤشر في سطر وحيد من الكود
2-نخبر المؤشر بمن سيكون مالكه بوضع السطر الذي يعرفه بالرمز:

action players_horse()
{
horse = me;
...
}
من الان وصاعدا ستكون قادرا على السيطر على المهمة التي تسمى players_horse ,وذلك باستعمال طريقة النقطة

object.property الان قم بتشغيل المرحلة من جديد وقم بالضغط على زر tab وطباعة الرمز التالي......

wizard.z = 100; هل لاحضت لقد غير الساحر ارتفاعه في الحقيقة انت يمكنك استعمال x, y, z, pan, tilt, roll, invisible, transparent للتحكم
فمثلا انت تريد اخفاء الساحر. قم بكتابة الرمز التالي....


wizard.invisible = ON; ولأظهلره قم بكتابة المز التالي:


wizard.invisible = OFF; الان لنعمل شيئا جديدا قم بكتابة وظيفة جديدة ولتكن :

function move_up()
{
wizard.z = wizard.z + 5;
}ثم قم بإضافة هذا السطر بالوظيفة الاساسية

on_u = move_up; ليصبح بهذا الشكل....

//////////////////////////////////////////////////
var video_mode = 7; // 800x600 pixels

//////////////////////////////////////////////////
ENTITY* wizard;

//////////////////////////////////////////////////

function move_up() { wizard.z = wizard.z + 5; }

function main()
{
level_load ("work11.wmb");
on_u = move_up;
}

action wizard_with_pointer()
{
wizard = me;
my.ambient = 100;
}

action wizard_simple()
{
my.ambient = 100;
}انت تلاحظ باننا اضفنا وظيفة واسميناها التحرك لاعلى ثم قمنا بوضع

wizerd.z=wizerd.z+5; وهذا يعني بان يرتفع الساحر لاعلى بمقدار 5 وحدات فمثلا اذا كان بـ15 فسيصبح ب 20 وهكذا
لكن هذا الرمز يبدو غريباً:

on_u = move_up; حسنا ان هذه السطر هو انه عندما يضغط الاعب زر U فان الساحر يرتفع بمقدار 5 وهكذا مادام الاعب مستمر بالضغط وذلك عندما اضفنا اشارة المساواة واضفنا بعدها move_up فانه عندما يضغط الاعب زر u يشغل الوظيفة المسماة move_up

الان احفظ السكربت ثم قم بتشغيل السكربت....وقم بالضغط على زر u ولاحظ ماذا سيحدث رائع اليس كذلك..
المؤشرات هي من الاهميات التي يستعملها المحرك.....
دعنا نرى المهمة التي ربطناها بالساحر الازرق

action wizard_simple()
{
my.ambient = 100;
} هذا يعرف بان مقدار البيئة للكيان الذي يستعمل هذه المهمة هو 100 واي كائن يتعملها سيبدوا ظاهر جداً

والان انت شغل السكربت و جرب كتابة هذا الامر :

my.invisible = ON; فان المحرك سيعطيك رسالة خطأ فالكمبيوتر لايعرف ماهو هذا My لذلك عندما نريد فعل ذلك يجب كتابتها بمهمة منفردة:

action hide_me
{
my.invisible = ON;
} هل لاحظت الان فائدة المؤشرات.....
تدريب
قم بكتابة وظيفة تأمر الساحر بالاستدارة 5 درجات باتجاه اليسار عند الضغط على زر g


الدرس القدام If - Else branching

:biggthump:biggthump

ديمو1
15-10-2008, 06:56 PM
شكله الدرس صعـــــــب !!

d.o.m
15-10-2008, 07:08 PM
شكله الدرس صعـــــــب !!
مشكور يالغالي
والله صراحة الدرس صعب لزمني مدة الي فهمته

الله يوفقك وكمل ماعليك من نقص الردود

majinvegetassj4
16-10-2008, 03:51 PM
شكرا أخي العزيز