السلام عليكم....
في الحقيقة اريد ان اطرح مشكلة قالها لي احد اخوتي في المسنجر وهي :
لا تجود دروس توضح لك برمجة الابعاب من البداية .
وحتى ان وجدت فهي تفترض انك ملم بلغة بيسك بنسبة 100% بالاضافة الى انك "عبقري" في الفهم ...
بل انني اشبه الدروس بالامثلة ....
لذلك قد لا تجدوني متأكد من معلوماتي 100% ببساطة لأن 99% منها اتت من الاستنتاج وليست معلومة .
فلم اقرأ من كتب البيسك سوى كتاب واحد 600 صفحة وقرأته في 3 ايام ..وكان ذلك قبل 3 شهور ...
فمثال على ذلك الامر Rnd ...
فمثلاً رأيت مثال يقوم بإنشاء جدار عرضة عشوائي ويقوم بإكتشاف الاصدام على هذا الجدار "انظر الى مدى تعقيد الامثلة"
فمن هذا المثال تعلمت التصادم والامر Line والامر Rnd ... ولكن بعد اخذ كمية جيدة من البندول ...
فإذا قيل لك ان هذا الكود يطبع رقم عشوائي من صفر الى 100
كيف تفسر معنى الامر Rnd ؟؟؟ انت مبرمج ويجب عليك فهم كل امر تقوم بكتابته .
بعد التفكير : الامر Rnd يقوم بإختيار رقم عشوائي (حقيقي) يقع مابين الصفر والواحد
فعند ضربه هذا العدد بالعدد 100 سينتج عدد قيمته من 0 الى 100
ولكن هل الفتره (0,100) ام [0,100] ام (0,100] أم [0,100) .... الله اعلم .
هذا الاستنتاج صحيح 100% ولكن هل هو الطريقة المستخدمة في الامرRnd ؟ لست متأكداً من ذلك
اما اذا اردت عدد عشوائي ما بين 20 الى ثلاثين تقول
كود:
Msgbox 20 + Rnd * 10
ما علاقة هذا الامر بدرسنا ...
تخيل هذا المشهد
هذا المشهد عبارة عن دوائر وخطوط عشوائي تضهر بألوان واحجام مختلفة ....
لقد تعلمنا كل شي ما عدا الدوائر
لعمل الدوائر نستخدم الامر Circle هكذا :
Me.Circle (x1, y1), y2, RGB(r, b, g) ' this will draw circle
حيث
X1: الاحداثي السيني لمركز الدائرة.
X2: الاحداثي الصادي لمركز الدائرة.
Y2: هو طول قطر الدائرة
R: قيمة اللون الاحمر من 0 الى 255
B: قيمة اللون الازرق من 0 الى 255
G: قيمة اللون الاخضر من 0 الى 255
_________________
التطبيق 3-2
الان سنقوم بإنشاء الادوائر العشوائية :
نضيف مؤقت Timer ونجعل Interval = 20 مثلاً
كود:
Dim R As Long, G As Long, B As Long
Dim Y2 As Long
R = Rnd * 255
G = Rnd * 255
B = Rnd * 255
Y2 = Rnd * (Form1.Height / 2) ' to be in form
Form1.DrawWidth = 4
Form1.Show
Form1.Circle (Form1.Width / 2, Form1.Height / 2), Y2, RGB(R, G, B) ' draw Circle
عرفنا ثلاث متغيرات لتحمل الالوان العشوائية
عرفناY2 ليحمل طول القطر وجعلناه قيمه عشوائية تقع داخل الفورم اي اقصى قطر هو Form1.Height / 2 واخترنا Height لنها عادة اصغر من الWidht ...
جعلنا عرض خط الرسم = 4
اضهرنا النافذة
رسمنا الدائره و (Form1.Width / 2, Form1.Height / 2) = مركز الفورم
ملاحظة لكي يكون في المركز تماماً :
كود:
Private Sub Timer1_Timer()
Dim R As Long, G As Long, B As Long
Dim Y2 As Long
R = Rnd * 255
G = Rnd * 255
B = Rnd * 255
Y2 = Rnd * (Form1.ScaleHeight / 2)
Form1.DrawWidth = 4
Form1.Show
Form1.Circle (Form1.ScaleWidth / 2, Form1.ScaleHeight / 2), Y2, RGB(R, G, B)
End Sub
حيث كلمة Scale تقيس مع حذف الاماكن الزائدة مثلاً الشريط العلوي للنافذة
طبق هذا المثال وطبق امثله اخرى من عندك وسترى انها بسيطة مجرد ان تعتاد عليها ...
وامل ان ارى بعضاً من تجاربكم
تحياتي