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

مشاهدة النسخة كاملة : [دروس التميـّـز]مقدمة + زلزال الـGM



من التراب
10-03-2006, 12:12 AM
السلام عليكم ورحمة الله وبركاته ...

بسم الله الرحمن الرحيم... والصلاة والسلام على خاتم الأنبياء و المرسلين سيدنا محمد وعلى آله وصحبه أجمعين ....أما بعد..
أسأل الله أن يضع في هذه السلسلة من الدروس الفائدة و المنفعة لإثراء معلوماتكم و تطوير مهاراتكم في هذا المجال ..... ويعيننا على الإستمرار ...

اخترت اسم دروس التميـّـز لسلسلة الدروس هذه .. لأن الهدف منها هو " كيف نجعل ألعابنا مميزة" وسنركز على التأثيرات والأفكار المميزة والتي يقل تكرارها في الألعاب ....^^"

شيء ضروري :

صراحة أحتاج إلى أفكار وأفكار و أفكار ... بس أفكار وخلوا الباقي عليه ... أي واحد تخطر على بالة فكرة يرسلها لي بأي طريقة ...^_^

أريد أفكار كثيرة جدًا ..... لكي أستمر ...
وكل الدروس بتكون على القيم ميكر ...و... و.... وبس ندخل في الموضوع ..^^"


الدرس الأول : زلزال القيم ميكر ...:wow:


ما هي التأثيرات الي تكون مع انفجار قنبلة أو الإطلاق على العدو أو تحطب الطائرة .....الخ ، أكيد تتغير الصورة و يحدث صوت الانفجار أو التصادم .... هذا ما يحدث في كل الألعاب التي من هذا النوع ....ـ_ــ

لماذا لا تهتز كل اللعبة ......^_^ ....بسبب هذا الانفجار أو التصادم الفكرة مميزة.... لكن كيف ؟؟؟ ...
الأمر بسيط .... إما أن نحرك كل الكائنات و الصور والخلفيات وكل الي في الروم بانتجاهات عشوائية ...لكن كم كائن في اللعبة وكم خلفية ....×_×

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

نبدأ :

1. نصنع كائن جديد (Ctrl+Alt+o)... ونسميه (Object0) ..

2. نضيف حدث بالضغط على (Add Event) ... ونضغط على الحدث (Create) ....



+ معلومات عن الحدث Create
يحتوي على كل Actions (الأفعال) التي تحدث إذا كل الكائن موجودً في الغرفة.... وأحيانــًا يستخدم لتحريك الكائن أو لصناعة المتغيرات ...



3. نضيف الكود




xchange=0;

ychange=0;

eq_on=0;



وسنستخدم المتغير الأول لتعبير عن التغير في المحور إكس (في عرض الغرفة) والثاني لتعبير عن التغير في المحور الرأسي واي (في طول الغرفة)...والأخير هو مفتاح حدوث الزلزال ..^^

4. نضيف حدث بالضغط على (Add Event) ... ونضغط على الحدث (step) ....ونختار step من القائمة الي بتطلع لنا ...



+ معلومات عن الحدث Step
حدث الإستب يحدث كل خطوة من اللعب ويستخدم للأفعال و النشاطات المستمرة مثل زيادة الزمن ..

ويستخدم دائمـًا للتدقيق في متغير لذلك ووضع فيه الأحداث المشروطة والمتعلقة بالمتغيرات ... سنتعرف على تطبيقات حدث الخطوة من خلال هذه الدروس ..^^




5. خمسة وخميستين في عين الحاسدين ...

6. نضيف كود في الجدث Step




if (eq_on==1){

for (xchange=0;xchange<=5;xchange=random(15)-random(15)){

for (ychange=0;ychange<=5;ychange=random(15)-random(15)){

view_wview[0]=640+xchange;

view_hview[0]=480+ychange; }}

}
else
{
view_wview[0]=640;
view_hview[0]=480;
}


7.شرح الكود :

استخدمنا في هذا الكود الدالة "if" وهي الدالة الشرطية ...
[ نموذج الدالة "if" العام : if (<expression>) <statement> else <statement> ]
ومعناها : إذا كان (المتغير يساوي 1 ) {يحدث الحدث} "ما عدل ذلك" (else) {يحدث الحدث الآخر}

أما الدالة "for" فهي دالة التكرار "loop" وتستخدم لتكرار الحدث ما دام الشرط الذي تحتويه الدالة صحيحًا ...

لاحظ الكود المكتوب بين القوسين بعد الدالة for .....

(…;…;xchange=0) فستعتبر الدالة المتغير xchange يبدأ من الصفر

(….;xchange<=5;…) في كل مرة إذا كان المتغير xchange أصغر من أو يساوي خمسة يستمر الحدث ما عدا ذلك يتوقف الحدث .. وبما أنه سيبدأ من الصفر فسيكمل دورة على الأقل

((xchange=random(15)-random(15...;…..) فإذا تحقق الشرط السابق تتغير قيمة المتغير xchange وتصبح( (random(15)-random(15 ) و معنى (random(15 هو وضع قيمة عشوائية تبدأ من 1 إلى 15 .....يعني 1 أو 2 أو 3 أو ....15

لماذا وضعت (random(x ثم طرحتها من نفسها ....؟؟؟

لتكون هناك قيم عشوائية أكثر ويمكن أن تكون سالبة أيضـًا وهذا ما نريده لحدوث الهزات في كل الاتجاهات السالبة والموجبة .... وكذا لك ستكون القيمة صغيرة فتتكرر الدالة ...

نصيحة : لا تجرب وضع ((random(4) بدلا ً من ((random(15)-random(15) ..وإلا ستتجمد اللعبة ... لأن المتغير لن يصل إلى الشرط وسيبقى أقل من 5 مما يؤدي إلى التكرار بلا نهاية فتتجمد اللعبة ...^..^"

نستنتج ...سيكون الزلزال أطول كلما قلة القيمة التي نضعها في( )random إلى أن تصل إلى القيمة التي في الشرط وهي 5 في المثال فتتجمد اللعبة عندها ...لكن ستقل شدة الزلزال ...^^

== علمتكم كيف تصنعون فيروس في القيم ميكر ...خخخخخخخ ==

نكمل الشرح :





view_wview[0]=640+xchange;

view_hview[0]=480+ychange;



هنا view_wview تدل على عرض الجزء المعروض من الروم و view_hview تدل على طول الجزء المعروض من الروم .....والرقم هو الرقم المعروض فهناك 8 طرق عرض يمكن إضافتها للروم ..[0 إلى 7]

http://www.uplod.yaglby.com/files/FromSand-1141938013.jpg


1)افتح الروم .. اختار Views....
2) و 3) تأكد أن علامة صح موجودة في الخيارين (Enable the use of views) و (Visible when room starts) و تأكد أنك مختار view0 وإذا غيرته غير الرقم الي في الكود ...

4) هذه القيمة الي استخدمناها في الكود وأضفنا إليه المتغيرين xchange و ychange فتهتز ويتزلزل الروم ..^^

أما




else
{
view_wview[0]=640;
view_hview[0]=480;
}




فهو الكود الي يعيد الروم إلى أبعادها الحقيقية بعد انتهاء الزلزال ....يعني زلزال بدون أضرار ...^^"

8. نضيف حدث بالضغط على (Add Event) ... ونضغط على الحدث (Alarm) ....ونختار Alarm 0 من القائمة الي بتطلع لنا ..



+ معلومات عن الحدث Alarm
حدث ساعة التنبيه .... هو حدث تنظيمي ولكل كائن 12 ساعة ... ويمكن أن تستخدمها للأحداث التي تحدث من وقت لآخر .... مثلا ً عدو يغير إتجاه حركته كل 30 خطوة ...( يجب أن يكون هناك حدث يحدد الخطوات ويحتوي الفعل الذي يفعل ساعة التنبيه ..)




9. نضيف كود :


eq_on=0;
instance_destroy();



يعني يوقف الزلزال ..
أما السطر الثاني لو كنت تريد الكائن يختفي ( تستخدمه في حالة انفجار قنبلة فتحتفي بعد توقف الزلزال )

10.تضيف حدث إما ضغط على زر أو تصادم ..... وتكتب فيه الكود




sprite_index=sprite1;

eq_on=1;

alarm[0]=20;







لاحظ أن الدالة الأولى تغير صورة الكائن إلى sprite1 ...وتغيره على راحتك ...


أما السطر الثاني فيفعل الزلزال وتبدأ الهزات ...^^
والسطر الثالث فيفعل الأحدث Alarm 0 .... بعد 20 خطوة (الخطوة : فترة زمنية بسيطة )

11. ضع الكائن في الروم ..... تأكد أن علامة صح موجودة في الخيارين (Enable the use of views) و (Visible when room starts) و تأكد أنك مختار view0 وإذا غيرته غير الرقم الي في الكود ...

وأخيرًا شغل اللعبة .......أو اضغط F5

وسلامتكم .......^_^

وهذي وصلة لمثال لأنه بسيط ويختصر الوقت ...^..^"
---- وصلة للمثال --- (http://web1.storeandserve.com/?downloads/download_page2) ادخل بتلقى الوصلة تحت..
وموجوود في المرفق بصيغة rar و zip
اضغط زر المسافة في المثال ....لتحدث الهزه ..^^

وإذا خطر في بالك أي سؤال فلا تتردد .... لأني مش متأكد يمكن كلمة نسيتها سهوًا فلا تآخذوني على التقصير أو التطويل .....^^"

ولا تنسون الأفكار لأني أستمتع وأنا أحاول تطبيقها ...... أنا متحمس للدرس القادم بس هذا يعتمد على تفاعلكم ..^^

Fox McCloud
10-03-2006, 07:16 AM
مشكوور اخوي من التراب على الدرس الأكثر من رائع

MALTOOSH
10-03-2006, 09:13 AM
مشكووور أخوي من التراب على الدرس الرائع جدا...

Son Of UAE
10-03-2006, 10:11 AM
مثال ممتاز
اسلوب شرح متميز
مجهود تشكر عليه
انا شخصيا استفدت منه :biggthump
تستاهل الترشيح ;)

Mr. Black Man
10-03-2006, 11:25 AM
درس رائع جداً :biggthump و فكرة رائعة :)
ممممم :33: , ما عندي أفكار حالياً ... إن شاء الله بس يكون عندي أفكار بخبرك ;)
و شكراً لك :)

الموقوف
10-03-2006, 11:35 AM
موضوع أكثر من رائع ;)

مشكووووور على مجهودك الذي بذلته من أجلنا :)

من التراب
10-03-2006, 01:33 PM
العفو شباب ...هذا أقل شي ءأقدر أقدمة لكم ....^..^"

أنا شرحت بالتفصيل لكن إنشاء زلزال في القيم ميكر أمر سهل ....و أتمنى أشوف في ألعابكم مثل ألعاب الطيارات فتهتز الشاشة إذا أصبت الهدف .... أريد أشوف نتائج .......^^"

ومشكور على التشجيع .....^_^

||صقر||
10-03-2006, 02:37 PM
مشكور أخى على الدرس الرائع وعلى طريقة الشرح الأروع

من التراب
10-03-2006, 11:28 PM
العفو ....^^"

بس شو الي رائع في طريقة العرض علشان ما أهمله في الدروس القادمة ؟؟؟؟

ولا تنسون الأفكار لأن حاليــًا 4أو 5 أفكار مخبأة في الفص الصدغي من دماغي .... والدرس القادم شبه جاهز بس لازم أثقل شوي ...^..^"

d.a.m.h
11-03-2006, 12:00 AM
طريقة رائعة يا من التراب و شرح متميز
و على فكرة هناك طريقة اخرى لعمل زلزال لكن للobjects فقط و طريقة معقدة
تستعمل فيها دالة الsin ..............طريقتك افضل بكثير
حاليا ليس عندى افكار حاليا لأنى مشغول بلعبة joe2000
بانتظار درسك القادم............والسلام عليكم:ciao:

من التراب
11-03-2006, 10:37 AM
هلا ..... فكرة حلوة أوبجكت يهتز ....وتقول ما عندك أفكار ...^_^

أريد أشوف الزلزال في لعبة joe2000 ......^..^"