منتديات اليسير للمكتبات وتقنية المعلومات » منتديات اليسير العامة » منتدى الــكــمــبــيــو نـــ NET ــت » شرح مفصل لبرمجة ال direct x وتصميم الالعاب باستخدام الفيجوال بيسك 6

منتدى الــكــمــبــيــو نـــ NET ــت هذا المنتدى مُخصص للبرمجيات والأجهزة والإنترنت.

 
أدوات الموضوع تقييم الموضوع انواع عرض الموضوع
 
قديم Apr-09-2008, 11:53 AM   المشاركة1
المعلومات

بنت النيل
مكتبي فعّال

بنت النيل غير متواجد حالياً
البيانات
 
العضوية: 36516
تاريخ التسجيل: Nov 2007
الدولة: مصـــر
المشاركات: 188
بمعدل : 0.03 يومياً


ممتاز شرح مفصل لبرمجة ال direct x وتصميم الالعاب باستخدام الفيجوال بيسك 6

دايركت اكس

دايركت إكس :
من منا لا يعرف دايركت إكس ؟؟؟ من منا لا يملك على جهازه دايركت إكس ؟؟؟ على الرغم من أن كلنا تقريبا نمتلك دايركت إكس على جهازنا ... وأننا نحرص على امتلاك أحدث اصداراتها إلا أننا - أو معظمنا - لا نعرف ما هي دايركت إكس ... وذلك أننا بدون البرمجة لا نحتاج لأن نعرف ما هي دايركت إكس مادامت تشغل لنا الألعاب وبرامج MultiMedia فلا حاجة بنا لأن نعرف ما هي دايركت إكس ...
ولكن مادمنا اتخذنا برمجة الألعاب دربا لنا فنحن لا مفر لنا من تعلم دايركت إكس ... ودايركت إكس هي مجموعة من (التعريفات والثوابت والمتغيرات والدوال والوظائف والتركيبات والعناصر) التي تجتمع جميعا مكونة ما يسمى (مكتبة) ... وهذه المكتبة وظيفتها استقبال أوامرنا التي نكتبها على هيئة كود وتحويلها إلى صورة رسومية تظهر لنا ... وليس هذا كل شيء فهي كذلك تقوم بالتحكم بذاكرة كارت الفيديو Video Card Memory وتتحكم في ظهور البرامج الأخرى ... وهي من صفاتها المهمة .. فاللعبة التي تعمل الآن بدايركت إكس لا يمكن أن يعمل برنامج آخر ويظهر بجوارها ... بل تظل عي فقط الظاهرة على الشاشة ...
الآن نحن نعرف الكثير عن دايركت إكس 7 وبقى أن نعرف كيف نستخدمها في البرمجة ...
ولتعريف مكتبات دايركت إكس إلى برنامجك نفتح Project > References ستظهر لنا قائمة نختار منها DirectX7 Type Library for VisualBasic 6.0 ... وبدون تعريف هذه المكتبات لا نستطيع التعامل مع دايركت إكس ...
لنعرف أن كائن دايركت إكس ذاته لن نستخدمه في الكود إلا لتعريف الكائنات الأخرى فقط ... ولن نستخدمه في الكود إلاعلى مستوى صغير ... ولذا فأول ما سنتعلمه هنا هو كيف نعلن عن كائن دايركت إكس جديد



وذلك يكون كالتالي
كود:
Sub CreatDxObject()Dim Dx As DirectX7Set Dx = New DirectX7End Sub
وذلك لأن كائن دايركت إكس كالكثير من الكائنات المقبلة لا يكفي مجرد الإعلان عنه فقط ولكن ينبغي استخدام التعريفة New لنخبر البرنامج بأننا سنصنع كائنا جديدا لنستخدمه في برنامجنا... هذا كل استخدامنا للكائن دايركت إكس في الوقت الحالي وحان وقت البدء في دروس كائن دايركت درو ... وهو كائن (كما يقول اسمه) كائن مختص بالرسوميات .

كائن Direct Input


يستخدم كائن دايركت انبت في معرفة حالة أحد أجهزة الإدخال ... مثل الكيبورد أو الماوس ... وكما كنا نستخدم KeyDown أو KeyPress بالنسبة للكيبورد فسنستخدم Direct Input كما استخدمناهما ... بل قد نجده أكثر سهولة :
وكائن دايركت إنبت كغيره من كائنات دايركت إكس يحتاج للتعريف و الإنشاء ...
يستخدم كائن دايركت إنبت كائنين أو عنصرين في آداؤه وهما:
DirectInputDevice: وهو الكائن الموكل بتعريف نوع جهاز الإدخال من ماوس أو كيبورد..
DiKeyBoardState: وهو كائن يتعرف على الزر المضغوط الآن وهو من اسمه نعرف أنه يعمل من الكيبورد ...

تعال الآن نعلن عن الكائنات السابقة :


كود:
im Dx As DirectX7Dim Di As DirectInputDim Didev As DirectInputDeviceDim DiKey As DIKEYBOARDSTATE
والآن سنقوم بتعريف الكائنات السابقة لنستطيع التعامل مع الكيبورد :


Set Dx = New DirectX7
Set Di = Dx.DirectInputCreate()
Set Didev = Di.CreateDevice("guid_syskeyboard")
Didev.SetCommonDataFormat DIFORMAT_KEYBOARD
Didev.SetCooperativeLevel Me.hWnd, _ DISCL_NONEXCLUSIVE Or DISCL_BACKGROUND
Didev.Acquire


الفأرة

للتعامل مع الماوس هناك أربعة أشياء يجب معرفتها ...
1- موقع المؤشر على المحور X
2- موقع المؤشر على المحور Y
3- موقع المؤشر على المحور Z
4- معرفة الزر المضغوط هل هو الأيمرن أم الأيسر ...
وكل ذلك يتيحه لك دايركت إنبت بسهولة ورفق ... تعال نبدأ فورا في تعريف وانشاء الكائنات الرئيسية :
كود:
:'التعريفDim Dx As DirectX7Dim Di As DirectInputDim Didev As DirectInputDeviceDim DiMouse As DIMOUSESTATEPrivate Sub Form_Load()'الإنشاءSet Dx = New DirectX7Set Di = Dx.DirectInputCreate()Set Didev = Di.CreateDevice("guid_sysMouse")Didev.SetCommonDat aFormat DIFORMAT_MOUSEDidev.SetCooperativeLevel Me.hWnd, DISCL_NONEXCLUSIVE Or DISCL_BACKGROUNDDidev.AcquireMe.Show'الحلقة التكراريةDoDoEventsGetMouseStateLoopEnd Sub Sub GetMouseState()'معرفة حالة الماوسDidev.GetDeviceStateMouse DiMouseIf DiMouse.buttons(0) Then _Me.Caption = " Left Button"If DiMouse.buttons(1) Then _Me.Caption = " Right Button"End Sub



لوحة المفاتيح

في هذا الفصل سنتعلم كيف نستخدم كائن دايركت انبت مع KeyBoard ... وفي هذا سنستخدم كائنين وهما :
Didev و DiKey ...
سنقوم الآن بعمل مثالا كالتالي :
1- عند الضغط على الزر الأيمن تتحرك الفورمة جهة اليمين..
2- عند الضغط على الزر الأيسر تتحرك الفورمة جهة اليسار..
3- عند الضغط على الزر الأعلى تتحرك الفورمة لأعلى..
4- عند الضغط على الزر الأسفل تتحرك الفورمة لأسفل..
5- عند الضغط على زر Ctrl اللأيسر تتم زيادة قيمة Height للفورمة..
6- عند الضغط على زر Ctrl الأيمن يتم تقليل قيمة Height للفورمة..
7- عند الضغط على Escape ينتهي البرنامج ...







أولا في الإجراء علينا انشاء مقطع برمجي Sub يقوم بالتعامل مع أزرار الكيبورد ... وهذا المقطع يكون شكله كالتالي :
كود:
Sub GetKeyState()Didev.GetDeviceStateKeyboard DiKey'التعامل مع حالات الأزرارIf DiKey.Key(DIK_ESCAPE) Then EndIf DiKey.Key(DIK_LEFT) Then Me.Left = Me.Left - 20If DiKey.Key(DIK_RIGHT) Then Me.Left = Me.Left + 20If DiKey.Key(DIK_UP) Then Me.Top = Me.Top - 20If DiKey.Key(DIK_DOWN) Then Me.Top = Me.Top + 20If DiKey.Key(DIK_LCONTROL) Then Me.Height = Me.Height + 1If DiKey.Key(DIK_RCONTROL) Then Me.Height = Me.Height - 1End Sub

ثم نذهب للإجراء Form_Load ونكتب في التالي
Private Sub Form_Load()
Set Dx = New DirectX7
Set Di = Dx.DirectInputCreate()
Set Didev = Di.CreateDevice("guid_syskeyboard")
Didev.SetCommonDataFormat DIFORMAT_KEYBOARD
Didev.SetCooperativeLevel Me.hWnd, DISCL_NONEXCLUSIVE Or DISCL_BACKGROUND
Didev.Acquire
Me.Show
Do
DoEvents
GetKeyState
Loop
End Sub



ولم يبق سور معرفة أسماء الأزرار بصيغة Dik_KeyName .. و هي في هذا الجدول :
كود:
: Note Constant DIK_ESCAPE On main keyboard DIK_1 On main keyboard DIK_2 On main keyboard DIK_3 On main keyboard DIK_4 On main keyboard DIK_5 On main keyboard DIK_6 On main keyboard DIK_7 On main keyboard DIK_8 On main keyboard DIK_9 On main keyboard DIK_0 On main keyboard DIK_MINUS On main keyboard DIK_EQUALS BACKSPACE DIK_BACK DIK_TAB DIK_Q DIK_W DIK_E DIK_R DIK_T DIK_Y DIK_U DIK_I DIK_O DIK_P [ DIK_LBRACKET ] DIK_RBRACKET ENTER on main keyboard DIK_RETURN Left CTRL DIK_LCONTROL DIK_A DIK_S DIK_D DIK_F DIK_G DIK_H DIK_J DIK_K DIK_L DIK_SEMICOLON DIK_APOSTROPHE Grave accent (`) DIK_GRAVE Left SHIFT DIK_LSHIFT DIK_BACKSLASH DIK_Z DIK_X DIK_C DIK_V DIK_B DIK_N DIK_M DIK_COMMA On main keyboard DIK_PERIOD Forward slash (/)on main keyboard DIK_SLASH Right SHIFT DIK_RSHIFT Asterisk on numeric keypad DIK_MULTIPLY Left ALT DIK_LMENU Spacebar DIK_SPACE CAPS LOCK DIK_CAPITAL DIK_F1 DIK_F2 DIK_F3 DIK_F4 DIK_F5 DIK_F6 DIK_F7 DIK_F8 DIK_F9 DIK_F10 DIK_NUMLOCK SCROLL LOCK DIK_SCROLL DIK_NUMPAD7 DIK_NUMPAD8 DIK_NUMPAD9 Hyphen (minus sign) on numeric keypad DIK_SUBTRACT DIK_NUMPAD4 DIK_NUMPAD5 DIK_NUMPAD6 Plus sign on numeric keypad DIK_ADD DIK_NUMPAD1 DIK_NUMPAD2 DIK_NUMPAD3 DIK_NUMPAD0 Period (decimal point) on numeric keypad DIK_DECIMAL DIK_F11 DIK_F12 DIK_F13 DIK_F14 DIK_F15On Japanese keyboard DIK_KANAOn Japanese keyboard DIK_CONVERTOn Japanese keyboard DIK_NOCONVERTOn Japanese keyboard DIK_YENOn numeric keypad (NEC PC98) DIK_NUMPADEQUALSOn Japanese keyboard DIK_CIRCUMFLEXOn Japanese keyboard DIK_ATOn Japanese keyboard DIK_COLONOn Japanese keyboard DIK_UNDERLINEOn Japanese keyboard DIK_KANJIOn Japanese keyboard DIK_STOPOn Japanese keyboard DIK_AXOn Japanese keyboard DIK_UNLABELED DIK_NUMPADENTER Right CTRL key DIK_RCONTROL Comma on NEC PC98 numeric keypad DIK_NUMPADCOMMAForward slash (/)on numeric keypad DIK_DIVIDE DIK_SYSRQ Right ALT DIK_RMENU DIK_HOME Up arrow DIK_UP PAGE UP DIK_PRIOR Left arrow DIK_LEFT Right arrow DIK_RIGHT DIK_END Down arrow DIK_DOWN PAGE DOWN DIK_NEXT DIK_INSERT DIK_DELETE Left Windows key DIK_LWIN Right Windows key DIK_RWIN Application key DIK_APPS DIK_PAUSE
ما هو دايركت درو


ما هو دايركت درو


دايركت درو هو ما يتحكم في كل ما تراه أمامك على الشاشة ... من اضاءة وألوان ورسومات ...الخ
ومن المعروف أنك يمكنك أن تتحكم في كل ماسبق ذكره بدون دايركت درو وباستخدام بعض دوال Api ... ولكن دايركت درو يسهل هذه العملية كثيرا ... ويجعل دوال Api مجموعة من السطور الطويلة غير المفهومة المملة ... ولذا وجب التحويل لدايركت درو ...
دايركت درو عبارة عن مجموعة من الدوال التي تدخل مباشرة على برامج التحكم في أجهزة العرض ... محولات العرض Display Hardware مع دعم كامل للتعامل مع واجهات الرسوميات Graphic device Interface أو GDI..
دايركت درو هو الواجهة المثالية لبرمجة برامج الـ Graphics ولبرمجة الألعاب ... وهو يدعم التحكم في طريقة وعمق العرض ... كذلك في مساحة النافذة هل هي Full-Screen-Mode أم Windowed-Mode ...
دايركت درو يقوم بتجريد طبقة جهاز العرض HAL لتتمكن من التعامل بدعم كامل من جهاز العرض .
دايركت درو يسمح لك ببرمجة تطبيقات ثلاثية الأبعاد..












التوقيع
لو علمت الشعوب عظمة الرحمن لكان شهيقها الذكر وزفيرها قراءة القرآن
لا إله إلا أنت سبحانك إني كنت من الظالمين
سبحان الله وبحمده ، سبحان الله العظيم

كل من الفائزين والخاسرين يسقطون على الارض ولكن.... الخاسرين فقط هم الذين يفقدون القدرة على النهـــــــوض.....
  رد مع اقتباس
 

مواقع النشر (المفضلة)


الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1)
 

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
قائمة كتب حديثه التكنولوجي النشط عروض الكتب والإصدارات المتخصصة في مجال المكتبات والمعلومات 37 Dec-31-2016 06:00 PM


الساعة الآن 05:31 PM.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. جميع الحقوق محفوظة لـ : منتديات اليسير للمكتبات وتقنية المعلومات
المشاركات والردود تُعبر فقط عن رأي كتّابها
توثيق المعلومة ونسبتها إلى مصدرها أمر ضروري لحفظ حقوق الآخرين