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

مشاهدة النسخة كاملة : [درس] تعامل مع أوبجكتين في اوبجكت واحد



PrinceOfSorrow
13-01-2008, 05:12 AM
بسم الله الرحمن الرحيم

السلام عليكم ورحمة الله وبركاته

مقدمة :

في هذا الدرس سوف نتعرف على كيفية دمج اوبجكتين في اوبجكت واحد على سبيل المثال صنع سلاح في اوبجكت منفصل وشخصية في اوبجكت اخر

واحب انوه انه هذا درس سوف يكون في قمة التطور عن درس الذي انشأته للمجلة في اليوتوب للعام الماضي :
6Y8rcpZKQrs

للأسف فعلا هذه طريقة مرت عليها سنة منذ اكتشافي لها
ولها الكثير من العيوب والأخطاء ارجو عدم تقيد بها بعدا عن اخطاء :

على سبيل المثال :

عند وضع اكثر من اوبجكيت في الغرفة الواحدة سوف يكون هناك خطأ كبير حيث لم يميز اوبجكت الذي تم وصله بالأوبجكت الاساسي :
-----------------
START
=======================
Sprites Section
المطلوب :

المصادر :
1- صورتين فقط (1-مربع + 1- مثلث)
http://img521.imageshack.us/img521/7163/pic1mg6.png
===================

قم بتسميتهم كما في شكل :
spr_part1 للمربع
spr_part2 للمثلث

===================
الأن إلى
Objects Section

المطلوب :

أوبجكتات :

1- فقط اوبجكتين مختلفين
http://img209.imageshack.us/img209/3857/pic2os6.png

===================

قم بتسميتهم كما في شكل :
obj_part1 للمربع
obj_part2 للمثلث

=====(الأن توقف)=====

سوف ندخل الان اوبجكت بأوبجكت :

اولا :
في
obj_part2
(المثلث)
---------------------

http://img209.imageshack.us/img209/2144/pic3bo8.png

Events:

أختار step

Actions(متعلق في step)

في قائمة العمودية في اليمين اختار (move)
بعد ذلك اختار تحت قسم jump :
jump to a given position
http://img246.imageshack.us/img246/6664/pic4kz8.png


بعد ذلك قم بكتابة ذلك :
------------------------
Applies to Self
---
x = obj_part1.x
y = obj_part1.y
---
NOT Relative
http://img246.imageshack.us/img246/1041/pic5lb8.png
------------------------

شرح مختصر لما سبق :
في حدث ستيب الخاص في obj_part2 وضعنا قفز متكرر لنقطة محددة على
obj_part1
مما ينتج التحام الأوبجكت obj_part2
في أوبجكت obj_part1 كأوبجكت واحد
--------------------------------------

==(obj_part2 finished)==

___________________

ثانيا :
obj_part2
( المربع )
---------------------
http://img209.imageshack.us/img209/2985/pic6ic7.png


Events:

أختار Create
في قائمة العمودية في اليمين اختار (Control)
بعد ذلك اختار تحت قسم Code :

ُExecute A piece of Code
http://img209.imageshack.us/img209/2879/pic7mh9.png
====================

أكتب بعد ذلك :


selfpart = instance_create(x,y,obj_part2)شرح بسيط :

قمنا بصناعة تعريف كمتغير للأوبجكت

مرة اخرى :
Events:

أختار End Step

في قائمة العمودية في اليمين اختار (Control)
بعد ذلك اختار تحت قسم Code :

ُExecute A piece of Code
http://img209.imageshack.us/img209/2879/pic7mh9.png

====================

أكتب بعد ذلك :


selfpart.x = x
selfpart.y = yشرح مختصر لما سبق :
الأن obj_part1 قادر على خلق شكل obj_part2 الخاص به حيث عرفناة بقيمة خاصة تم تسميتها selfpart كأسم تعريفي لكل جزأ
==(obj_part1 finished)==

الأن لتجربةadd room
http://img246.imageshack.us/img246/3198/pic8st4.png


قم بوضع obj_part1 فقط !! بالكمية التي ترغب بها

نتيجة :

http://img209.imageshack.us/img209/6161/pic9gb1.png

ملاحظة :

انا معدل سنتر صور وتلاعبت فيه ولكن الاساسي كان

المفروض يظهر مثل هذا شكل :
http://img209.imageshack.us/img209/6161/pic9gb1.png

ملاحظة اخرى :

أثناء رغبة في تدمير obj_part1 سيكون هناك عطل :
http://img209.imageshack.us/img209/8765/pic11gy6.png

كيفية تفادي هذا العطل :

في obj_part2

في حدث Step السابق
في قائمة العمودية في اليمين اختار (Control)

تحت قسم Questions

اختار ايكونة :
If the number of instances is a value
http://img209.imageshack.us/img209/8661/pic12ve9.png
------------------------
Objects : obj_part1
Number : 0
Operation : Larger Than
http://img246.imageshack.us/img246/224/pic13fo4.png
------------------------

انتهى الدرس

--------------

هذه مرة راح اتعمد اني ماحط مثال حبيت الكل يطبق درس فعلا بسيط ومفيد

^___~

وسلام عليكم ورحمة الله وبركاته

kakarot
13-01-2008, 07:26 AM
شكراً برنس والصراحة ما أحب GM بس الدرس جميل وإن شاء الله برجعه بعد لما أتقن DBP و RPG و FPS
^^
تسلم

TheIslamFalcon
13-01-2008, 04:56 PM
الله عليك يابرنس درس مميز فعلاً وشكراً لك على الجد الشخصي الذي قمت به.

PrinceOfSorrow
13-01-2008, 11:27 PM
العفوو وشكرا لكم للمتابعة ^___^
وياليتك ياعصفور وكاكروت تطبقون درس وترفعونه بالمرفقات وترونا أيش شغلكم ^___^
it's not difficult

d.a.m.h
14-01-2008, 02:25 AM
اذكر فعلا انى رأيت هذا المثال من قبل...لقد استخدمت نفس الطريقة فى mega kombat 2 لعمل الظلال والانعكاسات الخاصة بشخصيات وباقى كائنات اللعبة
شكرا على الدرس وننتظر فكرة جديدة

من التراب
15-01-2008, 02:31 AM
درس حلو ... الجزء الأهم :
selfpart.x = x
selfpart.y = y

تحكمت بمتغيرات المثلث من خلال المربع ... ^_^"
درسك له تطبيقات حلوه مثل الجندي يمشي بالكيبورد وسلاحه يتبع إتجاه الماوس (يدور)... مثل ألعاب الفلاش

تسلم ع الدرس ... لكن ليش ما نحاول نحل المشكله :
عند وضع اكثر من اوبجكيت في الغرفة الواحدة سوف يكون هناك خطأ كبير حيث لم يميز اوبجكت الذي تم وصله بالأوبجكت الاساسي

PrinceOfSorrow
15-01-2008, 02:41 AM
اذكر فعلا انى رأيت هذا المثال من قبل...لقد استخدمت نفس الطريقة فى mega kombat 2 لعمل الظلال والانعكاسات الخاصة بشخصيات وباقى كائنات اللعبة
شكرا على الدرس وننتظر فكرة جديدةامر رائع حقا ^^
يمكن الأستفادة بهذه الخاصية باكثر من طريقة مفيدة اخرى ^^
============

درس حلو ... الجزء الأهم :
selfpart.x = x
selfpart.y = y

تحكمت بمتغيرات المثلث من خلال المربع ... ^_^"
درسك له تطبيقات حلوه مثل الجندي يمشي بالكيبورد وسلاحه يتبع إتجاه الماوس (يدور)... مثل ألعاب الفلاشمرحبا عزيزي من تراب ^^
نعم هذا هو المقصد بظبط ممكن عمل هذه الشخصية او دبابة حيث تتحكم بالمدفع ويدور حول اتجاه الماوس والجزأ الاخر تتحكم به بطريقة اخرى
والكثير من خواص وايضا عمل سيف لشخصية في اوبجكت مستقل ايضا بهذه طريقة سيكون افضل ^^
===========

تسلم ع الدرس ... لكن ليش ما نحاول نحل المشكله :
عند وضع اكثر من اوبجكيت في الغرفة الواحدة سوف يكون هناك خطأ كبير حيث لم يميز اوبجكت الذي تم وصله بالأوبجكت الاساسيالله يسلمك ^^

ولكني وضعت الشرح لتفادي هذه المشلكة وهو ابسط عن طريق وضع قانون ^^


أثناء رغبة في تدمير obj_part1 سيكون هناك عطل :
http://img209.imageshack.us/img209/8765/pic11gy6.png

كيفية تفادي هذا العطل :

في obj_part2

في حدث Step السابق
في قائمة العمودية في اليمين اختار (Control)

تحت قسم Questions

اختار ايكونة :
If the number of instances is a value
http://img209.imageshack.us/img209/8661/pic12ve9.png
------------------------
Objects : obj_part1
Number : 0
Operation : Larger Than
http://img246.imageshack.us/img246/224/pic13fo4.png
------------------------


ممكن جعل الأوبجكت يدمر نفسه او يتحول إلى اوبجك اخر حسب رغبة وهذا ابسط بالقوانين ^^

kakarot
15-01-2008, 11:53 PM
جربت تطبيق الدرس ولكن حدث المشكلة
تفضل الملف في المرفقات ؟؟

d.a.m.h
16-01-2008, 01:55 AM
انا قرأت الدرس مرة اخرى على مهل....ووجدت انى لم استعمل طريقتك بنفسها فى لعبتى...فعلا فكرة هذا الكود

selfpart = instance_create(x,y,obj_part2)
جديدة وجيدة لم تخطر ببالى....شكرا جزيلا على الفكرة
بالمناسبة عندى سؤال....هل المتغير selfpart يسمى مقبض الدالة,ام المقبض يقصد به شىء اخر فى البرمجة؟؟

PrinceOfSorrow
16-01-2008, 07:25 AM
جربت تطبيق الدرس ولكن حدث المشكلة
تفضل الملف في المرفقات ؟؟
كل مافعلته صحيح ولكن امر غريب وعجيب حقا غير اسم obj_part2 إلى obj_parta واعتمده ايضا في كود وسوف يعمل .
=============

بالمناسبة عندى سؤال....هل المتغير selfpart يسمى مقبض الدالة,ام المقبض يقصد به شىء اخر فى البرمجة؟؟سيلف بارت هو متغير تعريفي للأوبجكت ممكن ان تسميه اي شي ولكن الفكرة من ذلك انه حولنا هذا اوبجكت كمتغير خاص حتى يتم تعرف عليه لكل جزا ^______^

kakarot
16-01-2008, 08:39 AM
المشكلة هي هية ؟؟

PrinceOfSorrow
16-01-2008, 09:00 AM
عرفت أيش مشكلة يا كاكاروت انت حاط space بعد اسم اوبجكت obj_part2!!

امسح اخر فراغ شوي انت ضايف سبيس (يعني مسافة) حدد بالماوس وراح تشوف هاي شي ^^

kakarot
16-01-2008, 09:20 AM
ما تغير شيء ؟

PrinceOfSorrow
16-01-2008, 09:33 AM
ما تغير شيء ؟

اخوي شفت اوبجكت انت مسويه اسمه opj_part2 ? انت بعد ماكتبت الاسم سويت مسافة يمكن عن طريق خطأ وهذه مسافة هي خربت كالشي مسافة بعد حرف 2 امسح من يديد واكتب obj_part2 تذكر جيم ميكر مستحيل يتعامل مع اسم فيه مسافة !!

kakarot
16-01-2008, 02:08 PM
جربت ولكن دون جدوى
أصبح المثلث في وسط المربع ؟؟

d.a.m.h
16-01-2008, 04:52 PM
جربت ولكن دون جدوى
أصبح المثلث في وسط المربع ؟؟
اخى العزيز kakarot
حمل مثالى فى المرفقات واقرأ ملف المساعدة بعناية لتعرف اخطاءك

kakarot
16-01-2008, 05:41 PM
شكراً على المساعدة

Karim Ghazal
18-01-2008, 05:15 AM
درس مفيد فعلاً .. مشكور برنسو .. ننتظر جديدك ..

lugia 50
21-01-2008, 03:08 PM
هلا أخوي برنس

مشكور لى الموضوع

و انتظر تطبيقي