النتائج 1 إلى 5 من 5
الموضوع:

لعبه في c++

الزوار من محركات البحث: 38 المشاهدات : 856 الردود: 4
جميع روابطنا، مشاركاتنا، صورنا متاحة للزوار دون الحاجة إلى التسجيل ، الابلاغ عن انتهاك - Report a violation
  1. #1
    من أهل الدار
    мᾄḋʀἶḋ'ṩ ʛἶʀl
    تاريخ التسجيل: March-2014
    الدولة: Iraq,Thi-Qar
    الجنس: أنثى
    المشاركات: 3,271 المواضيع: 329
    صوتيات: 7 سوالف عراقية: 0
    التقييم: 1197
    مزاجي: :)
    المهنة: programmer
    موبايلي: IPhone 8Plus
    آخر نشاط: 21/February/2020
    مقالات المدونة: 3

    Smileys Beating And Fighting لعبه في c++

    مبدأ عمل اللعبة : قبل أن نبدأ يجب أن أعطيكم ما الشيء الذي سنبني عليه برنامجنا، و هذا ما أسميه "Plus ou moins" . المبدأ هو :
    1- الجهاز يختار عشوائيا رقما من 1 إلى 100 .
    2- يطلب منك أن تخمن رقما و بالتالي ستختار بدورك من 1 إلى 100.
    3- يقوم الجهاز بمقارنة الرقم الذي كتبته بالرقم الغامض، ثم يقول لك ما إن كان الرقم الغامض أصغر أو أكبر من الرقم الذي اخترته أنت.
    4- ثم يقوم الجهاز بإعادة طلب الرقم منك
    5- يقول لك ما إن اقتربت منه يعني الرقم الغامض أصغر أو أكبر من الرقم الذي اخترته أنت المرة الثانية
    6- و هكذا تستمر العملية حتى تجد أنت ذلك الرقم .

    و الهدف من اللعبة هي أن تجد الرقم الغامض في أقل عدد ممكن من المحاولات ;)
    و هذا ما يجب أن تكون عليه اللعبة في النهاية بطبيعة الحال :

    Quel est le nombre ? 50
    C'est plus !
    Quel est le nombre ? 75
    C'est plus !
    Quel est le nombre ? 85
    C'est moins !
    Quel est le nombre ? 80
    C'est moins !
    Quel est le nombre ? 78
    C'est plus !
    Quel est le nombre ? 79
    Bravo, vous avez trouve le nombre mystere !!!
    - إختيار رقم عشوائي :
    لكن كيف نقوم بوضع الجهاز ليختار رقم عشوائي ؟ لم نتعلم هذا !
    هذا صعب قليلا بالنسبة للجهاز، صحيح هو يستطيع القيام بعمليات حسابية لكنه لا يتمكن من اختيار رقم عشوائيا ! و لهذا كي نقوم بهذا يجب أن نبرمج الجهاز على عمليات متعددة، و هنا نميز حلين :
    1- إما أن تكون مع صديقك و أنت تكتب بالاستعانة بالدالة scanf رقم معين من اختيارك ( بدل الجهاز ) دون أن يراك صديقك و لدى تشغيل البرنامج تعطيه الدور ليجد الحل .
    2- أعطيكم طريقة ثانية لجعل الجهاز يختار وحده الرقم و بهذا توفر عليك مشقة احضار صديقك و تلعب أن فقط دون زميل ثانٍ.

    طبعا سنقوم بالاختيار الثاني و لكن إن أردتم تجريب الحل الأول فلن يمنعكم أحد ( لكن لاحقا ليس في درسي خخخ ) .
    لاختيار رقم عشوائي نستعمل الدالة rand(). و هي تسمح باختيار رقم عشوائيا لكن نحن هنا نريد تحديدا واضحا بين 1 و 100، يعني إن لم نكن نعرف نهاية و حدود الأرقام يصبح الأمر معقدا كثيرا !

    للقيام بذلك نكتب:
    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;



    في السطر الأول الذي بـ:srand ، يطلب رقما عشوائياً، و nombreMystere هي متغيرة تحمل قيمة الرقم العشوائي .
    التعليمة srand لا يجب أن تشغّل إلا مرة واحدة ( في بداية البرنامج ) ، فوجب وضع srand مرة واحدة في البداية أكرر مرة واحدة . بعدها يمكنكم بواسطة الدالة rand() اختيار الرقم العشوائي، و لا يجب أن يقرأ جهازكم التعليمة srand مرتين ( أكرر مجددا ) .
    MAX و MIN هما ثابتان، الأول هو الرقم الأقصى (100) و الثاني هو الرقم الأدنى (1)، و أنصحكم بتعريف الثابتين في بداية البرنامج هكذا :

    const int MAX = 100, MIN = 1;



    ( من أجل رقم عشوائي محصور بين 1 و 100 ) .

    - المكتبات بالـ:include

    كي يشتغل برنامجكم بشكل صحيح، يجب أن تشملوا ثلاث مكتبات stblib و stdio و time ( الأخيرة تستعمل من أجل الأرقام العشوائية )، يجب إذن أن يبدأ برنامجكم بالتالي :

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>




    - يكفي شرحا !!
    طبعا يجب أن أتوقف هنا لأنه لو أكمل سأعطيكم اللعبة كاملة ههه ، أعتقد بأنني شرحت لكم مبدأ عمل اللعبة، و أعطيت لكم معلومات عما كان ينقصكم أقصد اختيار الارقام العشوائية، و بإعطائكم صورة عن الواجهة للعبة أعتقد بأن كل شيء واضح، و كل شيء أوردته في ماسبق من دروس فهيا انطلقوا في برمجة أول لعبة لكم !!!

    - التصحيح :
    توقفوا ! سأجمع الأوراق =) ، إن برمجة هذه اللعبة سهل للغاية، و هناك عدة طرق للتوصل لنفس النتيجة فلكل واحد أسلوبه البرمجي و هذا ما سأطلعكم عليه هو أسلوبي .
    - تصحيح كود اللعبة "Plus ou Moins" أي " أكثر أو أقل "
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>

    int main ( int argc, char** argv )
    {
    int nombreMystere = 0, nombreEntre = 0;
    const int MAX = 100, MIN = 1;
    // Génération du nombre aléatoire
    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    do
    {
    // On demande le nombre
    printf("Quel est le nombre ? ");
    scanf("%d", &nombreEntre);
    // On compare le nombre entré avec le nombre mystère
    if (nombreMystere > nombreEntre)
    printf("C'est plus !\n\n");
    else if (nombreMystere < nombreEntre)
    printf("C'est moins !\n\n");
    else
    printf ("Bravo, vous avez trouve le nombre mystere !!!\n\n");
    } while (nombreEntre != nombreMystere);
    return 0;
    }


    - اللعبة مع كودات السورس : لمن يهمه أمر تحميل اللعبة مع الكودات فقد رفعتها على الميغا أبلود :
    ستجدون ملف edy program بداخله ملفان واحد اسمه Executable به اللعبة باسم plusoumoins و الثاني اسمه Sources فيه ملف وحيد اسمه main.c .
    لا تدخل مباشرة في الملف main.c بل أدخل أولا للبرنامج Code::Blocks و ابني مشروعا جديدا فارغا ( طبعا كونسول ) و ما إن يتم أطلب من البرنامج إدخال الملف main.c
    - تفسيرات :
    سأفسر لكم الآن الكود الخاص بي من الأعلى إلى الأسفل :
    Les directives de préprocesseur => توجيهات المعالج القبلي :
    هما الأسطر في الأعلى التي تبدأ بالدياز # و هي تقوم بشمل المكتبات التي نحتاج إليها . و قد أعطيتها لكم في أثناء طرح التمرين فآمل أن لا تكونوا قد نسيتموها و بدأتم في اللخبطة !

    Les variables => المتغيرات :
    لم نحتج الكثير منها سوى (nombreEntre) و الثانية التي تسمح للجهاز باختيار رقم عشوائي (nombreMystere).
    و قد قمت كذلك بتعريف الثوابت كما ذكرت في بداية الـ:TP، و هي تسمح بتغيير صعوبة اللعبة فبدل 100 مثلا نضع 1000 للـ:MAX. يعني يكفي التعديل على هذا السطر و إعادة التشغيل .

    La boucle => الحلقة :
    لقد اخترت الحلقة do... while . طبعا إن الحلقة while يمكنها أن تشغل لعبتنا لكن وجدت بأن الـ:do ... while تساعدني أكثر و لكن شخص أسلوبه !
    في كلّ دورة إذا من الحلقة نطلب من الجهاز إدخال الرقم، ثم يتم تخزين الرقم الذي اختاره في المتغيرة nombreEntre . بعدها نقارن المتغيرة السابقة بالمتغيرة nombreMystere و هنا نجد ثلاث احتمالات :
    1- يكون الرقم الغامض أكبر من الرقم الذي كتبته و بالتالي تظهر على الشاشة العبارة "C'est plus !" يعني " إنه أكبر ! " .
    2- يكون الرقم الغامض أصغر من الرقم الذي كتبته و بالتالي تظهر على الشاشة العبارة "C'est moins !" يعني " إنه أصغر ! " .
    3- يكون الرقم الغامض مساويا لما كتبت و بالتالي تظهر على الشاشة العبارة "Bravo vous avez trouvé !"

    وجب أن تضع شرطا للحلقة، و هذا سهل : تواصل الحلقة مادام الرقم الذي تم ادخاله لا يساوي الرقم الغامض . و ما إن يتم إدخال الرقم المطلوب تتوقف الحلقة و بالتالي ينتهى البرنامج هنا :) .
    أفكار للتطوير
    لن أوقف الدرس هنا بالطبع، فمعي كلما تقتنعون بشيء أزيدكم قناعة فيه، احم احم أقول لكم مجددا بأنني أطلب منكم أحيانا التعديل على الكودسورس على سبيل التغيير و هذا كي تتدربوا فقط و اعلموا أن التدرب هذا يعطيكم العقلية البرمجية، فالخطأ الكبير الذي سترتكبونه هو إذا كنتم تفهمون الدروس و لكن في التطبيق تعجز أياديكم على كتابة سطر واحد، قلت ذلك و أكرره.

    • لنتخيل أن لي فكرة جميلة تشبه فكرتنا السابقة .. لكن قبل ان أواصل لن أعطيكم الحل لو تقطعوا راسي خخخ لا ع الخاص و لا هنا، يجب أن تتدبروا أموركم بنفسكم و لو اظطررتم لدخول مواقع أجنبية هع.
      ضعوا عدادا للـ:"coups" يعني عدد المحاولات، و هي متغيرة تقوم بالإضافة incr في كلّ مرة عندما لا تجدون الرقم الغامض بمعنى آخر في كل مرة ترجعون للحلقة، و عند انتهاء اللعبة يعني يجد اللاعب الرقم المطلوب يكتب له إضافة للـ:bravo العبارة vous avez trouvé le nombre mystère en 8 coups مثلا.
    • دائما تعودنا أنه عندما يجد اللاعب الرقم الغامض يتوقف البرنامج، لماذا لا نجعل البرنامج يسأله ما إن أراد المحاولة مرة ثانية ؟ إن فعلتم ذلك وجب وضع حلقة boucle تشمل تقريبا كل برنامجك، و هذه الحلقة تتكرر مادام اللاعب لم يطلب توقيف البرنامج، و أنصحكم بزيادة متغيرة منطقية اسمها مثلا "continuerPartie" مثبتة في القيمة 1 بالبداية، إذا طلب اللاعب توقيف البرنامج، ترجع القيمة للصفر و يتوقف .
    • ضع مود تعدد اللاعبين يعني بدل لاعب واحد ضع لاعبين ! لهذا ضعوا Menu في البداية لتطلبوا من المستخدم اختيار 1 player أو 2 players و لتعلموا أن الفرق بين النمطين يعني لاعب و لاعبين هو توليد الرقم الغامض، ففي حالة يكون لدينا rand() كما رأينا يكون لدينا في الحالة الثانية scanf !
    • ابتكروا وضعوا مستويات مختلفة لصعوبة اللعبة، و يمكنكم وضع Menu في البداية ليختار المستخدم فيه المستوى و هذا مثال :
      • 1 = بين 1 و 100
      • 2 = بين 1 و 1000
      • 3 = بين 1 و 10000

    و طبعا إذا قمتم بهذا وجب التعديل على الثابت MAX ، طبعا فلا يمكن أن نطلق على القيمة ثابت و هي تتغير بمجرى البرنامج! و لهذا فلتغيروا المتغيرة إلى اسم nombreMaximum و لا تنسوا نزع الكلمة "const" لأنها سر الثابت و ببقاءها يبقى الثابت ! و القيمة الخاصة بالمتغيرة تتغير على حسب المستوى .
    و بهذا أجعلكم لا تضيعون الوقت في الفراغ بل تستغلونه في البرمجة البناءة، يمكنكم وضع الكثير من الافكار الأخرى لتطوير هذه اللعبة و أنا متأكدة بأنه هناك المزيد من الأفكار..
    و هنا ينتهي أول TP لنا في الدورة، اعلموا أن الحصص القادمة منه ستكون أكثر أهمية، و بخصوص التعديل على الكودسورس من أجل التطوير فهذا أمر لازم ان تقوموا به لتطوير قدراتكم البرمجية . و كما قلت لا أريد أسئلة بخصوص التطويرات فقد هيئت لكم الطريق ووجب أنتم أن تفكروا أكثر و تحتكوا بالأجانب ربما هع هع ! و هذا فقط في مصلحتكم كي لا تحصلوا على الخبزة جاهزة إنما تتعبون من أجل تذوق طعمها !!



  2. #2
    من المشرفين القدامى
    سَرمَديّة
    تاريخ التسجيل: August-2014
    الدولة: بغداد
    الجنس: أنثى
    المشاركات: 32,335 المواضيع: 2,167
    صوتيات: 152 سوالف عراقية: 98
    التقييم: 11955
    مزاجي: الحمدلله ، جيد
    المهنة: legal
    أكلتي المفضلة: دولمة
    آخر نشاط: منذ 6 يوم
    مقالات المدونة: 19
    شكرااا

  3. #3
    صديق فعال
    تاريخ التسجيل: July-2014
    الدولة: بغداد .. الكراده
    الجنس: ذكر
    المشاركات: 782 المواضيع: 38
    التقييم: 173
    موبايلي: IPhone
    آخر نشاط: 2/June/2015
    شكرا للجهود المميزه

  4. #4
    من أهل الدار
    мᾄḋʀἶḋ'ṩ ʛἶʀl
    شكرا لكم ع المرور العطر

  5. #5
    صديق مشارك
    الولايه لعلي
    تاريخ التسجيل: August-2014
    الدولة: العراق - البصرة
    الجنس: أنثى
    المشاركات: 83 المواضيع: 2
    صوتيات: 0 سوالف عراقية: 1
    التقييم: 7
    مزاجي: مابين وبين
    أكلتي المفضلة: سمك شوي
    موبايلي: Lenovo
    آخر نشاط: 11/December/2022
    حلوووووو
    اخر مواضيعيطلب وظيفةترحيب

تم تطوير موقع درر العراق بواسطة Samer

قوانين المنتديات العامة

Google+

متصفح Chrome هو الأفضل لتصفح الانترنت في الجوال