المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : الدرس الثالث : اشكال جميلة ...



PRG of RPG
08-12-2002, 11:33 AM
السلام عليكم....

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

معليش الدرس حيكون على السريع

مقدمة عن الموضوع :

الامر Line ....

ماهو هذا الامر ؟ من اسمه يقوم برسم خط على النافذة(الفورم) ..

وكيف احدد احداثيات هذا الخط ؟

Line (X1, Y1)-(X2, Y2) 'this will draw line
حيث :
X1 : يحدد الاحداثي السيني لبداية الخط
Y1 : يحدد الاحداثي الصادي لبداية الخط
X2 : يحدد الاحداثي السيني لنهاية الخط
Y2 : يحدد الاحداثي الصادي لنهاية الخط

فمثلا عند كتابة الامر


Line (0, 0)-(1000, 1000) ' this will draw line


سينتج لدينا الشكل التالي :

http://www.arab3.com/upload/images/Dec02/game_maker_line.jpg
___________________________________________________
كيف نتحكم بعرض هذا الخط ؟

عرض الخط :Form1.DrawWidth = X
بحيث كلما زادت X زاد عرض الخط
___________________________________________________
كيف سنتحكم بلون الخط ؟
قبل ذلك احب ان اشرح النظام RGB
R = Red , G = Green , B = Blue
وهذا النظام يقوم بمزج هذه الالوان لينتج لنا لون معين
فمثلا اذا كان الR = 0 و ال B = 0 وال G = 0 ...
سيكون شكل الكود كالتالي
RGB(0,0,0) ' this is black color
فالنتيجة هي لون اسود . لانها الالوان الثلاثة قيمها صفر اي لا لون .

ماهي الارقام اللممكنة ادخالها في هذا النظام ؟
للR وال G وال B لها نفس الحدود من 0 الى 255

فمثلا اذا كان الR = 255 و ال B = 255 وال G = 255...
سيكون شكل الكود كالتالي
RGB(255,255,255) ' this is white color
فالنتيجة هي لون ابيض لان الالوان الثلاثة جميعا 255

جرب تغير هذه القيم وانظر الى اللون الناتج

والان كيف سنتحكم بلون الخط ؟

Form1.ForeColor = RGB(0,0,0) ' control the color
___________________________________________________
___________________________________________________
* ترتيب اكواد اضهار الخط :
اولاً / ذكر خصائص الخط اللون العرض ..الخ
ثانياً/ اضهار النافذة بالامر Form1.show
ثالثا/ الامر Line

التطبيق (3-1) :

مثال لذلك :


Private Sub Form_Load()
Form1.DrawWidth = 4
Form1.ForeColor = RGB(200, 100, 100)
Form1.Show
Line (0, 0)-(1000, 1000)
End Sub


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

PRG of RPG
08-12-2002, 11:38 AM
اسف :)

PRG of RPG
08-12-2002, 12:38 PM
السلام عليكم....

في الحقيقة اريد ان اطرح مشكلة قالها لي احد اخوتي في المسنجر وهي :
لا تجود دروس توضح لك برمجة الابعاب من البداية .
وحتى ان وجدت فهي تفترض انك ملم بلغة بيسك بنسبة 100% بالاضافة الى انك "عبقري" في الفهم ...
بل انني اشبه الدروس بالامثلة ....
لذلك قد لا تجدوني متأكد من معلوماتي 100% ببساطة لأن 99% منها اتت من الاستنتاج وليست معلومة .
فلم اقرأ من كتب البيسك سوى كتاب واحد 600 صفحة وقرأته في 3 ايام ..وكان ذلك قبل 3 شهور ...
فمثال على ذلك الامر Rnd ...

فمثلاً رأيت مثال يقوم بإنشاء جدار عرضة عشوائي ويقوم بإكتشاف الاصدام على هذا الجدار "انظر الى مدى تعقيد الامثلة"
فمن هذا المثال تعلمت التصادم والامر Line والامر Rnd ... ولكن بعد اخذ كمية جيدة من البندول ...

فإذا قيل لك ان هذا الكود يطبع رقم عشوائي من صفر الى 100


MsgBox Rnd * 100


كيف تفسر معنى الامر Rnd ؟؟؟ انت مبرمج ويجب عليك فهم كل امر تقوم بكتابته .

بعد التفكير : الامر Rnd يقوم بإختيار رقم عشوائي (حقيقي) يقع مابين الصفر والواحد
فعند ضربه هذا العدد بالعدد 100 سينتج عدد قيمته من 0 الى 100
ولكن هل الفتره (0,100) ام [0,100] ام (0,100] أم [0,100) .... الله اعلم .

هذا الاستنتاج صحيح 100% ولكن هل هو الطريقة المستخدمة في الامرRnd ؟ لست متأكداً من ذلك

اما اذا اردت عدد عشوائي ما بين 20 الى ثلاثين تقول


Msgbox 20 + Rnd * 10


ما علاقة هذا الامر بدرسنا ...

تخيل هذا المشهد


http://www.arab3.com/upload/images/Dec02/game_maker_Rnd.jpg

هذا المشهد عبارة عن دوائر وخطوط عشوائي تضهر بألوان واحجام مختلفة ....

لقد تعلمنا كل شي ما عدا الدوائر

لعمل الدوائر نستخدم الامر 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 تقيس مع حذف الاماكن الزائدة مثلاً الشريط العلوي للنافذة

طبق هذا المثال وطبق امثله اخرى من عندك وسترى انها بسيطة مجرد ان تعتاد عليها ...

وامل ان ارى بعضاً من تجاربكم :)

تحياتي :)

PRG of RPG
08-12-2002, 06:17 PM
السلام عليكم....

تطبيق اخر للموضوع : عمل تدرج لوني

جميع الاكواد تلعمناها وسنأخذ من هذا التطبيق الفكره فقط



Private Sub Form_Load()
Dim R As Long, G As Long, B As Long
Dim X As Long
For X = 0 To Form1.ScaleHeight
R = (X / Form1.ScaleHeight) * 255
G = (X / Form1.ScaleHeight) * 255
B = (X / Form1.ScaleHeight) * 255
Form1.Show
Line (0, X)-(Form1.ScaleWidth, X), RGB(R, G, B)
Next X
End Sub



الفكره في اللون هي X / Form1.ScaleHeight = مقدار يقع ما بين الصفر والواحد .... وكلما زاد العداد x اقترب من الواحد
ثم نضرب هذا المقدار بـ 255 فالناتج : يتغير قيمة الالوان من 0 الى 255 وهو التدرج اللوني....

سأرفق هذا المثال ....

تحياتي :)

Mr. Black Man
08-12-2002, 10:59 PM
شكراً لك على دروسك الرائعة و المميزة و إنت بالفعل عضو أكثر من ممتاز;)

RPG
09-12-2002, 12:11 AM
الدرس جميل جدا! :D

اخيرا عرفت استعمال RND
شكرا كثيرا على مجهودك و الى الامام :)

PRG of RPG
09-12-2002, 12:29 PM
السلام عليكم...

شركاً لكم ....
واحب ان اذكر ان الاستنتاج صحيح 100% ولااعلم لما لم انتبه لبساطة طريقة التأكد :(
فلو كتبانا : MsgBox Rnd لنتج رقم بين الصفر والواحد

تحياتي :)

PRG of RPG
09-12-2002, 11:55 PM
السلام عليكم ....

اعوذ بالله شركاً لكم ..مرة وحدة...كنت اقصد طبعاً Thanks :)