شكراً لك على الدرس ... أنتظر الدرس الخامس![]()
شكراً لك على الدرس ... أنتظر الدرس الخامس![]()
السلام عليكم ...
أولاً أعتذر لكم عن تأخري في إكمال الموضوع . حيث مضى أكثر من شهر و لم أكمل أو أضيف أي شيء له![]()
و إن شاء الله راح أكمل الموضوع و راح أضيف الجزء الأول من الدرس الخامس بعد يومين حيث سيكون الدرس مقسم لعدة أجزاء و سوف أضيف كل قسم لوحده بعد كل أسبوع من الذي قبله و إن شاء تستفادوا من الدروس و شكراً .
لا إله إلا اللهمشروع لتعليم أساسيات لغة الـ ++C :-موضوع لتعليم الفيجوال بيسك 6 :
Im Waiting![]()
السلام عليكم ...
بسم الله الرحمن الرحيم ...
--------------- الدرس الخامس ---------------
لقد تحدثت في الدرس الرابع عن كيفية التعامل مع المتحولات و كيفية إسنادها إلى قيم حرفية و تعلمنا بعض الشفرات المهمة .
هذا الدرس سوف أحاول تقسيمه إلى مجموعات بحيث تكون لكل مجموعة موضوع و ذلك للتسهيل . و سوف أكتب كل مجموعة على حدة و البقية بعد فترة . ففي المجموعة الأولى سأتحدث عن بعض الشفرات المتنوعة . فلنبدأ :
![]()
مجموعة من الشفرات المتنوعة :
--------------------
العبارة Do :
تستخدم من أجل تكرار مجموعة من الأوامر عند تحقق الشرط المطلوب و الصيغة العامة هي :
Do
( Code )
Loop While ( Code )
مكان العبارة code يجب أن تضيف أي شفرة تريدها و لزيادة فهمها نورد المثال التالي:
في هذا المثال سوق يقوم برنامجك بتكرير الشفرة msgbox طالما أن العنصر Text1 لا توجد كتابة بداخله و هكذا ...
ملاحظة / يمكنك كتابة أكثر من شفرة لكي تتكرر عند تحقق الشرط .
--------------------
العبارة While :
هي عبارة شبيهة جداً بالعبارة Do . و الصيغة هي :
While ( Code )
( Code )
Wend
في السطر الأول سوف يختبر البرنامج العبارة ثم سيكرر تنفيذ العبارة الموجودة في السطر الثاني . مثال :
--------------------
العبارة For … Next :
تستخدم هذه العبارة من أجل تكرار مجموعة من الشفرات عدداً معيناً من المرات و ليس كالعبارتين Do و While اللتان تكرران الشفرات حتى تحقق الشرط .
و صيغتها العامة هي :
For x = 1 to 10
( Code )
Next x
حيث x هي اسم أي متحول و أنا كتبته هنا للمثال فقط . و الأرقام أيضاً تستطيع أن تضع أي منها . مثال :
![]()
في هذا المثال أضفت عبارة Step 2 بعد الرقم 4 و هي تعني أن التكرار سوف يتم مرتين عند الرقم 1 و 3 أي أنه سوف يتم الإنتقال من الرقم 1 إلى 4 بإضافة 2 و ليس 1 حيث إضافة الرقم واحد نكون هي المفعلة عند عدم كتابة الأمر Step و هكذا ...
ملاحظة / تستخدم العبارة For بكثرة في المصفوفات ! سوف أتحدث عن المصفوفات في المجموعات القادمة مع توضيح مثال عملي على العبارة For من أجل فهمها جيداً و هي مهمة لذلك سنخصص لها برنامجاً صغيراً .
--------------------
العبارة End :
لإنهاء عمل برنامجك و الخروج منه و تكتب كما هي :
End
--------------------
العبارة Exit :
لها استخدامات عديدة من أهمها استخدامها في العبارة Do و ما يشابهها مثل Do . تستخدم في العبارة Do من أجل إنهاء عملها قبل إنتهاء التكرارات ( كما تعلمنا ) . مثال:
في هذا المثال سوف يتم إنهاء التكرارات عند المرة الخامسة و هكذا ...
--------------------
العبارة Str :
تقوم بتحويل القيم العددية إلى قيم حرفية و صيغتها العامة هي :
Str ( … )
النقاط هي أي رقم تود وضعه لكي يتحول إلى قيمة حرفية . مثال :
![]()
في هذا المثال سيتحول الرقم 20 إلى قيمة حرفية يعني أنه سيصبح على الشكل التالي : "20" و هكذا...
--------------------
العبارة Cstr :
تعمل هذه العبارة عكس العبارة السابقة فتحول القيمة الحرفية إلى عددية و صيغتها :
Cstr ( 20 )
مثال :
--------------------
العبارة Asc :
يوجد نظام شيفرة في لغة البيسك يسمى ASCII و تأخذ قيماً من الصفر إلى 255 . حيث يكون لكل رقم من هذه الأرقام قيمة مقابلة لها ( محرف ) ، فتقوم هذه العبارة بتحويل أي قيمة حرفية إلى العدد المقابل لها في الشيفرة ASCII و هكذا ...
للتوضيح نورد المثال التالي :
![]()
في هذا المثال سيأخذ المتحول a القيمة 62 و التي تعبر عن الرمز > في الشيفرة ASCII .
ملاحظة / سنتستخدم هذه العبارة بعد قليل للتوضيح أكثر عن فائدتها و ذلك في عملية ربط القيم .
--------------------
العبارة Chr :
وظيفته عكس العبارة السابقة ، فيقوم بإعطاء الحرف أو الرمز المقابل للرقم في شيفرة الـ ASCII . مثال :
![]()
في هذا المثال الرقم 13 يعني الزر Enter .
--------------------
عوامل تجميع القيم الحرفية و الرقمية :
1 – العامل & .
2 – العامل + .
حيث أن كلا العاملين يستخدمان لهذه الوظيفة علماً بأن العامل + يستخدم أيضاً لعملية الجمع كما وضحت ذلك سابقاً .
أمثلة على عملية الربط بين القيم الحرفية بواسطة العاملين & و + :
لاحظ في المثال الأول كيف قمنا بربط قيمتين حرفيتين بينما في المثال الثاني ربطنا قيمة حرفية مع رقمية بينما المثال الثالث سيأخذ البرنامج قيمة العنصر Text1 التي أضافها المستخدم و يربطها بما سبقها . و لكن لماذا وضعنا_ Chr (13) ؟؟ هذه العبارة تعني الضغط على مفتاح Enter يعني أن العبارة ستكتب على سطرين .
ملاحظة / الرمز _ : يستخدم إذا كانت الشفرة التي تكتها طويلة في البرنامج فيوضع من أجل الربط بين السطر و السطر الذي يليه مع التنبيه بضرورة وضع مسافة قبله .
في المثال الرابع ربطنا متحولين ببعضهما فالناتج سيكون "SS" .
انتبه / لقد استخدمت العامل & في الأمثلة و العامل + يشبهه تماماً في الوظيفة في هذه الأمثلة إلا في المثال الثاني فسيعطي البرنامج خطأ لأن العامل + لا يستطيع ربط قيمة حرفية مع رقمية .
--------------------
تنسيق القيم الحرفية :
1 – العبارة LCase :
لتحويل الأحرف إلى أحرف صغيرة و صيغته :
LCase (K)
حيث K هي أي متغير حرفي . و لو فرضنا مثلاً أن قيمة K هي : TABLE . فعند استخدام هذه العبارة ستتغير جميع الأحرف و تصبح صغيرة و إن كان أحد الأحرف صغيرة قسيبقى على حاله طبعاً . و ستصبح قيمة K = "table" .
2 – العبارة UCase :
لتحويل الأحرف إلى أحرف كبيرة و صيغته :
UCase (L)
حيث L هي أي متغير . و هكذا ...
3 – العبارة StrConv :
هذه العبارة تعد شاملة لسابقيها حيث تستخدم لتكبير الأحرف أو تصغيرها أو لجعل الحرف الأول فقط كبير . و صيغتها :
Strconv (H , vbUpperCase)
حيث H هي أي متغير و يمكنك أن تضع بدلاً منه قيمة حرفية و تضعها طبعا ضمن قوسين صغيرين كما تعلمنا في القيم الحرفية ...
أما بالنسبة لما بعد الفاصلة فهو نوع التغيير الذي تريد أن يطرأ على الحروف و يمكنك إختيار عدة أنواع و لكن أهمهما هي :
vbUpperCase , vbLowerCase , vbProperCase
مثال :
![]()
في هذا المثال لقد جعلنا المتحول Y يأخذ القيمة Star حيث vbpropercase تقوم بتكبير الحرف الأول فقط من كل كلمة .
--------------------
العبارة Len :
لتحديد طول المتحول أو عدد الأحرف التي يحتويها و الصيغة العامة :
Len ("Jamal")
حيث Jamal هو قيمة حرفية و يمكن أن تضع بدلاً منها قيمة رقمية .
مثال :
![]()
في هذا المثال سوف يكتب بداخل العنصر Label1 الرقم 3 حيث أن عدد الأحرف في المتحول a هي 3 .
ملاحظة / لقد كتبت في الشفرة Label1 = … و لم أكتب Label1.caption !!! لأن البرنامج يتعرف عليه تلقائياً إذا لم أضع أي خاصية من خصائصه .
-------------------- يتبع --------------------
هذه هي المجموعة الأولى و التي احتوت على بعض العبارات و الشفرات المهمة . ربما سوف أضيف بعضاً منها في المجموعات الأخرى . و إن شاء الله راح أضيف المجموعة الثانية في القريب العاجل و التي طبعاً موضوعها يختلف عن الأولى .
و شكراً
لا إله إلا اللهمشروع لتعليم أساسيات لغة الـ ++C :-موضوع لتعليم الفيجوال بيسك 6 :
أريد أن أوضح نقطة مهمة و هي أن بعض هذه المعلومات التي كتبتها قد لا تفيدك في صنع لعبة و لكن وضعتها للفائدة . و لكن البقية مهمة جداً في البرمجة في لغة البيسك ، و ربما يعتقد البعض أنها بسيطة و سهلة و لكن الذكي هو من يستغلها ليصنع بها أفضل الألعاب و إن شاء الله تعم الفائدة و شكراً .
لا إله إلا اللهمشروع لتعليم أساسيات لغة الـ ++C :-موضوع لتعليم الفيجوال بيسك 6 :
شكراً لك على إكمال الدروس![]()
.... و الصراحة موضوعك هذا أكثر من مميز ;-) و شرح أكثر من رائع بطريقة جميلة ":" .
السلام عليكم ...
أولاً شكراً لك أخوي المراقب( MR. BLACK MAN ) على ردك و إن شاء الله أكون عند حسن ظنك . و أنا آسف على تأخري في الرد و في إكمال الموضوع لأني فعلاً لا أجد الوقت الكثير للكتابة و خاصة أن الإمتحانات سوف تبدأ في 1 / 6 و الدراسة طبعاً هي الأهم .
المهم سوف أكتب مجموعة أخرى من الدرس الخامس و سوف أضيفها بعد يومين و البقية بعد الإمتحانات إن شاء الله . و هذه المجموعة هي عبارة عن كيفية عمل مقطع متتالي ( فيديو ) بسيط عن طريق مجموعة من الصور باستخدام الأداة Timer . و المشهد هو للعبة .... ! و لا خليها مفاجئة !
لا إله إلا اللهمشروع لتعليم أساسيات لغة الـ ++C :-موضوع لتعليم الفيجوال بيسك 6 :
خليها من اللعبة :0) :0)الرسالة الأصلية كتبت بواسطة Wolf Sniper
سوف أكتب مجموعة أخرى من الدرس الخامس و سوف أضيفها بعد يومين و البقية بعد الإمتحانات إن شاء الله . و هذه المجموعة هي عبارة عن كيفية عمل مقطع متتالي ( فيديو ) بسيط عن طريق مجموعة من الصور باستخدام الأداة Timer . و المشهد هو للعبة .... ! و لا خليها مفاجئة !
السلام عليكم ...
عذرأ على التأخيرالمهم خلنا ندخل في الموضوع
---------- المجموعة الثانية ----------
في هذا الدرس سنتعلم كيفية استخدام الأداة Timer من أجل عرض صور متتابعة لتشكل حركة معينة و سوف يقتصر درسنا هذه المرة على ذلك .
ملاحظة مهمة جداً : أنا برأيي أن أصعب مرحلة في عملنا اليوم هي كيفية رسم و تصميم الصور المتلاحقة التي بها يمكن تحريك جسم أو أي شيء . مثل الأفلام الكرتون ! فالمصممين يقومون برسم عدة صور للشخصية لكي يجعلونها تركض مثلاً . و صحيح أن هذا الأمر هو الأفضل أن يعمل على برامج أخرى كالفلاش أو ثري دي ماكس و لكننا سوف نعملها على الفيجوال بيسك و شوف النتيجة بنفسك ! . فلنبدأ :
بسم الله ...
أولاً / ضع العناصر التالية في نموذجك لتصبح مثل الصورة التالية :
العناصر :
1 – Timer و جعلت غير مفعل عند تشغيل البرنامج بجعل الخاصية Enabled = False . و هي تعني أن الأداة لن تعمل عن تشغيل البرنامج . سوف تعرف لماذا فعلت ذلك .
و جعلت الخاصية Interval تأخذ القيمة 16 و هي سرعة الأداة . و كما ذكرنا سابقاً أن الرقم في هذه الخاصية يعني كل ملم / ثانية و هي السرعة .
2 – Label و جعلته يأخذ القيمة صفر .
3 – Picture و جعلت الخلفية سوداء ( طبعاً لا يهم اللون و لكن فقط للتغيير ) .
4 – Command و كتبت عليه الكلمة Start .
---------------
ثانياً / عليك تنزيل الصور التي أضفتها في الدرس لأنها هي محور عملنا و هي للعبة ريزدنت إيفيل كود فيرونيكا و هي صور متتابعة لعرض من اللعبة عندما تكون كلير تهرب من الطائرة المروحية . و عدد الصور 45 صورة !! هذه الصور تبدأ من 1 إلى 45 و طبعاً بداية الحركة من الرقم 1 و أنا قد رتبتها إلى 45 للتسهيل .
---------------
ثالثاً / فكرة العمل :
الفكرة هي تحميل 45 صورة متتالية بسرعة 16 ملم / ثاينة . و لكن لماذا 16 ملم / ثانية ؟
أنا رأيت أن أفضل سرعة هي هذه السرعة و لكنك تستطيع تسريع العرض أو إبطاؤه بتغيير الخاصية Interval في العنصر Timer1 كما ذكرنا . و لكن إجعلها الأن 16 ثم غييرها لتأكيد فكرة العمل .
---------------
رابعاً / كتابة الشفرة الخاصة بالأداة Timer :
أضغط على الأداة التي رسمتها مرتين لتدخل إلى المكان المخصص لكتابة الشفرة للأداة Timer . و اكتب الشفرة التالية :
ما هذا الذي كتبته ؟
هل تتذكرون في الدرس الرابع كيف صممنا برنامج العداد ؟ الأن الفكرة نفسها و نفس الشفرة و لكن سأعيد شرح هذه الشفرة :
لقد جعلت العنصر Label1 يأخذ القيمة المكتوبة فيه و يضيف عليها واحد . و سوف تتم العملية عند كل 16 ملم / ثانية . و العبارة Val هي لجعل لتحويل القيمة الحرفيو إلى رقمية . و إذا لم أكتب العبارة Val لأضاف البرنامج العدد 1 إلى يمين الرقم الموجود أصلاً في العنصر و هذا ما لا نريده بل نريد أن تتم عملية الجمع بين الأرقام . و السبب الأخر هو أن لغة البيسك تفترض كما قلنا أن القيمة حرفية عندا أضع أي قيمة في أي عنصر .
ملاحظة / انتبه أين وضعنا هذه الشفرة لقد وضعناها في القسم الخاص من الأداة Timer أي أنها ستكرر كل 16 ملم / ثانية و هي السرعة التي نريدها لتكرار الصور .
---------------
خامساً / كتابة الشفرة الخاصة بتحميل الصور إلى العنصر Picture1 :
ضع الصور في ملف معين و لكن احفظ المصدر جيداً لأننا سنستخدمه . الأن سنكتب الشفرة و سوف نضعها أيضاً في المكان الخاص لشفرات الأداة Timer1 و سوف نضعها أسفل الشفرة السابقة :
لماذا كتبنا هذه الشفرة ؟
طبعا هذه الشفرة هي شفرة العبارة IF … Then التي تعلمناها في الدرس الماضي . و شرحها هو :
أنه إذا كانت قيمة العنصر Label1 = 1 فحمل الصورة التي مصدرها F:\My Pictures\1.jpg إلى العنصر Picture1 و طبعاً إلى الخاصية Picture .
الشفرة LoadPicture تقوم بهذه المهمة و صيغتها أن تكتب ما يلي :
LoadPicture (…) حيث النقاط هي مصدر الصورة .
و لكن لماذا كتبت تلك الشفرة ؟؟ أنا أريد أن يأخذ العنصر Picture1 صورة معينة كل 16 ملم / ثانية و لكي أحقق ذلك يجب أن أستعين بالعنصر Label1 كما فعلت أعلاه .
الفكرة هي تحميل 45 صورة متتالية بسرعة 16 ملم / ثاينة كما قلت سابقاً .
ملاحظة مهمة 1 / عليك أن تكتب المصدر الصحيح الذي وضعت فيه الصور و هو ليس المصدر الذي قد كتبته أنا في الشفرة . طبعاً هناك شفرة تسهل البحث عن المصدر و هي بجعل جميع الصور بداخل الملف الموجود عيه مشروعك أو برنامجك الذي تكتب فيه الأن و لكن هذه الطريقة تحتاج لشفرة أيضأ . و لكن خلينا الأن في هذا البرنامج و هذه الطريقة .
ملاحظة مهمة 2 / يجب كتابة الإمتداد الخاص بالملف و هو jpg .
---------------
سادساً / كرر الشفرة السابقة 45 مرة بنفس الأسلوب و لكن طبعاً مع تغيير اسم الملف .و ذلك بجعل اسم الملف أعلاه من 1 إلى 2 و هكذا ... إلى أن تكتب 45 شفرة خاصة بـ 45 صورة .
و أيضاً غير قيمة الشرط IF Label1 = 1…)) إلى IF Label1 = 2…)) و هكذا ...
للتسهبل قم بالنسخ و اللصق .
أنظر الصورة :
---------------
سابعاً / في آخر شفرة و هي للصورة رقم 45 أضف إلى الأوامر ما يلي :
لقد أضفت عبارة تقوم بجعل العنصر Label1 يأخذ القيمة صفر عند تحميل الصورة رقم 45 و الهدف من ذلك إعادة المشهد عندما ينتهي عرض جميع الصور .
---------------
ثامناً / كتابة الشفرة للعنصر Command1 :
إضغط مرتين على العنصر Command1 في النموذج لكي نكتب الشفرة الخاصة به . و هي :
الشفرة الأولى / لقد تعلمناها سابقاً و هي جعل العنصر Timer1 يعمل عند إذا لم يكن يعمل . و أن يتوقف عن العمل إذا كان يعمل !!
العبارة Not تقوم بعكس القيمة الموجودة في الخاصية Enabled فإذا كانت True تجعلها False و هكذا ...
الشفرة الثانية و الثالثة / الهدف منهم هو جعل العنصر Command1 مكتوب عليه الكلمة Start إذا كان Timer1 لا يعمل . و أن يكتب عليه Stop إذا كان يعمل .
ملاحظة / فكرة عمل البرنامج أنني أريد أن يبدأ العرض عند الضغط على العنصر Command1 و لذلك وضعت هذه الشفرة .
---------------
تاسعاً / انتهى الدرس . جرب البرنامج إما بالضغط على زر Start في الأعلى أو بالضغط على زر F5 في الكيبورد.
ملاحظة / سوف ترى أن الحركة تنقطع عند لحظة معينة و سبب ذلك أنني لم ألتقط الصورة الخاصة بهذا المكان . و ربما لن تلاحظوه و لكن ذكرت ذلك لبراءة الذمة .
---------- يتبع بعد الإمتحانات ----------
كما رأيتم أن باستخدام أوامر بسيطة استطعنا عمل برنامج و فكرة جيدة تستحق الإهتمام بها . و أصعب مرحلة فيها هي إلتقاط الصور . و لكن ستجد الصعوبة نفسها تقريباً عند تحريك المجسمات في برنامج ثري دي ماكس . و اسأل الذين يعرفون البرنامج جيداً . و نصيحة أخيرة هي إذا كنت تريد صنع فكرة معينة أو برنامج معين فسوف تتعب من أجل الوصول إلى هذه الفكرة . لذلك فلا تيأس و اصبر إلى أن تحل مشكلتك . و الوصول إلى فكرة تريد عملها في برنامجك تكون سهلة و لكن المشكلة هي كيف ترتب و تستخدم الأوامر .
أخيراً إن شاء الله تكونون استفتوا من هذا الدرس و أنا راح أضع لكم البرنامج مع الملف المرفق على شكل EXE لكي تجربوه و طبعاً سوف أضع الصور معه .
ملاحظة / عند تنزيلك للملف لا تحذف الصور من الملف و لكن إنسخها و ألصقها في المكان الذي تريد و ذلك لكي يعمل الملف الذي أرفقته . مع التنبيه أن الملف من EXE لن يعمل إذا لم يكن لديك فيجوال بيسك على الجهاز ! و أنا أحاول أن أجد الحل لهذه المشكلة .
معلومة أخيرة / بما أن درسنا كان عن تحريك و عرض الصور . فقد يتساءل البعض كيف يقوم مصممين الألعاب على الأجهزة المختلفة كـ PS2 بتحريك الشخصيات ؟ و كيف يجعلونها كالحقيقة ؟
أنا على حسب ما شفت و سمعت أن المصممين يضعون مجسات خاصة على مفاصل ممثل ( يعني إنسان حقيقي ) بحيث يقوم بحركات معينة . و هذه المجسات تكون مرتبطة بالحاسب فتنتقل حركة الممثل إلى الحاسب . ثم يقوم المصممين بإكساء الجسم و رسم الشخصية . هذا الذي أعرفه .
و لو تتذكرون لعبة Onimusha 2 ( طبعاً على جهاز PS2 ) هناك خيار تستطيع فيه مشاهدة بعض اللقطات عن كيفية تصميم اللعبة . و الأمر مشابه لألعاب أخرى مثل FFX و FFX-2 . و أظن أن هذه الطريقة متبعة في أغلب الألعاب . و شكراً .
بالتوفيق
الوصلة
الملف المرفق إظغط هنا
لا إله إلا اللهمشروع لتعليم أساسيات لغة الـ ++C :-موضوع لتعليم الفيجوال بيسك 6 :
شكراً لك على الدرس الرااائع و المتعوب عليه فعلاً... و شكراً مرة أخرى على المجهود الخارق اللي تبذله في كتابة الدروس ":"
![]()
أولاً شكراً لك MR. BLACK MAN على الرد الجميلبس في خطأ في الوصلة اللي حاطيتها ?: و هذه هي الوصلات الصحيحة التي تحتوي على ملف الصور و ملف الـ EXE .
ملاحظة مهمة / ضع جميع الصور مع ملف الـ EXE في مجلد واحد .
و قولولي إذا الوصلات ما نفعت
الملف الأول
الملف الثاني
الملف الثالث
الملف الرابع
الملف الخامس
لا إله إلا اللهمشروع لتعليم أساسيات لغة الـ ++C :-موضوع لتعليم الفيجوال بيسك 6 :
الوصلات نفعت![]()
مشكور على موضوعك الأكثر من ررراااائع و تسلم يدايك ;-)
شكراً جزيلاً على الموضوع الروعة![]()
ولا تتحجج المرة الجاي بالجامعة
شفناك دائماًعهند سهيل
على كل توقيعك روعة![]()
سلام
بروسلي
العفو و إن شاء الله أكون أفدتك في طلبك .
محمد همام
الله يخليك و شكراً على ردك الجميل و عقبال ما نشوفك قريباً ;-) ( عند سهيل)الرسالة الأصلية كتبت بواسطة محمد همام
شكراً جزيلاً على الموضوع الروعة![]()
ولا تتحجج المرة الجاي بالجامعة
شفناك دائماًعهند سهيل
على كل توقيعك روعة![]()
سلام![]()
لا إله إلا اللهمشروع لتعليم أساسيات لغة الـ ++C :-موضوع لتعليم الفيجوال بيسك 6 :