محرك ألعاب الورق السلام عليكم ورحمة الله وبركاته هذا المحرك الجميل على الأقل بالنسبة لي لقد تم بناءه على 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();}
#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();}