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

مشاهدة النسخة كاملة : [درس]دروس في الدارك بيسيك الجزء الثاني



snake_x86
12-09-2006, 06:21 PM
دروس في الدارك بيسيك الجزء الثاني


مع Snake_x86





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

****معلومة مهمة: لن اتطرف الى جميع اوامر الدارك بيسيك فكلها موجودة مع ملفات
المساعدة المرفقة مع الدارك بيسيك,مرتبة, منسقة, مشروحة بالتفصيل كل ما عليكم فعله
هو: من الدارك بيسيك اضغط help ثم Command Help ستظهر نافذة اختر Commands.
و هنا يوجد كل شيء مشروح مرتب حسب الوظيفة و اهم قسم بالنسبة لل 3دي هو قسم Basic3D Commands.

قبل ان ابدأ اذا كنت تبحث عن دروس بسيطة راجع هذا الدرس(ليس من كتابتي). (http://www.montada.com/showthread.php?t=456229)
و اريد ان اذكر بأشياء اشرت اليها في الجزء الاول من دروسي:
· الدارك بيسيك لا يفرق بين حرف صغير و كبير.
· اغلبية اوامر الدارك بيسيك تحتوي على فراغات مثلا position camera على عكس اللغات الاخرى

سأبدأ بشرح طريقة عمل عملية ال IF else
الحالة الاولى(بدون Else):


IF heroHP < 1 then killhero()

If HeroHP < 1
Killhero()
Restartlevel()
Endif


الحالة الثانية (ELSE):


If MonsterHP < 1 then MonsterDie() else whatever()

If ccc = 5
ccc = ccc + 5
aaa = aaa + 4
else
nnn = 3
ddd = 0
endif

ادوات المقارنة الموجودة بالدارك بيسيك:
= , <> , < , <= , > , >= و كل منها يشرح نفسه
و بالنسبة لل and و الـ or:

if (a = 10 and b = 5) then cc = 5
if (k <>4 or c>9) then bbb =88
ملاحظة: يمكنك استخدام الاقواس و عدم استخدمها الامر يعود لك حيث لن يؤثر وجودها او عدم وجودها

اذا كان لديك خلفية جيدة بالبرمجة اعتقد انك ستكون قد فهمت موضوع ال IF
علما ان الاوامر التي استخدمتها بالمثال غير موجودة بالدارك بيسيك انما استخدمتها كمثال

الان الى احد اهم العمليات في برمجة الالعاب و هي عملية for next
و هنا سأقوم بشرحها كليا لانني اعتقد ان الكثير لا يعرفها او يعرف ما الفائدة منها

اولا الهيكل:



For [variable] = [InitialNumber] to [LastNumber]
dothis()
dothat()
dowhatever()
next [variable[


الان الى الشرح.... تمعن الهيكل اعلاه

ثم هاذا امثال:


For number = 1 to 5
Print number
Next number

ماللذي يحدث هنا؟
سيقوم الدارك بيسيك بتعيين متغيير جديد(مؤقت) بالذاكرة اسمه number و سيعطيه القيمة الاولية (1 في المثال)
ثم سيقوم بتشغيل التعليمات بين السطر الذي يبدأ بـ For و السطر الذي يبدأ بـ Next
الان سيضاف للمتغير (1في المثال) "1" و سيصبح 2
بعد ذلك سيعود و يشغل التعيمات داخل عملية For
الى ان يصل المتغير الى الرقم الاخير و الذذي هو 5 بالمثال

و في حالة المثال ستكون النتيجة:


1
2
3
4
5
جربها بنفسك:


For number = 1 to 5
Print number
Next number
Wait key
علما ان التعليمة الاخيرة تعني ان يتوقف الدارك بيسيك عن قراءة باقي الاسطر حتى يتم ضغط اي زر بالكيبورد
-----------------------------------------------------------------------------------------------------
الان سانتقل الى المصفوفات و سأشرح المصفوفة ذات البعد الواحد فقط لاني لم استخدم غيرها :D

المصفوفات هي متغيرات.....
لكن هذه المتغيرات تحتوي داخلها متغيرات فرعية اخرى ليس لها اسامي بل مرقمة نصاعديا
بداية من الصفر
لنتخيل المصفوفات كدفتر او كتاب صفحاته مرقمة من الصفر الى مئة
كل صفحة تحتوي على محتويات مختلفة

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

الان كيفية التعامل مع المصفوفات...
اولا المصفوفة يجب ان تكون معرفة لتعريف المصفوفة نستخدم DIM
Dim arrayname(topnumber) as type
حيث arrayname هو اسم المصفوفة اللذي تريده و topnumber هو عدد الصفوف التي تريدها داخل المصفوفة (عدد الاوراق في مثال الكتاب)

كيفية استخدامها؟
كما تستخدم المتغيرات تماما لكن باضافة بسيطة....
تذكر مثال الكتاب و الصفحات....

اولا علينا تكوين المصفوفة , اي صناعة الكتاب و سيكون فالرغ في البداية و لنسمي الكتاب TheBookOfNumbers و سيكون عدد صفحاته 50 و يحتوي على ارقام اي نوع المتغير Integer
Dim TheBookOfNumbers(50) as integer

لادخال قيمة 400 مثلا بالمصفوفة بالصف رقم 6 .... لكتابة قيمة في الصفحة رقم 6:
TheBookOfNumbers(6) = 400

الان اصبح لدينا في الصفحة 6 من هذا الكتاب رقم و هو 400
لنعود و نقرأ هذه الصفحة:
Number = TheBookOfNumbers(5)
الان المتغير Number سيحصل على النسخة من الرقم الموجود في تلك الصفحة من الكتاب وهي 400

و من هنا سأعطيكم مدى فائدة المصفوفات مع عملية ال for next
تمعنوا هذا المثال


For i = 1 to 50
If monsterExist(i)
If monsterHP(i) < 1 then killMonster(i)
Endif
Next i

ما هذا؟؟

لنفرض ان لعبتك تتحمل 50 وحش و كل وحش له رقم
هذه العملية ستقوم بمعاينة كل الوحوش من الوحش 1 حتى 50
اذا كان هذا الوحش موجود ستتحقق من طاقته اذا كانت تحت الواحد سيموت الوحش و يتوقف عن الحركة
صعبة؟ ......... اذا اهلا بك في عالم برمجة الالعاب الحقيقي :D
-----------------------------------------------------------------------

سأكتفي بهذا الحد من المعلومات حتا الان .... لقد تعبت :boggled:
و سأتابع في الدرس القاد و سيكون موضوعنا هو The Main Game Loop
اي دائرة اللعبة الرئيسية
و سنقوم بصناعة لعبة ثلاثية الابعاد :biggthump 100%

و اذكر بضرورة قرائة دروس الاخ GOGENDANTES من هنا (http://www.montada.com/showthread.php?t=456229)
و من ثم تصفح ملفات المساعدة في الدارك بيسيك خاصةً
قسمين:
Getting started و Principles

اذكر بشي وهو عدم نقل هذى الموضوع الا باذن مني و بوضع وصلة لهذه الصفحة
و سأضمن عدم حدوث ذلك

PrinceOfSorrow
12-09-2006, 06:50 PM
الله يعطيك ألف عافيه على مجهودك ^^
وتذكر لاتخاف أنا من مطبقين دروس حاليا مع العلم أني كنت من مطبقين دروس جوجانتس وطبقتها لكن أعتقد انها بتفيدني لما اكون مدرس رياضيات :أفكر:وتصفحت ملفات المساعده في دارك بسك حاليا ^^
اتمنى انك ماتتوقف مثل جوجانت ومتشف شف على درسك القادم :32:
(اخيرا راح ندخل في عالم 3d)

snake_x86
12-09-2006, 07:00 PM
الله يعطيك ألف عافيه على مجهودك ^^
وتذكر لاتخاف أنا من مطبقين دروس حاليا مع العلم أني كنت من مطبقين دروس جوجانتس وطبقتها لكن أعتقد انها بتفيدني لما اكون مدرس رياضيات :أفكر:وتصفحت ملفات المساعده في دارك بسك حاليا ^^
اتمنى انك ماتتوقف مثل جوجانت ومتشف شف على درسك القادم :32:
(اخيرا راح ندخل في عالم 3d)
الله يعافيك, و ولا يهمك انشاء الله ما بتوقف حتى انهي اشوف نتائج من الاعضاء :biggthump

d.a.m.h
12-09-2006, 08:35 PM
هذا الدرس افادنى فى البرمجة الحقيقة....خاصة For Next لأنى لم اكن اعرفها
شرحك رائع واتمنى ان تستمر.....انا متشوق للدرس القادم لأنه بداية البرمجة الحقيقية للالعاب

ZAIME
12-09-2006, 08:44 PM
السلام عليكم و رحمة الله و بركاته.أخي سنيك أشكرك كثيرا على هذا الدرس وحقيقة ما كنت أتوقع منك أن تضع الدرس الثاني بهذه السرعة فحقيقة أنك نشيط وأتمنى منك أن تكمل ما بدأته .مشكور.

vistala
12-09-2006, 08:54 PM
اريد رابط الدارك بييييييييييييييسك
ارجوكم

ZAIME
12-09-2006, 09:16 PM
أخي شوف هذا الموضوع وصلته كانت في صفحة الدرس الأول المقدم من سنيك.http://www.montada.com/showthread.php?t=488565

snake_x86
12-09-2006, 11:08 PM
هذا الدرس افادنى فى البرمجة الحقيقة....خاصة For Next لأنى لم اكن اعرفها
شرحك رائع واتمنى ان تستمر.....انا متشوق للدرس القادم لأنه بداية البرمجة الحقيقية للالعاب
الحمد لله ان الدرس اعجبك و و فعلا الـ For next هي احد الاساسيات في برمجة الالعاب
خاصة عند تطبيق الذكاء الاصتناعي على الاعداء او بشكل عام تطبيق كود معين على عدة مجسمات.


السلام عليكم و رحمة الله و بركاته.أخي سنيك أشكرك كثيرا على هذا الدرس وحقيقة ما كنت أتوقع منك أن تضع الدرس الثاني بهذه السرعة فحقيقة أنك نشيط وأتمنى منك أن تكمل ما بدأته .مشكور.
و عليكم السلام و رحمة الله و بركاته, العفو منك اخي zaime و انشاء الله رح اكمل الدروس


اريد رابط الدارك بييييييييييييييسك
ارجوكم
رابط البرنامج من دون cutwww (http://arabgn.com/files/hico/programs/DBP_1062.rar) شغال 100% من سيرفر الاخ تشالنجر

Son Of UAE
12-09-2006, 11:22 PM
ما شاء الله ... شرحك جميل ومتعوب عليه .. بالتوفيق .. وانا راح ابداء بالدارك بيسك بعد الانتها من الاشغال الحاليه ان شاء الله ....

من التراب
12-09-2006, 11:56 PM
درس حلو وانا أنتظر الدرس القادم :D .. حاس أننا بنبدأ في الجد في الجزء الثالث
عندي إستفسار ::

يمكن أن أكتب المصفوفه بهذه الطريقه ::



Array(2) as integer
Array(2)=(2,3,4)

أو المفروض اكتب ::



Array(0)=2
Array(1)=3
Array(2)=4


أنا ماعندي البرنامج ولا كنت بجرب .. :D

سؤال ثاني أقدر أتعامل مع الأوبجكتات في الدايرك بيسك ؟؟؟؟

ثانكس و بالتوفيق :bigok:

nash2
13-09-2006, 02:16 AM
شرح ممتاز ومنظم :biggthump , اشكرك على الدرس , ارجوا أن تستمر في ذلك .

snake_x86
13-09-2006, 01:07 PM
Son Of UAE == :biggthump
من التراب == الطريقة الثانية
Array(0)=2
Array(1)=3
Array(2)=4و سؤالك الثاني .. تقدر تتعامل مع الاوبجكتات طبعا بس بالدارك بيسيك الاوجكت فيه غير الجيم ميكر
تقدر تعتبر الاوبجكت مثل السبرايت في الجيم ميكر.... عبارة عن شكل

nash2 == العفو :biggthump

||صقر||
13-09-2006, 01:57 PM
شكرا أخى على الدروس .... للأسف لا استطيع الإستفاده من الدروس الآن لأنى مشغوول جدا ... أتمنى أنك تستمر فى وضع الدروس
بالتوفيق أخى

باز يطير
13-09-2006, 03:28 PM
السلام عليكم

ما شاء الله تبارك الله نشاط حلو منك اخوي الله يعطيك العافية

وبصراحة انت الي محرك المنتدى انت وتشالنجر

الله يعطيكم العافية

اخوي انا عندي سؤال انا حملت الدارك بيسك من الرابط الجديد الي وضعه تشالنجر

لاكن هل للبرنامج كراك او سيريال واذا له ممكن تعطيني هو وتقولي كيف اضعه في البرنامج

شكراً

snake_x86
14-09-2006, 03:52 PM
السلام عليكم

ما شاء الله تبارك الله نشاط حلو منك اخوي الله يعطيك العافية

وبصراحة انت الي محرك المنتدى انت وتشالنجر

الله يعطيكم العافية

اخوي انا عندي سؤال انا حملت الدارك بيسك من الرابط الجديد الي وضعه تشالنجر

لاكن هل للبرنامج كراك او سيريال واذا له ممكن تعطيني هو وتقولي كيف اضعه في البرنامج

شكراً


الكراك مرفق مع ملف تشالنجر :(
و هو في مجلد اسمه "Crack"
انسخ محتويات هذا الملف و الصقها في مجلد Compiler داخل مجلد الدارك بيسيك الرئيسي
C:\Program Files\Dark Basic Software\Dark Basic Professional\Compiler

باز يطير
14-09-2006, 08:01 PM
شكراً ليك اخوي سنيك

لاكن فيه سؤال بسيط

بعد مافكيت ضغط البرنامج

لقيت ملفين
setup

الأول اسمهdbpro_5_3_trial_low

والثاني اسمهDBProUpgrade62

اي ملف اثبت؟؟

شكراً

باز يطير
14-09-2006, 08:26 PM
خلاص عرفت الثاني لأيه

شكراً ليك

وننتظر دروسك الجاية

سامي.خ
14-09-2006, 08:30 PM
الأول حمل dbpro_5_3_trial_low
وبعدين الثاني
وحط الكراك في ملف البرنامج داخل مجلد Compiler

GOGENDANTESS
15-09-2006, 07:19 AM
منتظر الشرح الثالث بإذن الله :)

Son Of UAE
15-09-2006, 11:05 AM
تم تحميل الدارك بيسك و متابعة الدروس من حين إلى اخر :biggthump

تسلم ايدك يا زعيم

snake_x86
15-09-2006, 11:43 AM
منتظر الشرح الثالث بإذن الله :) جاري العمل عليه :biggthump;)


تم تحميل الدارك بيسك و متابعة الدروس من حين إلى اخر :biggthump

تسلم ايدك يا زعيم
:ee2: ياخي السالفة مب سالفة زعيم السالفة اني .... متفيج :D
كنت متفيج و اتعلمت الثري دي ماكس
كنت متفيج اتعلمت الدارك بيسيك (بشراهة)
كنت متفيج و سويت كهف الموت (صار عندي خبرة)
و الحين متفيج و اسوي دروس :D

Mr. Black Man
15-09-2006, 12:23 PM
شكراً أخي سنيك على الدرس ;)
إن شاء الله بحاول أطبق الدروس في أوقات فراغي :biggthump

GOGENDANTESS
16-09-2006, 06:22 AM
اخوي سنيك ، بإذن الله إذا خلصت دروسك اجمع دروسي القديمة مع دروسك و حطهم اب PDF

;)

موفق إنشاءالله

الموقوف
16-09-2006, 03:11 PM
ماشاء الله عليك أخوي سنيك :أفكر:

أنا حملت البرنامج اليوم وطبقت عليه بعض الدروس :silly:

باين انه لغة الدارك بيسك لغة سهلة :)

مشكور أخوي سنيك على الدروس ;)