Unconfigured Ad Widget

تقليص

إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

Party 2 ـ( Programming Techniques )ـ

تقليص
X
 
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • Party 2 ـ( Programming Techniques )ـ

    بسم الله الرحمن الرحيم

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

    وتقنيات البرمجة تنقسم الى جزئين

    1- اساليب تسمية المتغيرات والفئات والاصناف
    2- اساليب البرمجة كائنية التوجه

    ان هذا الموضوع هو من اهم المواضيع التي ترشدك الي كيفية تناقل المعلومات وفهم الكودات فهي في النهاية طريقك الى مجموعات العمل ـ( Work groups )ـ وكيفية انشاء فريق برمجة متفاهم ومتالفين

    ولنبدا بالقسم الاول : -

    ان موضوع تسمية تسمية المتغيرات والدوال والاصناف .... من اهم المواضيع بالنسبة للغات البرمجة كائنية التوجه كـ( C++ & Java Language ) ولكنها اقل اهمية في اللغات التي تدعم كائنية التوجه بامكانيات اقل كالفجوال بيسك فان التسمية تكون اقل اهمية ولكنها متممة لعملية التخاطر بين المبرمجي
    فلذلك تعالوا لنتفق على طريقة التسمية وفق بعض الطرق والاساليب التقليدية المتبعة

    تسمية المتغير:
    لتسمية المتغير المتكون من كلمة واحدة فاننا نجعل جميع حروف المتغير صغيرة
    مثلا

    كود:
    Private energy as byte

    حيث ان المتغير اعلاه قد يرمز لطاقة لاعب مثلا وبما انه ياخذ قيمة من 0 - 100 فان النوع بايت كافي لاحتواء قيمة هذا المتغير

    اما المتغير المتكون من جزئين او اكثر فان تسميته ستكون بدمج الجزئين مع بعضهم من غير فراغات وكتابة الناتج باحرف صغيرة وجعل الحرف الاول من الجزء الثاني والاول لما بعده من الاجزاء حرفا كبيرا
    مثلا


    كود:
    Private gameSpeed as byte
    كود:
    [RIGHT]Private rifleReloadTime as single[/RIGHT]

    كود:
    [RIGHT]bln -> Boolean
    i -> Integer
    s -> String
    f -> Flote ـ( Single in Visual Basic )ـ
    كما ان المبرمجين يقومون باضافة حروف بادئة للمتغيرات في بعض الاحيان لكي يتعرفوا على نوعها وكما يلي
    [/RIGHT]
    كود:
    
    

    وغيرها فلتعريف متغير سرعة اللعبة الذي ذكرته قبل قليل فاننا نعرفه كما يلي

    كود:
    Private bGameSpeed as byte

    اما بالنسبة لتسمية الثوابت فاننا نستخدم الحروف الكبيرة وللثابت المكون من عدد من الكلمات فاننا نفصل الكلمات باستخدام الرمز _

    وبالمناسبة هناك انماط اخرى غير هذه الانماط للتسمية

    وبالنسبة لتسمية الدوال والفئات واصناف فانها تسمى بنفس الطريقة ولكن الفرق يكمن في الاحرف البادئة وكما يلي

    mod -> Module
    cls -> Class
    typ -> Type
    enm -> Emun

    أما الدوال فإنها تسمى بنفس الطريقة التي تسمى بها المتغيرات

    ملاحظة : ممكن ان تتغير هذه المصطلحات من مبرمج الى اخر وذلك تبعا للغة والمبرمج فمثلا الفئات Classes يرمز لها المبرمجين بالحرف c في لغة السي بلس بلس
    والغرض من هذا ليس الالتزام بنمط معين ولكن الاتفاق على نمط معين وذلك لتصبح البرامج التي ساشرحها مفهومة للكل
    العزة لله ولرسوله وللمؤمنين

    بسم الله الرحمن الرحيم

    (( يا ايها الذين امنوا ان تنصروا الله ينصركم ويثبت اقدامكم {7} والذين كفروا فتعسا لهم واضل اعمالهم {8} ذلك بانهم كرهوا ما انزل الله فاحبط اعمالهم {9} افلم يسيروا في الارض فينظروا كيف كان عاقبة الذين من قبلهم دمر الله عليهم وللكافرين امثالها {10} ذلك بان الله مولى الذين امنوا وان الكافرين لا مولى لهم {11}))

    سورة محمد ( صلى الله عليه وسلم )


    Simply I'm not designer,I'm just programmer


    X-Team::X-Mind


    اخوكم محمد العاني

  • #2
    والآن وبعد أن أخذنا نبذة مختصرة عن المتغيرات تعالوا نتعرف على اساليب البرمجة كائنية التوجه والان قوموا بتفحص الفئة التالية


    كود:
    
    
    [clsPoint]
    
    
    
    Option Explicit
    
    
    
    Public iX As Integer
    
    Public iY As Integer
    
    
    
    Public Function setPosition(iXPosition As Integer, iYPosition As Integer)
    
    iX = iXPosition
    
    iY = iYPosition
    
    End Function


    حيث ستجدون ان الفئة clsPoint تمثل احداثيات نقطة ولها الخصائص هي X,Y وطرق هي setPosition



    والان لاحظ الاستخدام التالي للفئة

    كود:
    Dim myPoint As New clsPoint
    
    Dim X, y As Integer
    
    myPoint.setPosition 100, 100
    
    
    
    ' later
    
    
    
    X = myPoint.iX
    
    X = X + 100
    
    myPoint.iX = X
    لاحظ ان عملية تغيير موقع الاحداثيات عملية خارجية خارج كائن النقطة كما ان الكائن لا يملك اي سيطرة على الاحداثيات التي يسندها المستخدم للفئة فلو اسندنا قيمة للنقطة خارج الشاشة فان الفئة مضطرة لتقبلها ولا تملك أي صلاحية لتغييرها وهذا يعتبر من اسوا البرمجة الكائنية حيث انه لا يستغل الاساليب الخاصة بالبرمجة الكائنية التي تفرض ان كل كائن قائم بذاته فعلى النقطة مثلا ان تنتقل بنفسها لا ان ننقل نحن الاحداثيات لها والان تعال لنضيف الدالة التالية لتصبح الفئة كما يلي



    كود:
    
    
    '[clsPoint]
    
    
    
    Option Explicit
    
    
    
    Public iX As Integer
    
    Public iY As Integer
    
    
    
    Public Function setPosition(iXPosition As Integer, iYPosition As Integer)
    
    iX = iXPosition
    
    iY = iYPosition
    
    End Function
    
    
    
    Public Function transpose(iXDelta As Integer, iYDelta As Integer)
    
    iX = iX + iXDelta
    
    iX = iX + iYDelta
    
    End Function


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

    كود:
    
    '[clsPoint]
    
    
    
    Option Explicit
    
    
    
    Private iX As Integer
    
    Private iY As Integer
    
    Public Function setPosition(iXPosition As Integer, iYPosition As Integer)
    
    iX = iXPosition
    
    iX = iYPosition
    
    End Function
    
    Public Property Get x() As Integer
    
    x = iX
    
    End Property
    
    
    
    Public Property Let x(ByVal iNewValue As Integer)
    
    iX = iNewValue
    
    End Property
    
    Public Property Get y() As Integer
    
    y = iY
    
    End Property
    
    
    
    Public Property Let y(ByVal iNewValue As Integer)
    
    iY = iNewValue
    
    End Property
    
    
    
    Public Function transpose(iXDelta As Integer, iYDelta As Integer)
    
    iX = iX + iXDelta
    
    iX = iX + iYDelta
    
    End Function

    حيث ستلاحظ اننا قمنا اولا بتغليف الخاصيتين iX و iY للكائن وجعلهما مخفيان باستخدام التعريف Private وعرفنا عوضا عنهما خاصيتان هما x و y اللتان يمكن لمستخدم الكائن الوصول من خلالهما إلى الخاصيتين iX و iY والان انت تسال ما فائدة عملية كبسلة ( تغليف ) هاتين الخاصيتين للكائن ولكي تعرف الغرض تعال لنرى بناء الخاصية x حيث ستجد انها تتكون من جزئين الاول Public Property Get ويستدعى هذا الجزء عندما يطلب المستخدم قيمة x حيث يتم اخذ قيمة x من الخاصية iX للكائن وذلك من خلال الجملة ـ( x = iX )ـ اما الجزء الثاني فهو Public Property Let x فانه يستدعى عندما يتم اسناد قيمة للخاصية x حيث سترسل القيمة في المتغير iNewValue والذي بعدها سيتم تحديث قيمة الخاصية iX بقيمته والان لمنع المستخدم من ادخال احداثيات خارج نطاق الشاشة ذات الابعاد 800 * 600 قم بتعديل كود ليكون كما يلي


    كود:
    
    
    '[clsPoint]
    
    
    
    Option Explicit
    
    
    
    Private iX As Integer
    
    Private iY As Integer
    
    Public Function setPosition(iXPosition As Integer, iYPosition As Integer)
    
    iX = iXPosition
    
    iX = iYPosition
    
    End Function
    
    Public Property Get X() As Integer
    
    X = iX
    
    End Property
    
    
    
    Public Property Let X(ByVal iNewValue As Integer)
    
    If iNewValue < 0 Then
    
    iX = 0
    
    ElseIf iNewValue > 800 Then
    
    iX = 800
    
    Else
    
    iX = iNewValue
    
    End If
    
    End Property
    
    Public Property Get y() As Integer
    
    y = iY
    
    End Property
    
    
    
    Public Property Let y(ByVal iNewValue As Integer)
    
    If iNewValue < 0 Then
    
    iY = 0
    
    ElseIf iNewValue > 600 Then
    
    iY = 600
    
    Else
    
    iY = iNewValue
    
    End If
    
    End Property
    
    
    
    Public Function transpose(iXDelta As Integer, iYDelta As Integer)
    
    iX = iX + iXDelta
    
    iX = iX + iYDelta
    
    End Function

    والان يمكن ان ترى بان اسناد قيم للخاصية X و Y سيكون مشروط بالقيمة المطلوب اسنادها فلو كانت القيمة اصغر من الصفر للمتغير iNewValue في الجزء Public Property Let X فانه سيسند قيمة صفر للمتغير iX واذا كانت القيمة الرسلة اكبر من 800 فانه سيسند القيمة 800 لـ iX والا فانه سيسند القيمة المرسلة كما هي



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



    اما نصيحتي ولو اني في بداية الطريق لكل من احب ان يكون مبرمج العاب ناجح ان يقراء الكتابين



    C++ Primer

    و كتاب

    Code Complete


    اخيرا اتمنى من جميع مبرمجي الالعاب سواء المبرمجين بالفجوال بيسك او بالسي بلس بلس ان يضعوا اسماءهم وامكانياتهم البرمجية ومستواهم ونبذة بسيطة عن ما يعرفون بالدايركت اكس



    لكي نعمل رابطة او تجمع للمبرمجين فقط لغرض تطوير قدراتهم ليكونوا الى جانب اخوانهم في اقسام التصميم
    العزة لله ولرسوله وللمؤمنين

    بسم الله الرحمن الرحيم

    (( يا ايها الذين امنوا ان تنصروا الله ينصركم ويثبت اقدامكم {7} والذين كفروا فتعسا لهم واضل اعمالهم {8} ذلك بانهم كرهوا ما انزل الله فاحبط اعمالهم {9} افلم يسيروا في الارض فينظروا كيف كان عاقبة الذين من قبلهم دمر الله عليهم وللكافرين امثالها {10} ذلك بان الله مولى الذين امنوا وان الكافرين لا مولى لهم {11}))

    سورة محمد ( صلى الله عليه وسلم )


    Simply I'm not designer,I'm just programmer


    X-Team::X-Mind


    اخوكم محمد العاني

    تعليق


    • #3
      اخيرا اتمنى من جميع مبرمجي الالعاب سواء المبرمجين بالفجوال بيسك او بالسي بلس بلس ان يضعوا اسماءهم وامكانياتهم البرمجية ومستواهم ونبذة بسيطة عن ما يعرفون بالدايركت اكس

      لكي نعمل رابطة او تجمع للمبرمجين فقط لغرض تطوير قدراتهم ليكونوا الى جانب اخوانهم في اقسام التصميم
      ايه هو مفيش مبرمجين هنا
      العزة لله ولرسوله وللمؤمنين

      بسم الله الرحمن الرحيم

      (( يا ايها الذين امنوا ان تنصروا الله ينصركم ويثبت اقدامكم {7} والذين كفروا فتعسا لهم واضل اعمالهم {8} ذلك بانهم كرهوا ما انزل الله فاحبط اعمالهم {9} افلم يسيروا في الارض فينظروا كيف كان عاقبة الذين من قبلهم دمر الله عليهم وللكافرين امثالها {10} ذلك بان الله مولى الذين امنوا وان الكافرين لا مولى لهم {11}))

      سورة محمد ( صلى الله عليه وسلم )


      Simply I'm not designer,I'm just programmer


      X-Team::X-Mind


      اخوكم محمد العاني

      تعليق


      • #4
        معلومات قيمة ...
        طيب .. أنا كنت ألاحظ إنوا في بعض الكلمات كانت كلها بالكابيتل لتر .. يعني مثلاً
        Dim TESTNOTGOOD as integer .. فما دلالة ذلك ؟

        وبعدين بالنسبة للمبرمجين ^^"

        فأتوقع أغلب الشباب ميالة للبرامج الجاهزة ...

        تعليق


        • #5
          السلام عليكم و الرحمة الله و بركاته
          شكرا جزيلا علي هالدروس الحلوة كتير كتير

          هو الصراحة ما أعتقد إنو هنا في مبرمجين كتير
          أنا عندي خبرة بسيطة بالبرمجة أعرف لغة بي إتش بي و لغة سي و أعرف القليل عن سي بلس بلس
          وقفت معي عند الكلاسس ... و عمالي بحاول معاها و عندي إستعداد للتعلم
          و قرأت عن الدايركت إكس بس الصراحة ما جربت أبرمج فيه ... يمكن يكون عليك صعب إني أنضم معاك ... بس لو حبيت أنا مستعد أنضم
          my view point is
          VIRTOOLS & 3Ds MAX
          the best in Game Development industy
          ::....................................................::
          ZAHi AL-RAYYES
          Palestinian and proud of that

          تعليق


          • #6
            اخي اسامة شكرا على مرورك واتمنى ان تنصحني في خطوتي التالية فكما ترى فان المنتدى لا يحوي على مبرمجين ( وهم قلب اللعبة ) فما علي العمل

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

            طيب هل احول على برنامجك المفضل الفرتولز ( على فكرة انا مشيت بنصيحتك واطلعت على البرنامج بس لسى مش عارف ابدا منين فيه - وللاسف لم استطيع تنزيل دروسك لان في مشكلة في الروابط ) ام ان في المنتدى امكانية لفتح قسم خاص بالبرمجة ( برمجة الالعاب ) كما وضحت في المقال المنتدى محتاج يتورنش و يتصنفر علشان نستمر بالبرمجة ونكون فريق برمجة العاب

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

            بسم الله الرحمن الرحيم

            (( يا ايها الذين امنوا ان تنصروا الله ينصركم ويثبت اقدامكم {7} والذين كفروا فتعسا لهم واضل اعمالهم {8} ذلك بانهم كرهوا ما انزل الله فاحبط اعمالهم {9} افلم يسيروا في الارض فينظروا كيف كان عاقبة الذين من قبلهم دمر الله عليهم وللكافرين امثالها {10} ذلك بان الله مولى الذين امنوا وان الكافرين لا مولى لهم {11}))

            سورة محمد ( صلى الله عليه وسلم )


            Simply I'm not designer,I'm just programmer


            X-Team::X-Mind


            اخوكم محمد العاني

            تعليق


            • #7
              أنا أطالب بمنتدي برمجة الألعاب
              حتكسبوا فينا خير و خصوصا أنا لأني حأتعلم من الأخ X-mind
              my view point is
              VIRTOOLS & 3Ds MAX
              the best in Game Development industy
              ::....................................................::
              ZAHi AL-RAYYES
              Palestinian and proud of that

              تعليق

              يعمل...
              X