منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : مساعدة ف بعض اكواد الحركة والتصادم
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2 3
وياريت حضرتك تقولى ازاى اوسع الفراغات اللى هيمشى فيها حرف ال b
مع طبعا تقليل المساحة السوداء لان لما بوسع اللون البرتقالى باجى امشى فية وكانى موسعتوش
VB_Coder
منتظر ردك يا اخى
السلام عليكم

- هذه اللعبه بعد إضافة حواجز متحركه . وإذا أردت تكبير مساحة المسار . فلابد أن تغير قيم نقاط التقاطع لكل أداة بكتشر .

- تحياتي .
الف شكر لحضرتك ولمجهودك الجميل
وانا ف كود عاوز حضرتك تساعدنى فية علشان يكمل انا حاولت ف الاخر اعمل شرط لو مثلا Player لمس ال Shape يرجع تانى لنقطة بدايتة بس بيقولى ف حاجة غلط ف نقطة البداية
إقتباس :Dim t, b, l, r

Private Sub Timer1_Timer()
t = Shape1.Top
b = Shape1.Top + Shape1.Height
l = Shape1.Left
r = Shape1.Left + Shape1.Width
If (Player.Top >= Shape1 And Player.Top <= b And Player.Left >= l And Player.Left <= r) Then
Player.Top = 600
Player.Left = 250
End If
End Sub

المفروض ان دى نقطة بداية الصورة
Player.Top = 600
Player.Left = 250

لكن بيحصل اخطاء وبيحدد الخطا ف Player.Left = 250

ارجو المساعدة
شكرا
السلام عليكم

- هذا الكود بعد تعديله . بحث إذا لامس الـ Player أي جهة من جهات الShape يتم إرجاع الـ Player إلى نقطة البداية :
كود :
Private Sub Timer1_Timer()

Dim t, b, l, r As Integer
Dim t2, b2, l2, r2 As Integer

t = Shape1.Top
b = Shape1.Top + Shape1.Height
l = Shape1.Left
r = Shape1.Left + Shape1.Width

t2 = Player.Top
b2 = Player.Top + Player.Height
l2 = Player.Left
r2 = Player.Left + Player.Width

If (t2 >= t And t2 <= b) And (l2 >= l And l2 <= r) Then
   Player.Top = 600
   Player.Left = 250
ElseIf (b2 >= t And b2 <= b) And (r2 >= l And r2 <= r) Then
   Player.Top = 600
   Player.Left = 250
End If

End Sub

- تحياتي .
كدة بقت تمام اوى وكود التصادم والرجوع لنقطة البداية بقى اسهل من نقط التقاطع
طيب حضرتك انا دلوقت بحاول اسهل ع نفسى الاكواد وبردة اكون فاهمها
يعنى انا عملت كود لحركة الصورة بين نقطتين محددتين
الكود
إقتباس :Private Sub Timer1_Timer()
If Picture1.Top <= 360 Then
Picture1.Top = 2160
Else
Picture1.Top = Picture1.Top - 50
End If
End Sub

لما انا جربت الكود دا لقيت الصورة بتروح لل top المطلوب وبترجع لنقطة بدايتها علطول مش بعمل حركة عكسية وبتكرر نفسها عادى يعنى
لكن انا عاوز مثلا اعدل ع الكود لو ينفع انى مثلا اعملها زى ما حضرتك عملت الحركة ف Vb_Game3
الصورة تتحرك وتعكس حركتها وترجع بس بنفس طريقة الاكواد لو امكن
شكرا
السلام عليكم

كود :
Private Sub Timer1_Timer()

Static Direction  As String

If Direction = "" Then Direction = "Down"

If Picture1.Top <= 360 Then
   Direction = "Down"
ElseIf Picture1.Top + Picture1.Height >= 3060 Then
   Direction = "Up"
End If

If Direction = "Down" Then
   Picture1.Top = Picture1.Top + 50
ElseIf Direction = "Up" Then
   Picture1.Top = Picture1.Top - 50
End If

End Sub
- تحياتي .
إقتباس :If Direction = "" Then Direction = "Down"

ممكن حضرتك توضح الكود دا
السلام عليكم

- المتغير النصي Direction خاص بإتجاه الحركة إما للأسفل او للأعلى حيث تكون قيمتة إما Down أسفل أو Up اعلى . حيث أننا عرفنا هذا المتغير على أنه من النوع الذي يحتفظ بقيمته ولا يفقدها Static لأنك لو عرفته بالطريقة العادية Dim فسيفقد قيمته في كل مره يشتغل فيها التايمر لذلك نحن نريده أن يحتفظ بقيمته حتى تظل الصورة تتحرك في نفس الإتجاه إلى أن يتم تغير قيمة المتغير للعكس عند ملامسه النقطة الاخرى . و الجزء من الكود الذي حددته في ردك الاخير هو لوضع قيمة في المتغيرDirection حيث أنه عند تشغيل البرنامج تكون قيمته فارغه ولن تتحرك الصورة لذلك وضعت الجزء هذا حيث يتم تنفيذه مره واحده فقط .
استاذى ومعلمى الفاضل Smile
بشكرا جدا جدا
عندى استفسار بعيدا عن البرنامج اللى بعملة
مش لما انا مثلا يكون 10 بيكتشر بوكس وسمتهم كلهم باسم p1
مش المفروض يتعمل مصفوفة واللى يطبق ع واحدة منهم يطبق ع الكل ؟
لية لما اعمل كدة واجى مثلا اطبق كود من اللى حضرتك عاملهم اجى اكتب p1.top ميبقاش موجود بيبقى موجود 4 خيارات بس
items
lboud
ubound والاختيار الاخير مش فاكرة
وبالطريقة دى مقدرش انفذ وانجز ف الاكواد بتاعتى
اية المشكلة هنا بالظبط
السلام عليكم
الصفحات : 1 2 3