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

مشاهدة النسخة كاملة : ~المنطق قي تصميم الألعاب و السكربتات ~ الدرس الثالث "عملي"



CalmKiller
11-07-2010, 01:10 PM
بسم الله الرحمن الرحيم

حقيقة قبل بداية اي درس اقوم بعمل مسودات لما ساوضحه.
ولكن درس اليوم عملي.
اذن كيف ؟
الجواب : سأقوم بوضع مجموعة من الأكواد و اريكم الفرق بين الكود و الأخر و ما الأفضل و لماذا.
________________________________________________________
________________________ المنهاج الأول________________________
________________________________________________________
ماذا حدث ؟
صممت لعبة و عرفت فيها منشأ الشخصيات كالأتي



Structure Character_ingame
Dim name As String
Dim X_loc As Integer
Dim Y_loc As Integer
Dim Z_loc As Integer
Dim Level As Integer
Dim Str As Integer
Dim Acc As Integer
Dim Mag As Integer
Dim Def As Integer
End Structure

هل فهمت اي شيء ؟
دعني اوضح
الأن نحن نستخدم لغة تقريبا مثل البيسيك المرئي Visual Basic ~لماذا : لأنه اسهل و اكثر انتشارا بين الناس~
ولكن ما سنطبقه هنا
يمكنك استخدامه لأي لغة .

الأن لقد عرفنا ~منشأ ~Structure~ للشخصيات, بمعنى ؟
انه في كل مرة سوف يستدعى هذا المنشاء سوف تقوم بتعبئة البيانات التي فيه
و ما هي تلك البيانات ؟
name, X_loc,Y_loc,Z_loc,Level,Str,Acc,Mag,Def
كما هو واضح
name = اسم الشخصية
X_loc = موقع الشخصية بالاحداثي السيني X
Y_loc = موقع الشخصية بالاحداثي الصادي Y
Z_loc = موقع الشخصية بالاحداثي العيني Z
Level = مستوى الشخصية
Str = القوة >> ملحوظة Str اختصار لكلمة Strength
Acc = الدقة >> ملحوظة Acc اختصار لكلمة Accuracy
Mag = القوة السحرية >> ملحوظة Mag اختصار لكلمة Magic
Def = الدفاع >> ملحوظة Def اختصار لكلمة Defense

وفي تلك اللعبة اضفت ميزة ان اللاعب بأمكانه استدعاء وحش ما للمقاتلة في صالحه
ولكن اللاعب لا يستطيع استدعاء وحش اقوى منه في المستوى

و اضفت نظامين :
الأول لتحديد الفرق بين اللاعب و الوحش في المستوى
و الثاني لتحديد مكان اللاعب حتى يقوم باستدعاء الوحش بالقرب منه

و كان كود النظامين كالأتي :
الأول:



Function Diffrence( The_Player,The_Monster)
If The_Player.Level > TheMonster.Level
Then
return true
Else
return false
End If
End Function

شرح النظام
عند استدعاء هذا النظام يجب عليك ادراج اللاعب The_Player واللذي هو في الأساس منشأ من نوع Character_ingame الذي شرحناه في السابق
و ادراج الوحش The_Monster و هو في الغالب منشأ ايضا و لكن يختلف عن منشأ اللاعب
مع انه يحتوي على (مستوى و قوة و أشياء اخرى )
اذن ماذا يفعل النظام ؟
يقوم هذا النظام بالمقارنة بين مستوى اللاعب و مستوى الوحش
اذا وجد ان مستوى اللاعب اعلى يقوم بأعادة القيمة True
اذا وجد ان مستوى اللاعب اقل او في نفس مستوى الوحش او غير ذلك يقوم بأعادة القيمة False
و ذلك بأستخدام الدالة If




و الأن مع شرح النظام الثاني :



Function Get_player_loc( The_player)
Dim XYZ As Location_Set
XYZ.x = The_player.X_loc
XYZ.y = The_player.Y_loc
XYZ.z = The_player.Z_loc
return XYZ
End Function

اذن ماذا يفعل هذا النظام ؟
لايجاد احداثيات اللاعب عند استدعاء هذا النظام تقوم بادخال The_player والذي هوة عبارة عن منشأ اللاعب الذي صممته و تعرف XYZ على انه منشأ آخر من نوع Location_set
هذا المنشأ مهمتة حمل احداثيات معينة.
يقوم النظام باعادة هذا المنشأ الحامل للاحداثيات بعد استدعاءه.


الأن ندخل في المهم
ميزة استدعاء الوحش :
ايضا ما هي الا عبارة عن نظام آخر
وهو كالتالي



Function Summon_MonsterForPlayer( The_player, The_monster)
If Diffrence( The_player, The_Monster) = true
Then
Dim Loc As Location_set = Get_player_loc( The_player)
Create_UNHARM_Monster(The_player,The_Monster,Loc)
Else
Nothing
End If
End Function






اذن هذا النظام عند استدعاءه تقوم بأدخال منشأ اللاعب و الوحش
و النظام بحد ذاته يستدعى نظام المقارنة و الاحداثيات
اذا كان كل شيء سليم
سوف يستدعى النظام نظاما آخر لانزال الوحش بجانب اللاعب و هو Create_UNHARM_Monster

اذن
هل فهمت
هذه الأكواد ليست تنسخ و تلصق
وقد قصدت صنعها هكذا
انها تفهم فقط
هل ترى المنطق ؟
اذن
دعني اقل لك
هناك منطق افضل
لماذا صنعنا كل هذه الأنظمة ؟
الا يمكن اختصارها ؟
انظر لهذا المنطق الأخر و قل لي رأيك بين المنطقين



أولاً
نغير منشأ الشخصية للأتي




Structure Character_ingame
Dim name As String
Dim Location As Location_set
Dim Level As Integer
Dim Str As Integer
Dim Acc As Integer
Dim Mag As Integer
Dim Def As Integer
End Structure

و نلغي نظام ايجاد الاحداثيات و نظام المقارنة بين المستوى
و نجدد في كود الاستدعاء ليصبح كالأتي :



Function Summon_MonsterForPlayer( The_player, The_monster)
If The_player.Level > The_monster.Level
Then
Create_UNHARM_Monster(The_player,The_Monster,The_player.Location)
Else
Nothing
End If
End Function


هل تسأل نفسك الأن ~ ماذا فعلنا ؟ و ماذا استفدنا ؟~

ان كنت تسأل نفسك هذين السؤالين
فأنت في الطريق الصحيح للتعلم
أهنئك من كل قلبي

و الأن سوف اشرح
حتى نختصر الوقت ...
و الأكواد ...
قمت بتجديد منشأ الشخصية
و قمت بمسح انظمة تحديد الأماكن و الفرق في المستوى
و قمت بدمج الجميع في نظام الاستدعاء
فأصبح نظام الاستدعاء يفعل الأتي
يرى الفرق بين مستوى الشخصية و الوحش
و يستدعي الوحش بجانب الشخصية
ولا حاجة لنظام يحدد مكان الشخصية
لأن المكان موجود في الشخصية من الأساس


هل تصدق ان قلت لك
ان مجموعة الأكواد السابقة
يمكن اختصارها اكثر و اكثر ؟
نعم!
يمكن ذلك
كله يعتمد عليك
على منطقك
على طريقة تفكيرك
انت من تحدد مستواك
و ليس انا
و ليس غيري
لا حدود لك الا حدود عمرك
لتتعلم و تعلم
فأنت ~ صانع الألعاب ~

CalmKiller
13-07-2010, 05:40 PM
شكل الناس فاهمة :]
مش بقولكم احنا خلاص اصبحنا ~ مقطعين السمكة و ذيلها~

فارس المجد
18-07-2010, 07:41 PM
ما فهمت قصدك بالرد السابق ....
ولكن فعلاً الموضوع مفهوم وبسيط للغاية
ولكن أتمنى أن تكمل إضافتك للدروس , فمثلاً أنا استفدت من الدرس الثاني وبالذات من الفيديو ولو أن ليس له علاقة بصناعة الألعاب
وعلى فكرة دروسك تدل على أنك شخص فاهم ولك مستقبل في هذا المجال...

والله يجزيك الخير ويطيل بعمرك

CalmKiller
20-07-2010, 02:04 AM
الرد السابق اللي بتتحدث عنه
حسيت بعدم جدوى الدروس فقط :]
ولكني مستمر في اصدارها
و بالنسبة للدرس الرابع حيكون له صدمة على تصميم الألعاب
ولكن يحتاج الى دراسة اكتر :]

oms
20-07-2010, 03:20 PM
من الجميل أن يتواجد هناك أشخاص يعملون على الفيجوال بيسك ...
فقد بقيت عليه لمده تقارب السنتين ، وقمت ببرمجة أكثر من لعبة عليه منها لعبة ال MasterHacker ولكن الفيجوال بيسك رغم أنه بسيط إلا أنه ضعيف في الرسوميات ثنائية البعد ، فيتوجب علينا تعلم الدايريكت إكس وإستخدام مكتباتها لعمل ذلك .. مما قد يصعب لدى المبتدئين بهذا المجال .
أتمنى منك إكمال دروسك على محركات ألعاب لا على لغات برمجة مباشرة .. ولك كل التحية والتقدير على الجهود التي تضعها في القسم .

مبارك الرشيدي
20-07-2010, 04:16 PM
كان بودي اقولك هذي الكلمه من زمان

ولكن سبقني عليها الاخ اسامه

أتمنى منك إكمال دروسك على محركات ألعاب لا على لغات برمجة مباشرة

وتقبل تحياتي

CalmKiller
21-07-2010, 06:36 AM
بسم الله الرحمن الرحيم
اللغات ... البرامج ... المصادر
كلها ادوات
المنطق قد يختلف من ناحية البرنامج او اللغة
ولكنه ثابت في الاساس
~ّ~ّ~ّ~ّ~ّ~ّ~ّ~ّ~ّ~ّ~ّ~ّ~ّ~ّ~
احب ان اوضح ما هي دروس المنطق التي وضعتها حتى الأن و التي سأضعها لاحقاُ

1- تنشيط العقل و استنفاره ~ الدرس الأول ... انتهى
2- الترتيب الطبيعي و معرفة موقعك في مشروع ما ~ الدرس الثاني ... انتهى
3- المنطق في تصميم سكربت ما ~ الدرس الثالث ... انتهى
4- المنطق وراء تصميم الألعاب الأونلين ~ الدرس الرابع ...
5- التقارير الفنية في صناعة الألعاب ~ الدرس الخامس ...

~ّ~ّ~ّ~ّ~ّ~ّ~ّ~ّ~ّّ~ّ

حاليا هذه الدروس التي تدور في بالي
و السلام عليكم ورحمة الله و بركاته
اخوكم : اسلام الريان

nareeman
05-11-2010, 11:16 AM
السلام عليكم
ممكن سؤال
اي لغة برمجة تستخدم لتصميم الالعاب وأيها الافضل ؟
وشكراااااااااااااااااااا

hamacka2
10-02-2011, 03:47 PM
المنطق قد يختلف من ناحية البرنامج او اللغة
ولكنه ثابت في الاساس
كلم صحيح لاني لا اشتغل عل هده الغة لكن قرات الدرس من اوله لاخره لاكتسبة فكرة وليسة لافهم الغة وهكد يكون تعلم بتوفيق