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

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



PRG of RPG
09-12-2002, 02:13 PM
بسم الله الرحمن الرحيم

السلام عليكم...

الدرس الرابع : اوامر مهمة في برمجة الالعاب ...

فكرت في مواضيع لهذا الموضوع وطلعت ببعض منها ... فاللي يحب ان تكلم عن اي موضوع بالبرمجة يعلمني :

اول موضوع الدوران :

كيف نخلي جسم يدور حول نقطة معينة ؟؟ يعني يشكل دائره او شكل بيضاوي ؟؟؟

- وذلك بواسطة الجا والجتا اي Sin و Cos ....

ما معنا هذا الكلام ؟

جاء دور الرياضيات في هذا العمل ( والحمد لله انا ممتاز في الرياضيات :) )

والحقيقة هذا الموضوع يصعب شرحة ... ولكن سأحاول جاهداً تبسيطه قدر الامكان :)

وتتطلب معرفة بسيط بدائرة الوحدة (التي قانونها SinX^2 + CosX^2 = 1

والان نبدأ في الجا(Sin) وهي ستحدد Picture1.left

Sin0 بكم ؟ طبعاً صفر
و Sin90 بكم ؟ طبعاً واحد
sin180 بكم ؟ طبعاً صفر
و Sin270 بكم ؟ طبعاً -1

ونعرف متى تكون الSin موجبة بالقانون :
كل جميلة ضريفة جتها جوازه
او
كل جبار ظالم جته مصيبة
==> هذه من بعض درر المدرس : عبدالفتاح جزاه الله خيراً - في الصف الثاني ثانوي

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

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

كل = يعني كل الدوال موجبة Sin , Cos , sec ,Cosec , tan , cotan جا و جتا وقا وقتا وضا و ضتا
جميلة : يعني الجا موجبة (Sin) ومقلوبها قتا (Cosec)
ظريفة : يعني الظا والظتا موجبتين وذلك لأن الجا والجتا سالبتين tan = sin/cos
جتها : يعني الجتا Cos ومقلوبها الSec موجبتين

دعونا في الSin فعند قولنا sin0 = 0 و sin90 = 1 ولكما ازود قيمة الزاوية من صفر الى 90 ستزداد قيمة الناتج SinX من 0 الى 1
وفي الربع الثاني (90-180) فكلما ازود قيمة الزاوية من 90 الى 180 ستقل قيمة الناتج SinX من 1 الى 0
وفي الربع الثالث (180-270) فكلما ازود قيمة الزاوية من 180 الى 270 ستقل قيمة الناتج SinX من 0 الى -1
وفي الربع الاخير(الرابع) (270-360) فكلما ازود قيمة الزاوية من 270 الى 360 ستزداد قيمة الناتج من -1 الى 0

وعند تطبيق هذه المعطيات على Picture1.left سينتج لدينا الشكل التالي :

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


اي من 0 90 يذهب الجسم من 0 الى 1
من 90 الى 180 يذهب الجسم من 1 الى 0
من 180 الى 270 يذهب الجسم من 0 الى -1
من 270 الى 360 يذهب الجسم من -1 الى 0

الان تعلمنا كيفية حركة الSin

ولكن هنالك مشكلة برنامج الفيجوال بيسك برنامج دقيق فكما جعل النقطة بالTwip جعل الدرجة بالراديان .
ولكي نحول من راديان الى درجة نظرب في 180 / 3.14
حسناً هذا مقدار ثابت اي Const
اذن نعرفه في البيسك على انه ثابت فنقول
Const rad = 3.14 / 180

نبدأ بالجزء الاول من تطبيق المسار الدائري :

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

نضع تايمر ونضع ال interval = 60 لكي نستطيع مشاهدة التغير

وداخل التايمر



Private Sub Timer1_Timer()
Const rad = 3.14 / 180
Static A As Integer
A = A + 10
If A >= 360 Then A = 0
Picture1.Left = (Form1.ScaleWidth / 2) + Sin(A * rad) * 1500
Cls
Print A
End Sub


عرفنا A لكي يكون الزاويه وقلنا اذا وصل الى 360 يرجع ليكون 0

لماذا (Form1.ScaleWidth / 2) لكي يكون المركز لحركة الدائرة

A * Rad لكي نحول من راديان الى درجة

لماذا * 1500 وذلك لأن ناتج الزاوية رقم يقع بين -1 و 1 فلن نلاحظ التغير
cls لمسح الشاشة
Print A لطباعة الزاوية

سأرفق هذا الملف وسنكمل إن شاءالله الدالة Cos لكي نكون الحركة الدائرية .

تحياتي :)

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

على فكره .... حاولوا تسوون الCos (فقط اضافة سطر واحد وتجعل الحركة دائرية) ... لأنه نفس الفكرة تقريباً ....

وانا في اقرب فرصة ابضيف موضوع الCos

تحياتي :)

Mr. Black Man
10-12-2002, 12:41 AM
شكراً لك على الدرس و الحمد لله أنا أحب الرياضيات فلذلك فهمت الدرس بسرعة و شكراً على الدرس ;)

البطران العربي
10-12-2002, 07:08 AM
مشكور اخوي



كل جميلة ضريفة جتها جوازه


آآآآآه ذكرتنا أيام ثاني ثانوي


القوانين المصرية خلتنا كذا ?: ?: ?:


بس أقول ليش الدائرة تقسيمها كذا


مب لازم تكون ال3 مكان ال4


ولا هذا عشتن الكود




و السلام ;-)

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

وش المنتدى اللي كله دوافير:6

شكراً لكم....

___________
الا صح بالظبط الثلاثة مكان الاربعة :) ..ابعدلها.. شكراً لك


وفي الربع الثالث (180-270) فكلما ازود قيمة الزاوية من 180 الى 270 ستقل قيمة الناتج SinX من 0 الى -1

وشلون اقول الربع الثالث واقول 180 الى 270 ..... وارسمها الرابع :6

RPG
11-12-2002, 11:27 PM
دخت x.x

لا، امزح :)
شرحك سهل و ممتع و اسهل من شرح مدرس الرياضيات في 2 ثاناوي :p
كمل :)

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

على فكرة كل هالرسمات وهالقوانين من تأليفي :6 .... وانا ما كنت فاهمها زي كذا بالظبط بس كنت فاهم كيف تجي بس الحركة بالظبط ما كنت اعرفها...يوم جيت اكتب الموضوع تتبعت الحركة خطوة خطوة حتى نتج معي الموضوع :)

شكرا لك اخوي RPG :)

تحياتي

RPG
13-12-2002, 10:55 PM
لاحظت شيئا جميلا...

لو وضعت
Picture1.Left = (Form1.ScaleWidth / 2) + Sin(A * rad) * 1500
Picture1.Top = (Form1.ScaleHeight / 2) + Cos(A * rad) * 1500

فانك تحصل على حركة دائرية كاملة :)
و لو غيرت الارقام (1500) فيمكن الحصول على حركات بيضاوية

:D

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

تماااااااااام عليك اخوي RPG جبتها ...... 10 من 10 ..............هذا اللي انا ابيه :)

خلاص الموضوع خلص الحين ......" كنت افكر : كيف اكمل الموضوع ...اضع موضوع الCos بالكامل...ام اقول بالمثل .....بس انت ريحتني :) "

وبالنسبة للبيضاوي ...نعم هذه الفكرة اللتي كانت في رأسي ....

كتطبيق لهذا العمل .... "ساعة حائط" .... ترى هل منكم من يستطيع عملها ؟ كل ما تحاج معرفته هو :
ا ثانية = 1000 Interval
وتستطيع عملها بطريقة اخرى "ولكن ذكية" ... وهي طريقة اكتشفتها عندما فكرت ان Timer غير دقيق جداً .... فهل تستطيع ايجادها وايجاد طرق اخرى ؟؟؟

تحياتي :)

الموضوع القادم هو " الحفظ والقرائة من الملفات txt ....

PRG of RPG
21-12-2002, 10:12 AM
الموضوع الثاني : الحفظ والقرائة من الملفات txt

في الالعاب الحقيقية - على سبيل المثال ألعاب RPG نجد HP و MP وموقع اللاعب والItem والمرحلة و....و..... * تحتاج إلى تحفظ في ملف حتى إذا لعب اللاعب اللعبة سيكمل إلى ما إنتهى إليه ..أي بإختصار save و load .

* أولا : عملية save :
نعمل ذلك من خلال كود "قصير" لذلك سأجعله دفعة واحدة :

التطبيق 4-3 :



Open App.Path & "\game.txt" For Output As #1
Print #1, "HP = 200 " ' the first line
Print #1, "MP = 60 " ' the second line
Close #1


open : هذا الامر يقوم بفتح الملف - اي تجهيزه ( سواءاً للحفظ او القرائة )

app.path : هذا الكائن يحدد موقع البرنامج

game.txt : هو إسم الملف

app.path & game.txt : أي أننا نريد أن ننشأ الملف بإسم game ويقع في نفس المجلد الذي يقع فيه البرنامج

for output : أي للحفظ ( فنحن الان جهزنا الملف للحفظ )

1# : أي رقم هذا الملف هو 1 .... تخيل أننا جهزنا 3 ملفات للحفظ ..فكيف نحدد الملف نريد الكتابة فيه ... وذلك من خلال الرقم
لماذا # ؟ الله اعلم :) .

________________________

"Print #1, " hp = 200 :أي نكتب في السطر الاول من الملف والذي رقمه 1# - ثم نظع فاصلة - ثم نكتب ما نريد(hp = 200)

"Print #1, " Mp= 60 :أي نكتب في السطر الثاني من الملف والذي رقمه 1# - ثم نظع فاصلة - ثم نكتب ما نريد( MP = 60 )

________________________

close #1 : أي أقفل الملف رقم 1# وذلك لتحرير الذاكرة .




هذا بالنسبة للحفظ - أما للقرائة من الملف



Dim a As String, b As String
Open App.Path & "\game.txt" For Input As #1
Line Input #1, a
Line Input #1, b
Close #1
MsgBox a & b


نلاحظ أن التعديلات بسيطة فقط عرفنا المتغيرين a و b لكي يخزنا القيم المأخوذة من الملف .

for Input : للقرائة

line input #1 , a : إقرأ من الملف رقم 1# السطر الاول وخزن ذلك في المتغير a
Line Input #1, b : إقرا من الملف رقم 1# السطر الثاني وخزن ذلك في المتغير b

سأرفق ملف لهذا التطبيق بالإضافة الى عمل ساعة بأبسط حالاتها

تحياتي :)

RPG
21-12-2002, 09:54 PM
شكرا على الدرس الجديد :)

انا قرأت عن طريقة الحفظ منذ زمن بعيد في كثير من المواقع و الكتب لكني لم ارى شرحا اسهل من شرحك :)

الدرس القادم هو؟

البطران العربي
22-12-2002, 06:35 AM
السلام عليكم أخي




أنا عندي سؤال



من وين أقدر أنزل الفيجوال بيسك



أتمنى الرد لأني ودي أطبق الدروس هذي




و السلام ;-)

RPG
22-12-2002, 08:32 AM
البطران العربي:

لا يمكن تنزل فيجوال بيسك (و اذا وجدته فسيكون كبيرا جدا)، روح لاي محل كمبيوتر و اشتريه :)

البطران العربي
23-12-2002, 06:40 AM
الرسالة الأصلية كتبت بواسطة RPG
البطران العربي:

لا يمكن تنزل فيجوال بيسك (و اذا وجدته فسيكون كبيرا جدا)، روح لاي محل كمبيوتر و اشتريه :)


آآآآ يعني لازم نضرب مشوار لمجمع الحاسب



خير ان شا الله




و السلام ;-)

PRG of RPG
24-12-2002, 05:04 AM
السلام عليكم...

والله انك بطران يالبطران تبي كل شي جاهز مجهز :)

الدرس القادم هو ؟ ما فيه درس ....خليناها حصة رياضة .

والله مدري ....حالياً انا مخي منحاس ..... اليوم مختبر English والجولات تدهر الاولى A والثانية B (ام كرشين) ماهي P :) .... ويوم الاربعاء علي فيزياء والدكتور الى الحين مدري وش جنسيته (ما يعرف الا كلمتين عربية ... ولو ادري من اللي علمه ابـ..... الاولى واجب والثانية اختبار (ماطحت الا انبطحت).... وخويي مدري من علمه ان عندي showTime وكل شوي سجلت ولا ما سجلت :) .... المهم الروابط التشعيبية عندي غير محدثة ( عملموني بموضوع وابشروا بالسعد (ولا يردكم الا انتر )) :)

هههههههههههههههههه اقولكم منحاس

تحياتي :)