بتـــــاريخ : 2/25/2011 7:54:31 PM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 927 0


    محرك ألعاب الورق

    الناقل : elmasry | العمر :42 | الكاتب الأصلى : خبير QT | المصدر : www.arabteam2000-forum.com

    كلمات مفتاحية  :
    محرك ألعاب الورق

    محرك ألعاب الورق
    السلام عليكم ورحمة الله وبركاته
    هذا المحرك الجميل على الأقل بالنسبة لي لقد تم بناءه على Qt هو يتكون من 4 فئات
    1- الفئة الرأس playPaper
    وتحفظ بيانات ورقة اللعب مثلا رقم الورقة من 1 الى 13 حيث يمثل الشيبة ونوعها الذي يأخذ اما c او d او h او q وبها معامل "==" في حال المقارنة مع ورقة مطابقة لها في الرقم والنوع تعيد true بالإضافة الى دوال مثل aboveAaa و underAll لجعل ورقة اللعب في أسفل الأوراق او أعلاها ويتم توفير لكل ورقة لعب parent سوف يكون عبارة عن نقطة في منتصف ورقة اللعب ولايمكن رؤيتها وسوف تفيدنا في اجراء الحركات وهناك حالتين لأوراق اللعب حالة ورقة اللعب كانت مفتوحة أو كانت مغلقة وكل لها صورة انت تحددها راجع الدوال في ملف palayPaper.h.
    2- فئة الخوارزميات MPapers
    وهي تقوم بترتيب أوراق اللعب تصاعديا وتنازليا او حتى ترتيبها ترتيب عشوائي(تخبيص)
    ويمكنك أيضا البحث عن ورقة اما عن طريق الرقم او النوع والتي تعيد QList لمؤشرات playPaper تطابق ماتريد البحث عنه وأيضا وفي دالة البناء تقوم هذه الفئة بصنع 52 playPaper بخوارزمية صغيرة وسوف تقوم بقراءة البيانات من خلال الصور في المجلد المرفق مع المحرك ويمكنك الحصول على QList مجموعة الأوراق بإستخدام الدالة getPapers() او يمكنك إضافة مجموعة أوراق لتطبق بعض الخوارزميات
    بإستخدام الدالة setPapers() .

    3- فئة الحركات MMoves
    هي ليست حكرا لحركات الفئة playPaper بل لجميع مايرث من QGraphicsItem ولكن وبما اننا نتحدث عن فئة اوراق اللعب فإن فئة الحركة هذه سوف تأخذ الأب لكل playPaper وكما ذكنا مسبقا فإن موق هذا الأب الغير مرئي هو وسط الصورة ليتم تنفيذ الجركات وهناك نوعين من الحركات حركات تتجاهل زاوية الشكل وحركات تتماشى مع الزاوية وتمشي تبعا لها ولكل من هذه الحركات سرعة وتبعا للسرعة سوف يحدد ال timer في الحقيقة انت لن تتعامل مع مؤقت او غيره فأنت فقط طضه اين تريد ورقة اللعب ان تتحرك وما هي مقدار السرعة والتي تشمل حركات الدوران والتمدد والتقلص .

    مثال على ماسبق

    #include <QtGui>
    #include "papers.h"
    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    QGraphicsView *GV=new QGraphicsView;
    QGraphicsScene *scene=new QGraphicsScene;
    scene->setSceneRect(QRect(0,0,500,800));
    GV->setScene(scene);
    MPapers papers;
    papers.sort(MPapers::shuffle);
    playPaper* paper=papers.getPapers().at(0);
    scene->addItem(paper->parentItem());
    paper->getMoves()->move(paper->parentItem(),300,500,720,1,50);
    GV->show();
    return a.exec();
    }

    Posted Image
    4- فئة خوارزميات وحركات البكسلات وهي تتحكم مابداخل العنصر أي صورة غهي تعطيك حركات مشابهة لتلك المتوفرة في الباوربوينت وهي مع الفئة السابقة تعطي لك منظرا جميلا هناك الكثير من الحركات يمكن تنفيذها ولكن من اهمها هي الدالة overPix والتي توفر لك 4 حركات عن طريق التابع التعدادية حيث تقوم بغظهار صورة فقوق صورة مهما كان اختلاف حجم الصور فهي تقوم بتنسيقها لتناسب العنصر ومن ثم تقوم بتقطيع الصورة الى صفوف وأعمدة أنت تحددها فمثلا لو حددت 10 صفوف ومثلها أعمدة فينتج لديك 100 قطعة صغيرة انظر المثال
    #include <QtGui>
    #include "papers.h"
    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    QGraphicsView *GV=new QGraphicsView;
    QGraphicsScene *scene=new QGraphicsScene;
    scene->setSceneRect(QRect(0,0,500,500));
    GV->setScene(scene);
    MPapers papers;
    papers.sort(MPapers::shuffle);
    playPaper* paper=papers.getPapers().at(0);
    scene->addItem(paper->parentItem());
    paper->getMoves()->move(paper->parentItem(),200,200,720,1,50);
    paper->getPixMoves()->overPix(paper,10,10,2,paper->getPathCloseState(),MPixMoves::upAndButtom);
    GV->show();
    return a.exec();
    }

    Posted Image

    في حال وجود افكار او تستطيعون المساعدة فإنه يسرني ان استقبل آراءكم ومساعداتكم
    وفي امان الله محرك العاب الورق في المرفقات
     
    ملف مرفق(ملفات)
     
    ملف مرفق  playing_paper_engine.zip (224.9كيلو )

    كلمات مفتاحية  :
    محرك ألعاب الورق

    تعليقات الزوار ()