• 0
Guest MKSoft

لعبة Xo على الشبكة من تصميمي

سؤال

لقد أنهيت شوطا لابأس به بفضل الله أولا و أخير , من تصميم لعبة XO , بحيث يتم اللعب بين الأشخاص من خلال شبكة محلية , حيث استخدمت التكنولوجيا الأكثر من رائعة في بناء التطبيقات الموزعة , و التي تسمى ب Remote Method Invocation ذات الاختصار RMI .

و أنا الآن أقدم لكم اللعبة كهدية متواضعة مني , ولكم كل الحق في تعديلها و تطويرها و تحديثها , حيث أنها تحتاج لبعض التحديثات و التعديلات , لكن المهم في النهاية هي الفائدة العامة .

سيناريو اللعبة The Scenario of the XO Game

طريقة الاستخدام بسيطة جدا .

* يقوم اللاعبون بعملية تسجيل الدخول , كما يظهر في الشكل .

post-9738-12643534124124_thumb.jpg

post-9738-12643534199568_thumb.jpg

* تظهر جميع أسماء الأشخاص المتواجدين ضمن الشبكة المحلية و الذين قاموا بعملية تسجيل دخول .

post-9738-12643534300297_thumb.jpg

* يقوم شخص معين بدعوة لاعب لبدء لعبة جديدة من خلال اختياره من القائمة كما يظهر في الشكل .

post-9738-12643534411051_thumb.jpg

* يقوم السير فر بإرسال دعوة للاعب المستهدف , و يكون كل الحق لهذا اللاعب في قبول أو رفض اللعبة .

* في حالة قبول الدعوة يتم فتح نافذة اللعبة بين طرفين الاتصال , وهكذا .

post-9738-12643534525612_thumb.jpg

ملاحظة //

وكما أسلفت , تحتاج اللعبة لبعض التحسينات , و إن شاء الله أقوم بتحسين الأداء فيها , وتطوير إمكانياتها .

ايضا انا لم أجرب اللعبة على شبكة محلية , و لذلك ارجوا منكم محاولة تجربتها على شبكة محلية .

كيفية تشغيل اللعبة ..

عليكم في البداية تجهيز مسار التشغيل , والذي يتمثل في تحديد اماكن rmiregistry , وايضا مشغلات لغة الجافا الخاصة بتطبيقات Rmi , وذلك من خلال اتباع الخطوات التالية :

* حدد مسار JDK الخاص بلغة الجافا , و غالبا يكون هذا المسار , في حال ان تركنا JDK باختيار مساره اثناء التثبيت C:\Program Files\Java\jdk1.7.0\bin , الذي يهمنا هنا هو المجلد المعروف باسم bin .

قم بنسخ هذا المسار .

* بالزر الأيمن لأيقونة جهاز الكمبيوتر ,,,, اختر منها خصائص .

* قم باختيار تبويب خيارات متقدمة من النافذة التي تظهر .

* في الأسفل اضغط على زر متغيرات البيئة .

* تظهر نافذة جديدة ,,, اضغط على زر جديد الموجود بالأسفل و الذي يكون ضمن اطار متغيرات النظام .

* تظهر نافذة اخرى ... قم بادخال في خانة الإسم الكلمة PATH , وفي خانة القيمة المسار الذي قمنا بنسخه سابقا و هو

C:\Program Files\Java\jdk1.7.0\bin .

* الان قم بتشغيل الملف ذو الامتداد bat و الذي يحمل الإسم Server و الموجود داخل المجلد Server Files , ثم انتظر قليلا ل 20 ثانية تقريبا .

* بعد ذلك قم بتشغيل الملف الموجود داخل Client Files ذو الامتداد bat ايضا و الذي يحمل اسم Client .

* إذا اردت ان تشغل اكثر من Client , فما عليك سوى الضغط عدة مرات على ملف التشغيل Client .

المرفقات ::

Project.rar

تم تعديل بواسطه علاء الصالحي
إعادة رفع الصور في الموضوع
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

22 إجابة على هذا السؤال .

  • 0

بالبداية اهنئ على ما قمت به ...كانت لي تجربة في هذه اللعبة لكن في #C ...

لي عودة بعد ان اطلع على الكود جيد ..فهي من المواضيع المحببة لقلبي

انا لم أجرب اللعبة على شبكة محلية , و لذلك ارجوا منكم محاولة تجربتها على شبكة محلية .

حسب شرحك للعبة لعبتك لا تعتمد على شبكة peer to peer ارى ان هناك سيرفر سيتجمع به المشتركين

حسب نظرة سريعة للكود ..لم ارى server information يجب وضعه لتحديد مجال الرؤية ....

لا ادري اذا كان هناك اسلوب اخر متبعه لم انتبه ...لكن لي عودة

بالتوفيق

الله معك..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

المشكله يمر 250 متفرج ولاواحد يكتب حرف أوحتى يكلف نفسه يدعس زر الشكر

بصراحه رهيبه مشكورحبيبي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

بصراحة شغل جميل جداً

من ناحية برمجة الشبكات والواجهات

لكني لا أحب موضوع استخدام الثوابت مع المصفوفات arrays

وأفضل أن أرى تكرارات

أقترح عليك أن تضيف الكمبيوتر كلاعب

إن كان لديك معرفة في الذكاء الصناعي

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بالنسبة للأخ shado

بالبداية اهنئ على ما قمت به ...كانت لي تجربة في هذه اللعبة لكن في #C ...

لي عودة بعد ان اطلع على الكود جيد ..فهي من المواضيع المحببة لقلبي

شكرا كثيرا shado , وأنا بانتظارك .

حسب شرحك للعبة لعبتك لا تعتمد على شبكة peer to peer ارى ان هناك سيرفر سيتجمع به المشتركين

كلامك سليم 100% , حيث انها تشبه الماسينجر في التصميم , حيث يوجد جهاز خادم , وباقي الأشخاص هم كلاينتس (Client - Server)

حسب نظرة سريعة للكود ..لم ارى server information يجب وضعه لتحديد مجال الرؤية ....

لا ادري اذا كان هناك اسلوب اخر متبعه لم انتبه ...لكن لي عودة

حقيقة اخي shado , انا لا اعرف تلك الأساليب التي تتبعونها في تصميم هكذا برامج , حيث اني صممتها من وجهة نظري , ربما اكون مقصر , او لم أحسن التصرف في تصميم اللعبة , لكنت اظن ان كل الطرق تؤدي لروما :lol:

تعليق الأخ M.Allaw

لمشكله يمر 250 متفرج ولاواحد يكتب حرف أوحتى يكلف نفسه يدعس زر الشكر

بصراحه رهيبه مشكورحبيبي

شكرا كتير أخ M.Allaw على هذا الدعم النفسي ,, بارك الله فيك .

الأخ عــــــــــــــلاء

بصراحة شغل جميل جداً

من ناحية برمجة الشبكات والواجهات

لكني لا أحب موضوع استخدام الثوابت مع المصفوفات arrays

وأفضل أن أرى تكرارات

أقترح عليك أن تضيف الكمبيوتر كلاعب

إن كان لديك معرفة في الذكاء الصناعي

شكرا اخ علاء على المشاركة , بالنسبة لموضوع الذكاء الصناعي , فإني درست كورس عن هذا المجال في الجامعة , لكن حقيقة لم تكن الفائدة العلمية كبيرة للأسف ..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ماشاء الله أخي محمد ، برامجك جميعها ممتازه في الفكره والتطبيق ،،

لاحظت أن السيرفر أيضا يستدعي دوال من الكلاينت TTTClientInterface فهل يمكن أن نجعل جميع الداول في الملف TTTClientInterface في السيرفر فقط، بمعني أن الكلاينت هو الذي يرسل ويستدعي فقط من السيرفر وليس العكس..

جهد تشكر عليه ، والى المزيد من المشاريع الجيده ،،

بالتوفيق ،،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

فهل يمكن أن نجعل جميع الداول في الملف TTTClientInterface في السيرفر فقط، بمعني أن الكلاينت هو الذي يرسل ويستدعي فقط من السيرفر وليس العكس..

هذا ما قصدته ..يعني انا لا ارى اعدادات خاصة بالاتصال ..اضن ان اللعبة لن تعمل على شبكة داخلية حتى ولو كانت شبكة من نوع DHCP و workgroup واحدة

انا لم اجرب اللعبة الى الان ...ساجربها في اقرب فرصة ...مجهود رائع

بالتوفيق

الله معك..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا جزيلا لك

ان شاء الله انا قريب من دراسة RMI في الجامعة ولعل عسى استفيد من برنامجك مفتوح المصدر :) بارك الله فيك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم اخواني الكرام ..

عذرا على تنأخري و ذلك بسبب انقطاع التيار الكهربي عن غزة , حيث اني لم ارى نورها ل21 ساعة متواصلة .

تعليق الأخ وجدي

لاحظت أن السيرفر أيضا يستدعي دوال من الكلاينت TTTClientInterface فهل يمكن أن نجعل جميع الداول في الملف TTTClientInterface في السيرفر فقط، بمعني أن الكلاينت هو الذي يرسل ويستدعي فقط من السيرفر وليس العكس..

طبعا يا وجدي بالإمكان ذلك , ولكن الدوال الموجودة في TTTClientInterface , هدفها ان يكون هنا خط اتصال عكسي بين السيرفر و Client , والذي يسمى في مصطلحات الحاسوب باسم Callback .

هذه الفكرة تشبه خطوط اتصال الهاتف , حيث يجب ان يكون في القسم الرئيسي خط اتصال مع كل هاتف , حتى يتمكن المشتركين من الاتصال مع بعضهم البعض .

انظر الصورة

get-11-2008-o80p66679bm.JPG

نلاحظ في الصورة , ان محمد عندما قام بتسجيل الدخول ( كما نشاهد ذلك من خلال الخط الأزرق ) , ايضا قام بارسال وسيلة الاتصال العكسية التي تدل عليه و التي من خلالها يتمكن السيرفر من ايصال رسائل الأعضاء الاخرين اليه ( كما نشاهد لك من خلال الخط الأخصر), ومن خلال هذا الأسلوب سيتمكن كل من إيمان و خالد بالاتصال مع محمد بشكل مستقل و شخصي .

لقد تم انشاء هذا CallBack أو خط الاتصال العكسي من خلال ارسال TTTClientInterface الخاص بكل Client اثناء عملية التسجيل .

أرجو ان تكون وصلت الفكرة .

الأخ shado

انا لا ارى اعدادات خاصة بالاتصال ..

أخي shado إذا كنت تقصد بالإعدادات هي PORT و Socket و IP ... الخ , فهذه الأشياء مخفية في تطبيقات RMI , حيث ان تكنولوجيا Remote Object و المتمثلة في Remote Method Invocation , أخفت صعوبات و تعقيدات Socket عن المبرمجين , حيث اصبحوا يتعاملون مع Remote Object , وكأنها Local .

اضن ان اللعبة لن تعمل على شبكة داخلية حتى ولو كانت شبكة من نوع DHCP و workgroup واحدة

حقيقة أخي , انت تخيفني بكلامك هذا ,, هل ممكن ان تشرح لي السبب ؟؟

مجلد جديد

شكرا جزيلا لك

ان شاء الله انا قريب من دراسة RMI في الجامعة ولعل عسى استفيد من برنامجك مفتوح المصدر regular_smile.gif بارك الله فيك

أهلا وسهلا بك أخي الكريم .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عذرا على تنأخري و ذلك بسبب انقطاع التيار الكهربي عن غزة , حيث اني لم ارى نورها ل21 ساعة متواصلة

كان الله في عونكم ...ان الله مع الصابرين ....مها طال الضلام لا بد ان تشرق الشمس

أخي shado إذا كنت تقصد بالإعدادات هي PORT و Socket و IP ... الخ , فهذه الأشياء مخفية في تطبيقات RMI , حيث ان تكنولوجيا Remote Object و المتمثلة في Remote Method Invocation , أخفت صعوبات و تعقيدات Socket عن المبرمجين , حيث اصبحوا يتعاملون مع Remote Object , وكأنها Local .

كان لي تجربة في احد هذه التقنيات وهي jini وقد كتبت موضوع في هذا القسم بعنوان ما هي Jini كان المشروع عبارة عن استثمار diveces على الشبكة

من كمرة وطابعة موجودة على السيرفر يستطيع استثمارها اي شخص على الشبكة ...كان المتطلبات وضع IP للطابعة والكمرة التي تحوي كرت شبكة بالتالي تحوي IP

قرأت عن RMI و corba لم انتبه الى ما قلت له في هذا الموضوع ....ساتأكد من الموضوع ...يبدو انها قد فاتتني هذه المسألة ...

لكن في مشروعي الذي عملته كانت المتطلبات السابقة في اقتباسك واجب وليست استحباب

ضن ان اللعبة لن تعمل على شبكة داخلية حتى ولو كانت شبكة من نوع DHCP و workgroup واحدة
حقيقة أخي , انت تخيفني بكلامك هذا ,, هل ممكن ان تشرح لي السبب ؟؟

على كل حال على ما تكلمت عنه من اعدادات الاتصال التي تكون biuldin اضن انه لا مشكلة ..لاننا وقعنا في الموضوع

السبب الذي اتوقعه هوا عدم القدرة على تحديد المجال للشبكة وان تم التحديد سيكون تعب بالموضوع او اخذ فترا زمنية في عملية الاتصال ..

وخصوصي مثلا اذا كانت الشبكة متصلة بالانترنت ... انا ساحاول قريبا ان اجرب اللعبة على شبكة حيث تتوفر البئة على الاجهزة لكن هناك تعقيد ما في عملية تشغيل اللعبة :P

بالتوفيق ..

الله معك..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
كان لي تجربة في احد هذه التقنيات وهي jini وقد كتبت موضوع في هذا القسم بعنوان ما هي Jini كان المشروع عبارة عن استثمار diveces على الشبكة

من كمرة وطابعة موجودة على السيرفر يستطيع استثمارها اي شخص على الشبكة ...كان المتطلبات وضع IP للطابعة والكمرة التي تحوي كرت شبكة بالتالي تحوي IP

حقيقة انا لم استدخدم ابدا تقنية Jni , ومعلوماتي عنها , انها تكنولوجيا ليست للتطبيقات الموزعة , وانما هي عبارة عن واجهة لتمكين مبرمجي الجافا من تطوير التطبيقات التي تصعب برمجتها و تصميمها باستخدام لغة الجافا , مثل التعامل مع Hardware و اي عتاد مادي اخر.

قرأت عن RMI و corba لم انتبه الى ما قلت له في هذا الموضوع ....ساتأكد من الموضوع ...يبدو انها قد فاتتني هذه المسألة ...

لكن في مشروعي الذي عملته كانت المتطلبات السابقة في اقتباسك واجب وليست استحباب

بالنسبة ل RMI تشبه Corba حيث كل منهما يستخدم لتصميم الأنظمة الموزعة , ولكن الفرق بأن التطبيقات المصمة على Corba , تسمح بالتعامل مع اكثر من تطبيق مختلف في البنية البرمجية له , مثل ربط برنامج مكتوب بلغة C++ مع برنامج مكتوب بلغة الجافا و هكذا .

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

بصراحة corba معقدة بما فيه كفاية

وأعتقد أنه قل ما تحتاج لها

خصوصاً مع وجود لغة توصيف البيانات xml

على العموم لو كان هناك أي خطأ في كلامي

فبرجاء التعديل علي

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

صحيح كلامك علاء ، لكنها لا تستخدم XML بل IDL - Interface Definition Language وهي قريبه من سي++ .

وشكرا لتوضيحك أخي محمد .

وأعانكم الله وفرَج عليكم ..

بالتوفيق ،،

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

اهلا من جديد ..عدنا.

تقنية RMI لاستدعاء الطرائق عن بعد حيث تجعل من الغرض البعيد وكأنه غرض محلي موجود في نفس مكان وجود الغرص المستدعي

مبدأ العمل :

تعتمد على ما يسمى stub , والـskeleton

stub هو عبارة عن صف وكيل للصف البعيد يعمل من جانب الزبون وهوا الذي يقوم بارسال طلبات استدعاء الـتmethod الى الغرض (object) البعيد من جانب الخادم ..

اما skeleton فهو صف (class) " فئة بشان ما تزعل بعض الفئات " يعمل من جانب المخدم وهوا من يقوم فعليا باستلام طلبات الاستدعاء عن بعد وتمريرها الى object المناسب ومن ثم يعيد النتائج الى stub من جانب الزبون

نلاحظ اخ MKSoft ان الرسمة التي وضعتها التي تحوي خالد ومحمد وعمر وما بعرف مين تنقص موضوع معين

التعامل ليس بين الزبون والسيرفر مباشرة ...بل هناك المسجل الذي يقوم السيرفر بانشاء object فيه ويسجله باسم اختياري في مسجل RMI

والزبون يطلب من المسجل عن بعد

get-11-2008-h16m5m8h9uw.JPG

هذه الميزة التي دعتنا نبتعد عن information server الذي كلمتك عنها ....

الان اتوقع انها ستعمل على شبكة لكن سنصل الى الهدف ببطئ ...وذلك بسبب تحديد المجال ..

هذه التقنيات جيدة ولكن الsocket اسرع بكثير

صحيح كلامك علاء ، لكنها لا تستخدم XML بل IDL - Interface Definition Language وهي قريبه من سي++ .

وشكرا لتوضيحك أخي محمد .

وأعانكم الله وفرَج عليكم ..

اضافة الى اساتذتنا , تعتمد corba على البروتوكول IIOP الذي يعتمد على TCP/IP

اما بالنسبة لموضوع IDL فهي ليست عيب ..بل هي ميزة حيث تمكننا corba مثلا من كتابة جزء من المخدم بclases Corba الخاصة بالجافا وجزء من الزبون بــclasses c ++

وهي لها نفس اليه عمل RMI تقريبا

بالتوفيق ..

الله معكم..

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا اخواني جميعكم على الإهتمام . فهذا شرف كبير لي .

حقيقة اريد ان أوجه رسالة شكر و تقدير خاص ل 3 اشخاص , الذين بفضل الله اولا ثم بفضلهم استفدت كثيرا جدا . وهم :

اخي الكبير و استاذي أبو الفؤاد , الذي لا انسى فضله الكبير في مساعدتي في RMI و الذي بفضله تمكنت من تصميم مشروع تخرجي باستخدام هذه التنقنية .

أيضا أخواي الكبيرين علاء الصالحي , و وجدي عصام , الذين استفدت كثيرا منهم في امور متنوعة و بخاصة في تطبيقات Threads .

حيث قال صلى الله عليه وسلم ( من لا يشكر الناس لا يشكر الله ) ... أو كما قال صلى الله عليه وسلم .

ولذلك كل الاحترام و التقدير لهؤلاء الأساتذة المحترمين , وجزاهم الله عني خير الجزاء .

تم تعديل بواسطه MKSoft
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
اخي الكبير و استاذي أبو الفؤاد , الذي لا انسى فضله الكبير في مساعدتي في RMI و الذي بفضله تمكنت من تصميم مشروع تخرجي باستخدام هذه التنقنية .

أيضا أخواي الكبيرين علاء الصالحي , و وجدي عصام ,

ياحظك يا وجدي اسمك أكبر من اسمي :(

أخ محمد هل لديك أية معلومات عن أبو الفؤاد؟

أتمنى لو نعود نراه معنا في المنتدى

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور

سوف تتم التجربه........

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حبيت استفسر من الخبراء هل الsocket أفضل هنا ام لاوكيف يستخدم؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

حبيت استفسر من الخبراء هل الsocket أفضل هنا ام لاوكيف يستخدم؟

استخدام Socket أسرع من استخدام RMI , لكن هذا البرنامج , لا أظن أن عامل السرعة فيه كان مهما جدا جدا , لذلك تم استخدام RMI

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

عمل رائع أستاذ محمد .. كلها كام يوم و أرجع للبرمجة تانى ..

شكراً

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

محمد هل لديك الصور التي كانت في هذا الموضوع

لأن الموضوع تشوه بعد أن حذف المزود الصور :(

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

محمد هل لديك الصور التي كانت في هذا الموضوع

لأن الموضوع تشوه بعد أن حذف المزود الصور :(

تحياتي

حقيقة حاولت أن أعدل الصور لكن لا أملك الصلاحية لذلك .

كيف أقوم برفعهم يا أستاذ علاء ؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

طيب ارفعهم على أي موقع ثاني وأعطني الوصلة

وأنا بإذن الله سأقوم بعملية إعادة الرفع على الخادم الخاص بالمنتدى

تحياتي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .