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

مشاهدة النسخة كاملة : [درس] بقعة الضوء



kakarot
27-07-2006, 07:07 PM
السلام عليكم
* ملاحظة هامة جداً
عندما كنت أحفظ الدروس التي كانت في المنتدى قبل حذف المواضيع حفظة درس ل العضو
من التراب
هذا الدرس من حقه وأنا نقلة الدرس بالكلمة الواحدة ولم أغير شيء
هلا بكم ..... اتمنى أن الدروس تعجبكم ... بس الأفكار بدأت تنفذ ..... .....الله يعين .. ..بس اليوم يبت لكم درس بسيط وحلو .... وأكيد قريتوا العنوان .....بقعة ضوء ....بس ياليت محد منكم يخاف من الظلام ...^^"

وأتمنى أكمل الدروس .... قريبـــًا لأن مافي فكرة للدرس الرابع... وسنطول السلسلة إن شاء الله ...

سلسلة دروس التميــّـز :


الدرس الأول : زلزال القيم ميكر .... (http://www.montada.com/showthread.php?t=464020)

الدرس الثاني : تجميع الطاقة .... (http://www.montada.com/showthread.php?t=464878)


وإن شاء الله نكمل الثالث اليوم ... لاحظو أن الدروس ما تعتمد على بعضها لكن مثلا إذا شرحت شيء في درس لن أكرره... لكي لا تكون الدروس ممله ....^^"

وأنا عندي فكرة ....شورايكم نخش في الموضوع ...^..^"


بقعة ضوء ...

نفرض أنك صممت تصمم لعبة ... أكيد بتكون كل المستويات في النور كل الكائنات واضحة وضوح الشمس ..حتى ولو كانت اللعبة بعز الليل ...فمثلا لو دخل البطل في القلعة طبعــًا القلعة مظلمة ومليانه أشباح ...لكن كل الكائنات واضحة وضوح الشمس وين الظلام ... ليش مانخلي المكان مضلم إلا بقعة ضوء تمشي مع البطل الي يحركة اللاعب وأحيانــًا ينطفي الضوء لكي تكون اللعبة أصعب .....الفكرة حلوة بس كيف؟؟؟؟

الفكرة أن نصنع سبريت كبير لونة أسود وفيه دائرة فاضيه ...وسبريت ثاني بدون دائرة فاضية ...^_^"
وبما أن القيم ميكر لا يقبل سبريت كبيرة جدًا ....فسنصنع سبريتات بقياس 700×700

=== سبريت هو sprite وهي الصور الي ندخلها على القيم ميكر .....

نبدأ خطوة خطوة ....
1. أصنع صورة جديدة "سبريت جديد" (Ctrl+Alt+s) ...وضغط على Edit Sprite ...والإختصار (Alt+e)...ستفتح لك نافذة جديدة ..... إضغط على Transform ومن القائمة اختار Resize Canvas....أو اضغط على (Ctrl+Alt+c) ....

بتطلع لك نافذة صغيرة ..


غير الــ32 ...في الطول و العرض ..وكتب700 ...في الخانتين ( بتلقاهن على اليمين ومكتوب جنبهن pixels )...اضغط اوكيه وبتكون الصورة كبيرة ومربعة....




اضغط على الصورة مرتين بيفتح لك محرر الصور في القيم ميكر لون كل الصورة بالأسود ...وبعدين ارسم دائرة في نصف الصورة باللون الأخضر "حاول تستخدم السهوم الزرق لتعديل مكان الدائرة" ...ولون آخر بكسل من أسفل اليسار باستخدام القلم باللون الأخضر أيضـــًا...ثم اضغط على علامت صح فوق ..لتثبت التغيرات إضغط الصح مرة ثانية...



رجعت الآن للنافذة الأولى للسبريت الي سمها "sprite properties" .....اضغط على الزر "center" أو ((Alt+y وإكتب 350 .....وAlt+x وكتب 350 ))...الأن ظهر المؤشر بنصف الصورة ...وتأكد أن الخاصية Transparent .... شغاله وبجنبها صح ...



2. اصنع صورة ثانية ..."سبريت ثاني" ..بنفس الحجم لكن بدون دائرة ..أسود بالكامل ....
لكن تأكد بأنك شلت علامة صح من الخاصية Transparent عكي السبريت الأول ...
3. اصنع صورة وكائن للشخصية الي بتحركها .... وسميه man
الأن لدينا صورة مربع مظلم وفي منتصفه بقعة مضيئة ...وصورة ثانية مظلمة بالكامل ...
الفكرة : جعل الصورة ذات البقعة تتبع البطل "man" أما الصور المظلمة فتحيط بالصورة الأولى ...




4. نبدأ ... بالكائنات والأكواد ...
اصنع كائن "أوبجكت" وسميه dark1 ....وخليه بدون سبريت على شأن نقدر نحطة في الروم ....
5. خمسه وخميستين في عين الحاسدين ....... ^^"

6. اضغط Add Event وختار Create...
اكتب الكود :


كود PHP:

sprite_index=sprite0

image_alpha=0.9



ومعناه .... ضع السبريت "sprite0" وهو السبريت المظلم الي فيه بقعة الضوء ...
والسطر الثاني هو الشفافية ..." فإذا أمق_ألفا ساوت الصفر أصبحت صورة الأوبجكت غير مرئية وإذا ساوت الواحد أصبحت كما هي بدون شفافية " ....إذا image_alpha هي شفافية الصورة ....
7. كيف نجعل الأبجكت يلحق البطل ...؟؟؟
اضغط Add EVent واختار Step ومن القائمة إختار step. ....
واكتب الكود :


كود PHP:

x=man.x
y=man.y



تذكر أن man هو اسم الأوبجكت البطل الي يتحكم فيه اللاعب ... فموقع بقعة الضوء هو نفس موفع البطل ....وكتبناه في الحدث step لكي يتغير في كل خطوة ....

8. ونظيف مفتاح تشغيل الإضاءة .....
اضغط على Add Event واخير الحدت Key Press .....وختر space
واكتب الكود :
كود PHP:

if(sprite_index=sprite0){

sprite_index=sprite1}

else{

sprite_index=sprite0}




تذكر أن sprite0 صورة المربع المظلم صاحب بقعة الضوء ..وsprite1 المربع المظلم بالكامل...
ومعنى الكود : إذا كان السبريت "sprite0" يتغير إلى "sprite1" فإذا لم يكن يتغير لــ "sprite0" ..... بإختصار يشغل الضوء إذا كان مغلق ويغلقة إذا كان مشغل ...^..^"

9. نصنع أوبجكت آخر ونسميه darkdraw .....
اضغط على Add Event واختر الحدث Draw
اكتب الكود :
كود:


draw_sprite_ext(sprite1,-1,dark1.x+700,dark1.y,1,1,0,c_white,0.9);

draw_sprite_ext(sprite1,-1,dark1.x,dark1.y+700,1,1,0,c_white,0.9);

draw_sprite_ext(sprite1,-1,dark1.x-700,dark1.y,1,1,0,c_white,0.9);

draw_sprite_ext(sprite1,-1,dark1.x,dark1.y-700,1,1,0,c_white,0.9);

draw_sprite_ext(sprite1,-1,dark1.x-700,dark1.y-700,1,1,0,c_white,0.9);

draw_sprite_ext(sprite1,-1,dark1.x-700,dark1.y+700,1,1,0,c_white,0.9);

draw_sprite_ext(sprite1,-1,dark1.x+700,dark1.y-700,1,1,0,c_white,0.9);

draw_sprite_ext(sprite1,-1,dark1.x+700,dark1.y+700,1,1,0,c_white,0.9);




والدالة ... draw_sprite_ext هي الدالة الي ترسم سبريت في الروم ...وسنستخدمها لرسم المربعات المظلمة حول مربع بقعة الضوء....لاحظ أن هذه الدالة تتيح لنا خيارات ممتازة ...
والصورة العامة للداله هي :

كود:


draw_sprite_ext(sprite,subimg,x,y,xscale,yscale,rot,color,alpha)



ففي مكان "sprite" نضع اسم السبريت الي نريد إظهارة .. وفي المثال وضعنا sprite1 وهي صورة المربع المظلم ...
و "subimg" ... وأعتقد أنها رقم الصورة إذا كانت هناك عدة صور في السبريت *مش متأكد من هذي المعلومة*
وx وy .... يشيرن إلى موقع الرسم ...وفي المثال رسمنا المربع المضلم فوق مربع بقعة الضوء dark1.x+700 .....و700هي عرض مربع بقعة الضوء ....

وxscale و yscale هي إنعكاس الصورة في المحورين فإذا كانت xscale تساوي سالب واحد ستنعكس الصورة من اليمين لليسار ....وفي المثال كانت تساوي واحد أي كما في السبريت ...^^

و rot هي زاوية الدوران عكس عقارب الساعة .....

و color هو اللون ...وفي المثال كتبنا c_white ومعنا بدون تغيير في اللون .....

وalpha هي الشفافية المتدرجة من 0 إلى 1 ....ووضعنها 0.9 في المثال لتكون كالظلام الحقيقي ....




وبهذه الخطوة أنهينا صنع القاعة المظلمة و بقعة الضوء ...

وهذا هو المثال ----هنـــــــــــ darklight.gm6 (http://85.17.2.4/dl/fc8e234fcd09a8354f6901e5cc76a369/441bd4dc/wnvavh/darklight.gm6) ــــــــــــــا ----.....وبالتأكيد في المرفق بصيغة zip و rar

جرب السقوط من حافة الطريق للأسفل ولاحظ نهاية الظلام ....طبعًا هذا لن يحدث في اللعبة لأن الشاشة ستتبع البطل أو يموت مع سقوطة .....^..^"

بالتأكيد جرب الضغط على زر المسافة لتشغيل و إطفاء الضوء ......

أتمنى أن الدرس نال على إعجابكم .... أتمنى تشاركوني بأفكاركم

*

* المرفقات غير موجودة *

kakarot
27-07-2006, 07:15 PM
الحمد لله المثال موحود

kakarot
27-07-2006, 07:19 PM
المثال في المرفقات

d.a.m.h
27-07-2006, 08:24 PM
هذا الدرس كنت ابحث عنه ونسيت موضوع توسونامى المنتدى.......شكرا لك على استعادته لأنى فى حاجة له :D

kakarot
27-07-2006, 08:26 PM
هذا الدرس كنت ابحث عنه ونسيت موضوع توسونامى المنتدى.......شكرا لك على استعادته لأنى فى حاجة له :D
العفو والشكر الخاص لصاحبنا من التراب

PrinceOfSorrow
27-07-2006, 09:12 PM
يعطيك ألف عافية كاكاروت ^^

||صقر||
27-07-2006, 09:33 PM
شكرا اخى كراكوت على إسترجاعك للدرس وشكرا أخى من التراب على الدرس و دة بيفكرنى بمثل مصرى <<" الفلوس الحلال عمرها ما تضيع":D

kakarot
27-07-2006, 10:34 PM
يعطيك ألف عافية كاكاروت ^^
الله يعافيك

kakarot
27-07-2006, 10:36 PM
شكرا اخى كراكوت على إسترجاعك للدرس وشكرا أخى من التراب على الدرس و دة بيفكرنى بمثل مصرى <<" الفلوس الحلال عمرها ما تضيع":D
العفو وكمان من تراب تعب في وضع الدرس
وعلى فكرة المثال حلو ;)

من التراب
29-07-2006, 02:22 PM
يااااااي ابني كنت أظن أنه غرق بتسونامي المنتدى:D

كاكاروت اممممم أحب أقولك شكرًا ...

صراحه ذكرتني بأيام دروس التميز الي ناوي أكملها لأن راسي فيه أفكار مميزه شوي ;)

بس أريد أسألكم بنشوف شي جديد في ألعابكم؟؟ نريد إبداعاتكم والتميز وخاصه أن الجميع تقريبا يعمل على لعبه للمسابقه ^.^

والشكر لجميع الي ردو ع درس كاكاروت ;)

وإلى الأمام ...

Son Of UAE
29-07-2006, 07:36 PM
مشكور على الدرس ... الحين انتبهت اني ما رديت

kakarot
30-07-2006, 12:28 PM
يااااااي ابني كنت أظن أنه غرق بتسونامي المنتدى:D

كاكاروت اممممم أحب أقولك شكرًا ...

صراحه ذكرتني بأيام دروس التميز الي ناوي أكملها لأن راسي فيه أفكار مميزه شوي ;)

بس أريد أسألكم بنشوف شي جديد في ألعابكم؟؟ نريد إبداعاتكم والتميز وخاصه أن الجميع تقريبا يعمل على لعبه للمسابقه ^.^

والشكر لجميع الي ردو ع درس كاكاروت ;)

وإلى الأمام ...
شكراً على ردك الجميل وهو أيضاً من مجهودك الخاص أكيد تعبت في الدرس مع الأمثلة والشكر الأكبر لك طبعاً

kakarot
30-07-2006, 12:31 PM
مشكور على الدرس ... الحين انتبهت اني ما رديت
جزاك الله خيراً على ردك