النتائج 1 إلى 3 من 3

الموضوع: الدرس العاشر : عمل لعبة إسكواش

  1. #1
    التسجيل
    28-10-2002
    الدولة
    (السعودية)
    المشاركات
    1,042

    الدرس العاشر : عمل لعبة إسكواش

    الدرس العاشر : عمل لعبة إسكواش

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

    السلام عليكم ورحمة الله وبركاته

    هذا هو التمرين الأول وهو أول تطبيق عملي منذ بداية دروسنا ...

    ملاحظة : يجدر بك فهم جميع المواضيع السابقة من 1 إلى 9 قبل قرائة هذه الأكواد لأنها فقط من باب المراجعة

    أولاً : افتح التطبيق (10 - 1) لكي نقرأ الأكواد معاً ... إن لم تمتلك الكود هذا يعني أنك لم تحدث النسخة الأخيرة من ملف الدروس VBT .. إذهب إلى موقعي وحمل الملف من الصفحة الرئيسية لدروس برمجة الألعاب

    --- هل فتحت الملف إذن فلنبدأ :

    كما ترى لقد إستخدمت الدرس Direct Input في التعامل مع الكيبورد

    سنقرأ الكود سطراً سطراً

    كود:
    Dim SpeedX As Integer, SpeedY As Integer
    متغيرين الأول سرعة الإحداثي السيني للكرة والثاني سرعة الإحداثي الصادي للكرة

    كود:
    Private Sub Form_Load()
    Call Game_Init
      If DI_Init = False Then
        MsgBox "خطاء في التعرف على لوحة المفاتيح", vbExclamation
      End
      End If
    End Sub
    إستدعينا الدالة Game_Init
    وإيظاً جهزنا Direct Input

    كود:
    Private Sub Game_Init()
    SpeedY = 100
    SpeedX = 100
    Form1.Width = 10000
    Form1.Height = 8000
    Form1.BackColor = RGB(50, 100, 50)
    Form1.Caption = "لعبة اكواش"
    Call Picture_Maker(Picture1, 0, 2600, 1500, 300, 50, 100, 50)
    Call Picture_Maker(Picture2, 9630, 2600, 1500, 300, 50, 100, 50)
    Call Picture_Maker(Picture3, Form1.ScaleWidth \ 2, Form1.ScaleHeight \ 2, 500, 500, 50, 100, 50)
    MsgBox "إبدا اللعبة", vbOKOnly, "Start Game"
    End Sub
    في البداية جعلنا السرعة على الإحداثين س و ص تساوي 100
    غيرنا خصائص النافذة
    إستدعينا الدالة Picture_Maker ثلاث مراة في المرة الأولى لـ اللاعب الأول وفي المرة الثانية للكمبيوتر وفي المرة الثالثة للكرة

    كود:
    Private Sub Picture_Maker(nO As Object, nX As Long, nY As Long, nH As Long, nW As Long, R As Integer, G As Integer, B As Integer)
    nO.Left = nX
    nO.Top = nY
    nO.Height = nH
    nO.Width = nW
    nO.BackColor = RGB(R, G, B)
    End Sub
    وضيفة هذه الدالة هي وضع مكان الصورة وعرضها وطولها وأيظاً لونها

    كود:
    Private Sub Timer1_Timer()
    diDEV.GetDeviceStateKeyboard di_KeyBoard
    If di_KeyBoard.Key(DIK_ESCAPE) Then End
    If di_KeyBoard.Key(DIK_UP) Then Picture1.Top = Picture1.Top - 100
    If di_KeyBoard.Key(DIK_DOWN) Then Picture1.Top = Picture1.Top + 100
    Call Ball_Move
    End Sub
    حدثنا المدخلات
    عند النقر على Escape نخرج
    عند النقر على أعلى وأسفل يرتفع وينخفض اللاعب الأول على التوالي
    إستدعينا الدالة Ball_Move

    كود:
    Private Sub Ball_Move()
    If (Picture3.Left < Picture1.Left + Picture1.Width) And (Picture3.Top + Picture3.Height > Picture1.Top) And (Picture3.Top < Picture1.Top + Picture1.Height) Then SpeedX = -SpeedX
    If (Picture3.Left + Picture3.Width > Picture2.Left) And (Picture3.Top + Picture3.Height > Picture2.Top) And (Picture3.Top < Picture2.Top + Picture2.Height) Then SpeedX = -SpeedX
    
    If Picture3.Top < 0 Then SpeedY = -SpeedY
    If Picture3.Top + Picture3.Height + 300 > Form1.Height Then SpeedY = -SpeedY
    
    If SpeedX < 0 Then SpeedX = SpeedX - 1
    If SpeedX > 0 Then SpeedX = SpeedX + 1
    If SpeedY < 0 Then SpeedY = SpeedY - 1
    If SpeedY > 0 Then SpeedY = SpeedY + 1
    
    Picture3.Top = Picture3.Top + SpeedY
    Picture3.Left = Picture3.Left - SpeedX
    
    Picture2.Top = Picture3.Top - (Picture2.Height / 2)
    
    If Picture3.Left < 0 Then
         MsgBox "انتهت اللعبة لقد خسرت", vbInformation, "Game Over"
         Dim A As Byte
         A = MsgBox("هل تريد إعادة اللعبة", vbOKCancel, "إعادة اللعبة")
            Select Case A
                  Case 1
                     Call Game_Init
                  Case 2
                     Set dx = Nothing
                     End
            End Select
    End If
    End Sub
    هذه هي الدالة الأخيرة والمهمة ...نبدأ :
    أول سطر يكشف التصادم مع اللاعب الأول
    ثاني سطر يكشف التصادم مع الكمبيوتر
    ثالث سطر يكشف التصادم مع الجدار العلوي للفورم
    رابع سطر يكشف التصادم مع الجدار السفلي للفورم
    الأربعة أسطر تزيد السرعة بإزدياد الزمن
    السطرين لتحريك الكرة
    السطر الحادي عشر يجعل الكمبيوتر يتحرك مع الكرة - أبسط ذكاء إصطناعي
    السطر الثاني عشر يكشف هل إنهزمت أم لا في حالة هزيمتك وعدم رغبتك في إكمال اللعبة نجعل Dx = Nothing لتحرير الذاكرة

    تحياتي
    كود:
    Arabian Xtreme Designs : http://axdteam.com

  2. #2
    شكراً لك على هذا الدرس الأكثر من رائع

  3. #3
    التسجيل
    28-10-2002
    الدولة
    (السعودية)
    المشاركات
    1,042
    السلام عليكم...

    العفو ياخي ما فيه احد يشجعنا بالقدر اللي انت تفعله ولا الربع بعد ... لذا انا الذي اشكرك وليس انت

    تحياتي
    كود:
    Arabian Xtreme Designs : http://axdteam.com

ضوابط المشاركة

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