شكراً لك على الدرس ... أنتظر الدرس الخامس
شكراً لك على الدرس ... أنتظر الدرس الخامس
السلام عليكم ...
أولاً أعتذر لكم عن تأخري في إكمال الموضوع . حيث مضى أكثر من شهر و لم أكمل أو أضيف أي شيء له
و إن شاء الله راح أكمل الموضوع و راح أضيف الجزء الأول من الدرس الخامس بعد يومين حيث سيكون الدرس مقسم لعدة أجزاء و سوف أضيف كل قسم لوحده بعد كل أسبوع من الذي قبله و إن شاء تستفادوا من الدروس و شكراً .
لا إله إلا اللهمشروع لتعليم أساسيات لغة الـ ++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 :