[درس]الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
بسم الله الرحمن الرحيم
بسم الله ابدأ سلسلة دروس مقدمة مني لكم هدية و هي عبارة عن ما جاء في كتاب Beginner's guide to darkbasic game programming مترجمة من قبلي ، و انشاء الله نشوف منكم ألعاب في المستقبل،،،
مقدمة عن لغة الدارك بيسك...
لغة الدارك بسيك من اسمها ((الأساس المظلم)) ، قد يكون الإسم مرعب بعض الشيء :D و لكن مضمونها ليس كذلك ، فإنها هذي اللغة سهلة جدا ، و فوق كل ذلك بواسطة هذه اللغة تستطيع إنشاء عروض تقديمية مشيقة باستخدام الصور او الأجسام الثلاثية الأبعاد. تتعامل لغة الدارك بسيط مع مصطلحات إنلجيزية سهل جدا عكس اللغات الأخرى كالـ سي بلس بلس ، هذه شفرة برمجية بسيطة من لغة الـ ++C
كود:
#include <iostream.h>
int main () ; //
int main ()
{
cout <<"Hello Wolrd"!\n" ;
return 0;
}
هل رأيت كم هي معقدة ؟؟ هل رأيت كيف هذه اللغة تستخدم اختصارات قصيرة جدا و قليلة جدا ما تستخدم كلمات أجنبية بحروفها الكاملة
و الآن نلقي نظرة على سفرة برمجية من الدراك بيسك ;)
كود:
rem the variable "Answer" will be equal to 4
Answer = 2 + 2
print Answer
wait key
end
اعتقد لا داعي لشرح الفرق بين سهولة و متعة كتابة برامج في الدارك بسيك :D هل رأيتم كيف كانت الشفرة في غاية السهولة ؟؟
*متطلبات كتابة برامج باستخدام الدارس بيسك :
1- برنامج DarkBASIC PRO ، و تستطيع طلبه من هذه الوصلة :
http://www.amazon.com/exec/obidos/tg...=UTF8&v=glance
==============================================================
و الآن نأتي للدرس الأول ، الأمر REM و الأمر END
1-الأمر REM يمكنك كتابة أي تعليق في برنامجك او لعبتك دون عرضها أو إعطائها أي اهتمام من قبل المترجم ، و بعبارة أوضح ، هذه العبارة يتم تجاهلها و التعامل معها على أنها لا شيء ، مجرد تعليق من كاتب شفرة البرنامج . مثال :
كود:
REM this line won't do anything
REM this comment is ignored by DarkBASIC
، لكن إذا كانت لديك تعليقات كثيرة ؟؟ تحتاج إلى عشرط سطور ؟؟ بالتأكيد ستمل من كتابة الأمر REM بداية كل تعليق :( ، لا تخف هناك حل :biggthump ، الأمر يشبه سابقه لكن مع تعديل بسيط جدا و الامر اسمه
REMSTART و نهايته اسمه REMEND
و هذا مثال :
كود:
REMSTART
Program name : Montada.com
Programmer : GOGENDANTESS
Date : 3/2/2006
Description : Uses of REM command
REMEND
لما تكتب هذه الشفرة في برنامج DarkBASIC PRO و تظغط F5 لبناء البرنامج ، لن ترى شيئا قط ، كما قلت لك هذه السطور يتم تجاهلها
2- الأمر END ، تفهمه من اسم الأمر نفسه ((إنهاء)) حيث أن هذا الأمر ينهي البرنامج و لن تترجم أي شفرة بعده ، مثال :
كود:
REMSTART
This game is FPS one
REMEND
END
-------------------
الدرس المقبل : فهم المتغيرات
-------------------
الرجاء عدم الرد حتى نحافظ على ترتيب الموضوع :) فقط استفد :)
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
تسلم على الموضوع المفيد . وخاصه أنني
سأتعامل مع هذا البرنامج مستقبلا .
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
الدرس الثاني ، فهم المتغيرات Variables
المتغيرات هي عبارة عن أرقام متغيرة حسب وقوع فعل محدد ، مثلا ، إذا أردت صنع لعبة FPS ، ألا تحتاج إلى عداد يعد الطلقات المتبقية في بندقيتك كلما أطلقت ؟؟ أو دعنا نقول إنك تعمل على لعبة إستراتيجية ، إلا تحتاج عداد يعرض نقودك المتوفرة حيث تنقص و تزيد مع عمليات بيع و شراء المباني و الوحدات ؟؟ فالمتغيرات لا استغناء عنها. العمليات الحسابية تشمل العمل على الأعداد الصحيحة integer و الكسور العشرية decimal
علامات حساب المتغيرات معظمم يعرفها و هي :
+ و هي للجمع
- للطرح
* للضرب
/ للقسمة
الآن اكتب هذه الشفرة و اظغط F5 ثم سترى النتيجة
كود:
REMSTART
Programmer : GOGENDANTESS
Description : Understanding Variables
REMEND
REM the variable "Answer" will be equal to 4
Answer = 2 + 2
print Answer
REM the variable "Answer" will be equal to 3
Answer = 6 / 2
print Answer
REM the variable "Answer" will be equal to 7
Answer = 14 - 7
print Answer
REM the variable "Answer" will be equal to 10
Answer = 2 * 5
print Answer
wait key
END
و لكن ماذا عن أكثر من متغير في صيغة واحدة ؟؟ حقيقة لا اعرف جواب هذا السؤال :( ......... أمزح :D ، فمثلا نريد خساب السرعة و نعلم أن القانون هو :
السرعة = المسافة\الزمن
فهذا برنامج بسيط لحساب السرعة
كود:
REM speed
Distance = 50
Time = 10
speed = Distance/Speed
print "Distance is" ; Distance
print "Time is" ; Time
print "speed is" ; speed
wait key
end
ترتيب العمليات الحسابية
كثيرا ما تحتاج إلى إضافة أكثر من رقم واحد إلى المعادلة و اعداد اكثر من عملية واحدة في المعاملة مثال
2 * 3 + 5 ، الناتج بالطبع سيكون 11 و لكن هل هناك طريق ثانية لقراءة هذه المعادلة ؟؟ نعم بالطبع ، تستطيع ان تقرأها كذلك 5 + 3 * 2 و الناتج هو 16 ، إذا يا للأسف ستحصل أخطاء كثيرة في عملياتك الحسابية عند البرمجة :( اكتب هذا البرنامج و قل لي ما هو الناتج
ماذا :11: :196: لماذا الناتج 3 :afraid: ، هل لغة الدارك بسيط غبية إلى هذا الحد لعدم تمكنها من حساب عملية حسابية في غاية البساطة ؟؟
لا ، منطق لغة الدارك بسيك هو :
أن الدارك بسيك تنجز عمليات القسمة و الضرب اولا ثم تنجز عمليات الجمع و الطرح
أي أن العملية أنجزت بهذه الصورة :
2 / 2 = 1 ، 1 + 2 = 3
و لكن هل يمكن كسر منطق الدارك بسيك بقليل من التعديل ؟؟ أكيد يمكن بتقويس الأرقام ، فالعمليات المقوسة تحظى بالهتمام أولا ثم باقي العمليات التي تتبعها ، لنكتب نفس العملية السابقة لكن مره غير مقوسة (و لقد جربناها) و مره مع اقواس
كود:
REM Order of Mathmatical Operations
Answer = 2 + 2 / 2
print "2 + 2 / 2 =" ; Answer
Answer = (2 + 2) / 2
print "(2 + 2) / 2=" ; Answer
wait key
end
سيكون ناتج العملية الأولى هو 3 لأنه تم التعامل مع القسمة اولا (تماشيا مع منطق الدارك بسيك للحساب) و اما الثاني فانكسر المنطق و تم التعامل مع العملية المقوسة اولا
و بذلك نستطيع تلخيص ترتيب العمليات كالتالي
أ- العمليات المقوسة هي التي تنجز أولا
ب- عمليتي القسمة و الضرب تنجزان ثانيا
ج- عمليتي الجمع و الطرح تنجزا أخيرا
---------------------------
الدرس الثاني، المتغيرات الدولية و المحلية
---------------------------
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
مشكور على الدرس و بارك الله فيك . ان شاء الله تفيد هذي الدروس الاعضاء.
هل تريد برمجة لعبة على الدارك بيسك ؟ :33:
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
مشكور على الدروس إن شاء الله أرجعلها لما أحب أتعلم البرنامج
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
اقتباس:
المشاركة الأصلية كتبت بواسطة Son Of UAE
مشكور على الدرس و بارك الله فيك . ان شاء الله تفيد هذي الدروس الاعضاء.
هل تريد برمجة لعبة على الدارك بيسك ؟ :33:
فريق KWTgames الآ، يشتغل على لعبة OutCast بواسطة DarkBASIC و FPScreator :)........
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
ياليت تعرضلي صور ومقتطفات من اللعبه : screenshot
^_^
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
اللغة شكلها سهل جدا مقارنة بالسى+ + التى اتعلمها فى الوقت الحالى
و عموما احاول ان اتعلم ال Dark Basic لكن بعد الانتهاء
من السى+ + حتى لا يحدث تشتت. :afraid:
اشكرك على هذا الموضوع المفيد و على اسلوب شرحك الرائع و ياريت تستكمل الشرح
حتى تكون سلسلة من البداية و حتى الاحتراف..... :biggthump
و بالنسبة ايضا لالعابك ياريت فعلا ان ترينا صور منها فهذا يعطينا دافع
للتعلم :D :D
تحياتى اليك.............و السلام عليكم و رحمة الله و بركاته:ciao:
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
الدرس الثالث، المتغيرات الدولية و المحلية
المتغيرات الدولية هي متغيرات يمكن الوصول إليها في أي مكان من البرنامج ، و المتغيرات الدولية معلنة في قمة مصدر الشفرة و الأمر هو DIM
المتغيرات المحلية فهي قصة ثانية ، إنهم فقط مرئيين (أو متوفرين) في الروتين الثاني الحالي في المكان الذي يجدون فيه ، و لفهمها أكثر ، يمكن تمثيل المتغير الدولي و المحلي بجهاز الكمبيوتر الخاص بك. لديك كل المعلومات عليه مثل بريدك الإلكتروني و صورك و أعمالك و مواعيدك ، تستطيع الوصول إلى هذه المعلومات عندما تكون في البيت و جهاز الكمبيوترك الخاص بك مشغل. أو افترض انك تشارك ملفات في جهازك عبر الإنترنت مستخدما مثل File Transfer Protocol أو Web server ، الملفات الموجودة في الـ FTP قد تكون ظاهرة للجميع لكن باقي المعلومات التي لم تشاركها في الـ FTP فبالطبع لن تظهر :)
المتغير عامة يخزن قيمة واحدة في وقت، بعض الأوقات قيمة واحدة لا تكفي ، على سبيل المثال ربما تريد حفظ مسار عشر اجابات مختلفة بدلا من واحدة ، الأمر DIM يقول للدارك بيسك أن يصنع مصفوفة Array
المصفوفة: هي مساحة من الذاكرة محجوزة لقائمة متعاقبة من قيم البيانات المتشابعة.
إذا يمكنك استخدام قيم مزدوجة للمتغير ، يمكنك الرجوع للمتغير عن طريق رقم او متغير آخر
هذي شفرة توضيحية
كود:
DIM Answer(3)
Answer(1) = 100
Answer(2) = 103
NextOne = 3
Answer(NextOne) = 200
print "Answer 1=" ; Answer(1)
print "Answer 2=" ; Answer(2)
print "Answer 3=" ; Answer(3)
DIM TwoD(2,2)
TwoD(2,1) = 1
TwoD(2,2) = 2
print "TwoD 2 1 =" ; TwoD(2,1)
print "TwoD 2 2 =" ; TwoD(2,2)
wait key
end
المصفوفات يمكن ان تأخذ أكثر من بعد واحد ، و أفضل طريقة لتمثيل المصفوفة هو تخيل صف من المربعات ، و يمكنك تعريف كل مربع على انفراد و يمكن لكل مصفوفة ان تخزن اكثر من خمس ابعاد (و هذا اكثر بكثير مما تحتاج)
-------------------------
الدرس القادم، فهم أنواع البينات
-------------------------
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
سينزل trailer للعبة OutCast قبل نزول اللعبة بقليل :)
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
GOGENDANTESS
إحنا بإنتظار لعبتكم الجاية
،، بالنسبة للدرس الثالث ما فهمته عدل ممكن توضح أكثر
و لاحظت أن عندك أخطاء في الكتابة العربية ياليت تتجنبها
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
الدرس الرابع، فهم أنواع البيانات
هناك ثلاث أنواع للبيانات في لغة الدارك بسيك و هم :
Integer ، الرمز : لا شيء
Real ، الرمز : #
String ، الرمز : $
ماهي أنواع البيانات ؟
كما قلت هناك ثلاث أنواع للبيانات في لغة الدارك بسيك عكس اللغات الأخر التي تحتوي على أكثر مثل
++C
Delphi
Visual Basic
لغة الدارك بسيك مصممة خصيصا لبرمجة الألعاب و الجرافيكس ، و هناك شرح لأنواع البيانات المتقدمة في DarkBASIC PRO في الفصول القادمة
هناك ثلاث أنواع أساسية لأنواع البيانات و هي الأعداد الصحيحة و الكسور العشرية و الصفوف و كل نوع يستخدم في طريقة خاصة. على سبيل المثال متغيرات الكسور العشرية ( التي تحفظ نقطة ممتلئة او اعداد حقيقية ) يجب أن تعرف بعلامة باوند (او هاش) # و التي تكتب بعد المتغير
مثال :
1-الأعداد الصحيحة Integers :
يمكن أن نقول ان الأعداد الصحيحة هي أرقام و ليست كسور
5.5 ليس عدد صحيح لأن فيه جزء كسري ، و لكن الرقم 5 بحد ذاته عدد صحيح ، المتغيرات التالية تمثل اعداد صحيحة
كود:
A = 1
montada = 5
counter = 0
man = -102
و لا تنسو أن الصفر هو عدد صحيح ، و الأعداد الصحيحة يمكن ان تكون موجبة او سالبة، و لجعل المتغير سالب اكتب قبله علامة السالب - قبل القيمة ، مثلا :
5-
و هذا برنامج يمثل الأعداد الصحيحة :
كود:
REM Integer Example
value1 = 55
value2 = -3
print "value1 =" ; value1
print "value2 =" ; value2
wait key
end
2- الكسور العشرية :
الكسور العشرية تحزن كسور و أيضا تسمى "عدد حقيقي" (مجموعة الأعداد الحقيقية ح) و لتعريف متغير كسري ، نضيف علامة باوند # بعد اسم المتغير ، المتغيرات الآتية هي اعداد حقيقية :
كود:
REM Decimal Example
PI# = 3.14159
xpos# = 5.332
ypos# = -1.334
zpos# = 2.234
wait key
end
الأعداد الحقيقية يمكن ان تكون موجبة او سالبة تماما مثل الاعداد الصحيحة ، و هذا برنامج اخر للكسور العشرية :
كود:
REM Decimal Example2
value3# = 44.34
value4# = -13.44
print "value3 =" ; value3#
print "value4 =" ; value4#
wait key
end
3- الصفوف :
الصف هو صف من الأحرف و ليست كرقم ، هذا يعني يمكنك أن تخزن أي أحرف في صف بما فيه الأرقام ، المتغيرات التالية هي صفوف :
كود:
REM Strings
MyName$ = "Hussain Hani"
MySpaceShip$ = "UNSS Tadpole"
FirstFiveLetters$ = "ABCDE"
LastFiveLetters$ = "VWXYZ"
wait key
end
و يمكن للصف أن يكون فارغا و يسمى "صف فارغ" ، و لصنع صف فارغ يجب كتابة علامة القتباس مرتين و بدون أي شيء بينهما كالتالي : " "
و هذا هو برنامج توضيحي :
كود:
REM Strings
String1$ = "Hellow, this string is generated in DarkBASIC"
string2$ = " "
print String1$
print String2$
wait key
end
4-تحويل أنواع البيانات :
بعض المرات تحتاج إلى تحويل متغير من نوع إلى آخر ، و لغة الدارك بسيك توفر هذه الخاصية باستخدام الأمر
$STR
هذا الأمر سيحول أي نوع متغير (غالبا عدد صحيح و كسر عشري) إلى صف ، و هذا يفيد عدنما تريد عرض متغير على الشاشة لأن هناك بعض أوامر العرض تشتغل فقط مع الصفوف
و هذا برنامج توضيحي
كود:
REM Converting Data Types
MyAge = 100
MyAgeString$ = "This is my age"+str$(MyAge)
print MyAgeString$
wait key
end
و أخيرا نأتي للأمر Val و هو عكس الأمر $STR ، إذا هو يحول الصف إلى رقم لاستخدامه في حساب او صياغته
و هذا برنامج توضيحي :
كود:
REM Converting Data Types
MyAge$ = "100"
MyAge = val(MyAge$)
print MyAge
wait key
end
و هكذا ننهي الدرس الرابع
ملاحظة : لا ترسل لي رسالة على الخاص لأجاوبك ، فقط استفد و اذا كان لديك سؤال اكتبه و احفظه عندك حتى انتهي من سلسلة الدروس ثم اجاوب على اسألتطم جميعا بإذن الله :)
---------------
الدارس القادم، العمل مع العمليات الأساسية
---------------
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
يا اخوان شجعوني حتى اكتب الدرس الخامس :D
مشاركة: الكامل في لغة الـ DarkBASIC ((تعلم اقوى لغات برمجة الألعاب و أحدثها هنا ))
لا تخاف . الشباب موجودين لكن الردود قليلة لاسباب مختافة ..
و انا شخصياُ اقول لك مشكور على الدرس الجديد في برنامج كنا نسمع اسمه بس :D
الدروس الموجودة تبقى هنا إلى الابد لكي يستفاد منها بالمستقبل .. :أفكر:
جمع الدروس و ضعها في كتاب إلكتروني و ستفيد الألوف ان شاء الله :biggthump