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

مشاهدة النسخة كاملة : برمجة الالعاب - افكار وتلميحات



الشمري22
11-11-2005, 09:19 AM
السلام عليكم /

نبدأ جولتنا في عالم البرمجة .....
كل ما سنقوم به .. اوامر بسيطة ... واساسية .. الهدف منها /

1- كسر الخوف من الرياضيات والفيزياء>>> مع انها ابغض المواد عندي ...
2- عمل العاب صغيرة دون الخوف من مشاكل الرياضية .

طبعا

لا ادعي ابدا اني خبير .. كل واحد لازم يعرف هذا .. عشان ما اتعرض للاحراج :)
لكن الهدف من هذه الجولة .. الافادة والاستفادة "" ضع الاستفادة بين قوسين"" .

وش رح نتعلم :/

1- .. اساسيات التحريك ... >>>>> درس يجيب الطفش .
2- الدوال المثلثية .. وكيفية الاستفادة منها في برمجة الالعاب .
3- التصادم .
4- التتبع .( هذه عرفتها من احمد صالح واقولها للمرة المليون :) ) ,,,,,
5- امور اخرى ..

المطلوب ،
اولا / تجيد احد لغات البرمجة ...

1- vb
الامثلة على لغة البيسك ..
2- لغة السي /
باستخدام win api .
نحن سنستخدم vb



ثانيا / تكون انتهيت من ثاني ثانوي وبتقدير جيد جدا .. وتكون مدرستك حكومية .. :P


( انا ناسي vb .. عشان كذا يمكن الشرح ... لك عليه .. )

"" هذا الدرس بسييييط جدا .. فضلت ان ابدا به حتى يعرف اي عضو نوع الدروس اللي هو مقبل عليها
اما يستمر او يتوقف ""
افتح vb .

اختر اداة shape من قائمة الادوات وارسم شكل مستطيل .

الان ستلاحظ من قائمة الخصائص .. ان له 4 اوامر مهممممة جدا .
left - الجهة اليسرى من المستطيل .
top - الجهة العلوية من المستطيل .

ويوجد
width - عرض المستطيل .

height - طول او ارتفاع المستطيل .

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


لو اردنا تحريك المستطيل للجهة اليمنى اذا ضغط على مفتاح ( السهم الايمن )

نكتب :




Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyRight Then
Shape1.Left = Shape1.Left + 50

End If


End Sub يعني غيرنا موقع الجهة اليسرى من الشكل الى ثلاث خطوات نحو اليمين .

وتعمل نفس الامر لو اردت تحريكه عدة خطوات نحو اليسار لكن القيمة تنقص .


اما لو اردت تحريكه للاعلى او الاسفل .. فقط تتعامل مع top

مثال عام



Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = vbKeyRight Then
Shape1.Left = Shape1.Left + 50
End If

If KeyCode = vbKeyLeft Then
Shape1.Left = Shape1.Left - 50
End If

If KeyCode = vbKeyDown Then
Shape1.Top = Shape1.Top + 50
End If

If KeyCode = vbKeyUp Then
Shape1.Top = Shape1.Top - 50
End If

End Sub

طبعا انت استخدم switch case .. افضل لكن هنا حتى تكون واضحة اكثر

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


حمل المرفقات :

باز يطير
11-11-2005, 10:16 AM
وعليكم السلام ورحوة الله وبركاته ما شاء الله موضوع رائع وبسيط يدخل في العقل

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

لاكن انا عندي سؤال انت تستخدم اي برنامج

الدايركت اكس ام.....وضحلي وكمان اي مكتبة هل هي اوبنجل؟

CHALLENGER
11-11-2005, 02:59 PM
الله يعطيك العافية بس عندي اقتراح مو لو تكون الامثلة بالسي++ احسن ؟

Son Of UAE
11-11-2005, 04:24 PM
مشكور ... استمر و بالتوفيق. :biggthump

Mr. Black Man
11-11-2005, 09:15 PM
أهلاً بك في المنتدى :biggthump , و شكراً على مجهودك :)
و أتمنى إنك تفيد و تستفيد ;)
إستمر :bigok:

من التراب
12-11-2005, 12:51 PM
تسلم بدياتك بالمنتدى تبشر بالخير ........^_*

أنا أحب vb............................

لأنها سهلة وممتعة ..........ز ودرسك الأول حلو ومباشر .............مشكووور ...........^^

الشمري22
13-11-2005, 12:33 PM
يعطيك العافية بس عندي اقتراح مو لو تكون الامثلة بالسي++ احسن ؟
اذا تريدون بالسي .. نضعها بالسي مافي مانع ..
لكن لازم نستخدم api او GL .. وهذا اعتقد قليل اللي يستخدمها .,,
على العموم النتيجة واحدة ...

الدرس القادم اعتبروه عندكم:) ,,, ان شاء الله .

CHALLENGER
13-11-2005, 07:25 PM
اذا تريدون بالسي .. نضعها بالسي مافي مانع ..
لكن لازم نستخدم api او GL .. وهذا اعتقد قليل اللي يستخدمها .,,
على العموم النتيجة واحدة ...

.



و الله من ناحيتي افضله بالسي :p بس اذا الاغلبية يريدون البيسك ما اريد استفيد وحدي ما اعرف سوي تصويت ...



الدرس القادم اعتبروه عندكم:) ,,, ان شاء الله

شكراً مقدما على الدرس http://images.montada.com/smilies/new_icons/banana.gif

الشمري22
14-11-2005, 08:09 PM
الدرس الثاني /
الدوال المثلثية ( الدوال الدائرية )
اول شخص فهمت منه هذه الدوال يزيد الدليقان الله يوفقه ..
نقصد بها :
cos
sin
tan

بالعربي /
جتا : جا : قتا : قا : ظتا : ظا .

نحن مايهمنا الان cos و sin يعني الجتا و الجا .

كما درست في مدرستك ........ وبالتحديد في الصف الاول و الثاني ثانوي .

ان :
جتا صفر = 1
جتا 90 = صفر
جتا 180= -1
جتا 270 = صفر

بالانقليزي :
cos 0 = 1
cos 90 = 0
cos 180 = -1
cos 270 = 0

و

جا صفر = صفر
جا 90 = 1
جا 180 = صفر
جا 270= -1


بالانقليزي :
sin 0 = 0
sin 90 = 1
sin 180 = 0
sin 270 = -1


اذا مستحيل ... ان تزيد قيمة الجتا او الجا عن 1 او تنقص عن -1 .
من اجل هذا هي دوال مهمة جدا .

مثلا
الجتا .

اذا كانت الزاوية صفر .. فان الناتج 1 ويتناقص الناتج حتى يصل الى صفر عند الزاوية 90 .. ثم يتناقص اكثر حتى يصل الى -1 عند الزاوية 180 ..
ثم يبدأ بالزيادة حتى يصل الى صفر عند 270 ثم تتزايد حتى ترجع للواحد مرة اخرى وبالتالي اكملت الدورة .


الجا :

اذا كانت الزاوية صفر .. فان الناتج صفر ويتزايد الناتج حتى يصل الى 1عند الزاوية 90 .. ثم يتناقص حتى يصل الى 0عند الزاوية 180 ..
ثم يتناقص اكثر حتى يصل الى -1 عند 270 ثم تتزايد من جديد حتى يرجع للصفر مرة اخرى وبالتالي اكملت الدورة .


تخيل معي ان الاحداثي السيني لشكل معين هو جتا(صفر حتى 360)
ستجد انه يبدا بالواحد ... فيتحرك خطو لليمين 1 ثم يتراجع للصفر .. ثم -1 .. ثم يعود مرة اخرى .. صفر .. ثم 1.


مثال :/




Private Sub Timer1_Timer()
Const rad = 3.14 / 180
Static angle As Integer

angle = angle + 10
If angle >= 360 Then angle = 0
Shape1.Top = (Form1.Width / 2) + Sin(angle * rad) * 1000
Shape1.Left = (Form1.Width / 2) + Cos(angle * rad) * 1000

Form1.Caption = angle & " sin= " & Sin(angle * rad) & " cos= " & Cos(angle * rad)

End Sub


اكمل الشرح ان شاء الله الدرس الجاي .. الحين مصدع :) ,,,, لكن فقط حبيت يكون بداية ..

Son Of UAE
14-11-2005, 10:35 PM
احب اضيف على كلام الاخ الشمري . ( بعد اذنه ان شاء الله :أفكر: ) ان دالة Sin و Cos لا تاخذان الزواية بالدرجات ( 0 - 360) بل بالراديان R حيث قام بضرب الزاوية (باي على 180) و الباي تساوي تقريبا 3.14

لا حظت ان كل لغات البرمجة تاخذ بالرديان ( ما عدا الجيم ميكر ( محد يضربني :afraid: )) .

و ياريت ما تستخدم المصطلحات العربية لانها تذكرني بايام التعاسة ( ايام الدراسة ). :sad2:

ودمتم سالمين ;)