الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مبرمج كتكوت... محتاج مساعده

مغلق
بدأه The-Leader في 12 مارس 2007 · 10 رد · 1,206 مشاهدة · في قسم برمجة الألعاب و الرسوميات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

مراااحب أخوااني (h) ... هاي أول مشاركه حقي في هالمنتدى ... طبعا لا يغركم الاسم ... تراني يحليلي قدامكم ... يعني اعتبروني أخووكم لصغير ... او حتى ولدكم... مابطول عليكم علشان ماتملوني بالمره .. عموما أخواني ( طااال عمركم ) معاي طلب بسيط بالنسبه لكم لكن عن جد صعب بالنسبه حقي وهو برمجة لعبه..

شنو هاي اللعبه؟؟

طال عمركم هاي اللعبه هي عبااره عن دوائر او مربعات تتساقط من فووق وانته كلاعب ماعليك الا تقنصهم بواسطة كيس يتحرك بشكل افقي تقدر تخزن في هالكيس ثلاث دوائر كحد أقصى , طبعا هالكيس يتحرك في وسط الشاشة تقريبا ومن فوق يسقطن الدوائر وتحت هالكيس براميل تحط فيهم الدوائر , نسيت اقول ان هالدوائر ينزلن بالوان مختلفه يعني تقريبا اربعة اللوان ومعااك اربعة برااميل على لون الدوائر في كل برميل تحط لون محدد.. وسلامتكم :rolleyes:

مطلوبه علي في خلال شهر .. شووووه الحل؟؟؟ :s

بللللييييز اللي يقدر يخدمني لا يبخل على ؟؟

:)

#2

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

تآمر انت, الملف كملت من,ه وهو جاهز, لكن عند عملية الـ Upload احصل على رسالة خطأ, الظاهر العله من الاكسبلورر. توقع ردي غدا باذن الله.

على فكره! أي لغه تستخدم؟

تم تعديل هذه المشاركة بواسطة High volt في 13 مارس 2007 في 14:56

#3

تسلم الغالي ويزاااك الله ألف خير :) .. بس عاااد السموووحه تعبناااك ويانا ... أما بالنسبه حق اللغة اللي أستخدمه بدون تحديد B) اللي يريحك سوا كانت الجافا أو الفيجول بيسك أو أو ...

مره ثاانيه شكرا على المساااعده ومردووووده بإذن الله

ومنكم نستفيد B)

بس ماقول الا ماااا شاء الله عليك شوه سريع... سلااااام

أنتظر ردك ... وشكرا :rolleyes:

#4

still waiting ...... :rolleyes:

#5

لالالا :blink: مافي تعب ولا شيئ.

آسف لتاخري, لكن لا فائده, لا فرار من الفورمات.

على العموم, خذ هذا الكود (تصبيره :) :

التطبيق بالفيجوال بيسك 6, بدون استخدام DX or OpenGL وبدون صور خارجيه.

قم بانشاء فورم, وLabel وقم بتسميته lblCn , قم بانشاء تايمر واجعل الinterval = 10

الآن الصق الكود كما هو :


Option Explicit

Private Const Yellow As Long = 65535
Private Const Orange As Long = 8421631
Private Const Blue As Long = 16711680
Private Const Green As Long = 65280
Private Const White As Long = 16777215


Private Enum CirColors
Y = 1
O = 2
B = 3
G = 4
End Enum


Private Type LeaderCircles
X As Integer
Y As Single
R As Integer
C As CirColors
yAcc As Single

End Type

Dim CurrentCargo As Long

Dim Circles(5) As LeaderCircles

Dim I As Integer

Dim X As Integer, CurrentColor As Long


Private Sub Update(I As Integer)


Circles(I).X = Rnd * 800: If Circles(I).X < 100 Then Circles(I).X = 100
Circles(I).Y = 0
Circles(I).R = Rnd * 25: If Circles(I).R < 20 Then Circles(I).R = 10
Circles(I).C = Rnd * 4
Circles(I).yAcc = Rnd * 0.05: If Circles(I).yAcc < 0.01 Then Circles(I).yAcc = 0.01

Select Case Circles(I).C
Case 1
Circles(I).C = Yellow
Case 2
Circles(I).C = Orange
Case 3
Circles(I).C = Blue
Case 4
Circles(I).C = Green
End Select

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyRight Then
X = X + 15
ElseIf KeyCode = vbKeyLeft Then
X = X - 15
End If
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then End
End Sub

Private Sub Form_Load()

Show

Init

Do

DoEvents

lblCn.Left = X - 15
lblCn.Top = 465

RenderCirecles
RenderBoxes 549

RenderBox 450
Loop

End Sub

Private Sub Init()
For I = 0 To UBound(Circles)
Update I
Next I

X = 300

CurrentColor = White
lblCn.ForeColor = White

Me.BorderStyle = 0
Me.WindowState = 2
Me.BackColor = &H80000007
End Sub

Private Sub RenderBox(Y As Integer)
Me.Line (X - 25, Y)-(X + 25, Y), CurrentColor
Me.Line (X + 25, Y)-(X + 25, Y + 50), CurrentColor
Me.Line (X + 25, Y + 50)-(X - 25, Y + 50), CurrentColor
Me.Line (X - 25, Y + 50)-(X - 25, Y), CurrentColor
End Sub

Private Sub RenderBoxes(Y As Integer)

Dim X1 As Integer, X2 As Integer, X3 As Integer, X4 As Integer
X1 = 50
X2 = 300
X3 = 550
X4 = 749

Me.Line (X1 - 50, Y)-(X1 + 50, Y), Yellow
Me.Line (X1 + 50, Y)-(X1 + 50, Y + 50), Yellow
Me.Line (X1 + 50, Y + 50)-(X1 - 50, Y + 50), Yellow
Me.Line (X1 - 50, Y + 50)-(X1 - 50, Y), Yellow



Me.Line (X2 - 50, Y)-(X2 + 50, Y), 8421631
Me.Line (X2 + 50, Y)-(X2 + 50, Y + 50), 8421631
Me.Line (X2 + 50, Y + 50)-(X2 - 50, Y + 50), 8421631
Me.Line (X2 - 50, Y + 50)-(X2 - 50, Y), 8421631

Me.Line (X3 - 50, Y)-(X3 + 50, Y), Blue
Me.Line (X3 + 50, Y)-(X3 + 50, Y + 50), Blue
Me.Line (X3 + 50, Y + 50)-(X3 - 50, Y + 50), Blue
Me.Line (X3 - 50, Y + 50)-(X3 - 50, Y), Blue


Me.Line (X4 - 50, Y)-(X4 + 50, Y), Green
Me.Line (X4 + 50, Y)-(X4 + 50, Y + 50), Green
Me.Line (X4 + 50, Y + 50)-(X4 - 50, Y + 50), Green
Me.Line (X4 - 50, Y + 50)-(X4 - 50, Y), Green


End Sub


Private Sub RenderCirecles()
For I = 0 To UBound(Circles)

Circles(I).Y = Circles(I).Y + Circles(I).yAcc

If Circles(I).Y > 600 Then
Update I
End If

Collision I

Me.Circle (Circles(I).X, Circles(I).Y), Circles(I).R, Circles(I).C

Next I
End Sub

Private Sub Collision(I As Integer)
If Circles(I).X > (X - 25) And Circles(I).X < (X + 25) And Circles(I).Y > 450 And Circles(I).Y < Y + 500 Then
If (lblCn.ForeColor = White) Or (Circles(I).C = CurrentColor) Then
If CurrentCargo < 3 Then

CurrentCargo = CurrentCargo + 1
lblCn.Caption = lblCn.Caption + 1


lblCn.ForeColor = Circles(I).C
CurrentColor = Circles(I).C

Update I
End If
End If
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
End
End Sub

Private Sub Timer1_Timer()
Cls
End Sub

فقط يتبقى موضوع تفريغ الكيس في الصناديق,نسيته البارحه. وهو سهل جدا جدا جدا, ولكني اكتب وانا جاهز للخروج للدوام (4 - 1:30). يعني على بكره باذن الله, اكون مصلح الجهاز وراسل التطبيق كامل

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

تم تعديل هذه المشاركة بواسطة High volt في 14 مارس 2007 في 16:13

#6

السلام عليكم

للأسف, حتى بعد الفورمات, عند الضغط على تعقيب, احصل على رساله تخبر بضرورة اغلاق الصفحه!!!!

على العموم, انس ما قراته من الكود السابق, فيه خطأ قاتل :)

الحين وحده وحده:

1 - قم بانشاء فورم وغير الـ Border style إلى none.

2 - قم بانشاء Label وقم بتسميته / lblCn فقط, ولا تغير شيئ آخر.

3 - قم بانشاء تايمر بدون تغيير شيئ فيه.

الآن افتح صفحة الكود وامسح أي كلمه فيه وانسخ الكود الآتي :


Option Explicit

Private Const Yellow As Long = 65535
Private Const Orange As Long = 8421631
Private Const Blue As Long = 16711680
Private Const Green As Long = 65280
Private Const White As Long = 16777215


Private Enum CirColors
Y = 0
o = 1
b = 2
g = 3
End Enum


Private Type LeaderCircles
X As Integer
Y As Single
R As Integer
C As CirColors
yAcc As Single

End Type

Dim CurrentCargo As Long

Dim Circles(5) As LeaderCircles

Dim I As Integer

Dim X As Integer, CurrentColor As Long


Private Sub Update(I As Integer)


Circles(I).X = Rnd * 800: If Circles(I).X < 100 Then Circles(I).X = 100
Circles(I).Y = 0
Circles(I).R = Rnd * 25: If Circles(I).R < 20 Then Circles(I).R = 10
Circles(I).C = Rnd * 4
Circles(I).yAcc = Rnd * 0.05: If Circles(I).yAcc < 0.01 Then Circles(I).yAcc = 0.01

Select Case Circles(I).C
Case Y
Circles(I).C = Yellow
Case o
Circles(I).C = Orange
Case b
Circles(I).C = Blue
Case g
Circles(I).C = Green
End Select

End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyRight Then
X = X + 15
ElseIf KeyCode = vbKeyLeft Then
X = X - 15
End If
End Sub

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then End
End Sub

Private Sub Form_Load()

Show

Init

Do

DoEvents

lblCn.Left = X - 15
lblCn.Top = 465

RenderCirecles
RenderBoxes 549

RenderBox 450
Loop

End Sub

Private Sub Init()
For I = 0 To UBound(Circles)
Update I
Next I

X = 300

CurrentColor = White
lblCn.ForeColor = White

Me.ScaleMode = 3
Me.BorderStyle = 0
Me.WindowState = 2
Me.BackColor = &H80000007

Timer1.Interval = 10

lblCn.Caption = "0"
lblCn.ForeColor = White
lblCn.BackColor = 0
lblCn.Font.Size = 12
lblCn.FontBold = True
lblCn.FontItalic = True
lblCn.AutoSize = True
lblCn.BackStyle = 1

End Sub

Private Sub RenderBox(Y As Integer)
Me.Line (X - 25, Y)-(X + 25, Y), CurrentColor
Me.Line (X + 25, Y)-(X + 25, Y + 50), CurrentColor
Me.Line (X + 25, Y + 50)-(X - 25, Y + 50), CurrentColor
Me.Line (X - 25, Y + 50)-(X - 25, Y), CurrentColor
End Sub

Private Sub RenderBoxes(Y As Integer)

Dim X1 As Integer, X2 As Integer, X3 As Integer, X4 As Integer
X1 = 50
X2 = 300
X3 = 550
X4 = 749

Me.Line (X1 - 50, Y)-(X1 + 50, Y), Yellow
Me.Line (X1 + 50, Y)-(X1 + 50, Y + 50), Yellow
Me.Line (X1 + 50, Y + 50)-(X1 - 50, Y + 50), Yellow
Me.Line (X1 - 50, Y + 50)-(X1 - 50, Y), Yellow



Me.Line (X2 - 50, Y)-(X2 + 50, Y), 8421631
Me.Line (X2 + 50, Y)-(X2 + 50, Y + 50), 8421631
Me.Line (X2 + 50, Y + 50)-(X2 - 50, Y + 50), 8421631
Me.Line (X2 - 50, Y + 50)-(X2 - 50, Y), 8421631

Me.Line (X3 - 50, Y)-(X3 + 50, Y), Blue
Me.Line (X3 + 50, Y)-(X3 + 50, Y + 50), Blue
Me.Line (X3 + 50, Y + 50)-(X3 - 50, Y + 50), Blue
Me.Line (X3 - 50, Y + 50)-(X3 - 50, Y), Blue


Me.Line (X4 - 50, Y)-(X4 + 50, Y), Green
Me.Line (X4 + 50, Y)-(X4 + 50, Y + 50), Green
Me.Line (X4 + 50, Y + 50)-(X4 - 50, Y + 50), Green
Me.Line (X4 - 50, Y + 50)-(X4 - 50, Y), Green


End Sub


Private Sub RenderCirecles()
For I = 0 To UBound(Circles)

Circles(I).Y = Circles(I).Y + Circles(I).yAcc

If Circles(I).Y > 600 Then
Update I
End If

Collision I

Me.Circle (Circles(I).X, Circles(I).Y), Circles(I).R, Circles(I).C

Next I
End Sub

Private Sub Collision(I As Integer)
If Circles(I).X > (X - 25) And Circles(I).X < (X + 25) And Circles(I).Y > 450 And Circles(I).Y < Y + 500 Then
If (lblCn.ForeColor = White) Or (Circles(I).C = CurrentColor) Then
If CurrentCargo < 3 Then

CurrentCargo = CurrentCargo + 1
lblCn.Caption = lblCn.Caption + 1


lblCn.ForeColor = Circles(I).C
CurrentColor = Circles(I).C

Update I
End If
End If
End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
End
End Sub

Private Sub Timer1_Timer()
Cls
End Sub

تم تعديل هذه المشاركة بواسطة High volt في 15 مارس 2007 في 15:06

#7

عزيزي High volt لك الشكر كله

سيجري التجربة واخبارك بالنتائج

شكـــــرا جزيلا

#8

عزيـــــــزي

شكرا جزيلا

واعذرني لاني تعبتك معاي

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

ولك مني كل الاحترام يا استاذي

بانتظارك

#9

السلام عليكم

بانتظار الجديد في الشرح لتجربة اللعبة بغرض الاستفادة

ولكم جزيل الشكر

#10

كما ارجو شرح الكود

وشكــــــــــــــــــــــــــرا

#11

السلام عليكم

المعذره من الجميع, جالس الحين بدون جهاز وما قدرت ادخل النت, حتى اخوي الشمري كنت اناقشه على الخاص في موضوع, واعتذر منه لانقطاعي المفاجئ, الآن اكتب لكم من مقهى , ولكم كلمتي بان اقوم بالشرح سطر بسطر, في اقرب فرصه.

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…