• 0
  • مالي خلق
  • أتهاوش
  • متضايق
  • مريض
  • مستانس
  • مستغرب
  • مشتط
  • أسولف
  • مغرم
  • معصب
  • منحرج
  • آكل
  • ابكي
  • ارقص
  • اصلي
  • استهبل
  • اضحك
  • اضحك  2
  • تعجبني
  • بضبطلك
  • رايق
  • زعلان
  • عبقري
  • نايم
  • طبيعي
  • كشخة
  • النتائج 1 إلى 3 من 3

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

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

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

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

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

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

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

      ملاحظة : يجدر بك فهم جميع المواضيع السابقة من 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
      التسجيل
      04-11-2001
      الدولة
      U.A.E
      المشاركات
      4,196
      المواضيع
      67
      شكر / اعجاب مشاركة
      شكراً لك على هذا الدرس الأكثر من رائع

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

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

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

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

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