الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

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

بدأه MKSoft في 10 نوفمبر 2008 · 22 رد · 10,241 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لقد أنهيت شوطا لابأس به بفضل الله أولا و أخير , من تصميم لعبة 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

تم تعديل هذه المشاركة بواسطة علاء الصالحي في 24 يناير 2010 في 20:19 — السبب: إعادة رفع الصور في الموضوع

1
#2

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

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

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

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

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

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

بالتوفيق

الله معك..

#3

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

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


HeartOutputStream myHeart;
OutputStream myHeartOutStream;

myHeartOutStream = MAllaw.getHeart().getOutputStream();
myHeart = new HeartOutputStream(myHeartOutStream);

while(myHeart.isStillBeating())
myHeart.write("I ♥ Java");

#4

السلام عليكم

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

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

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

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

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

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

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#6

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

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

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

بالتوفيق ،،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

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

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

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

بالتوفيق

الله معك..

#8

شكرا جزيلا لك

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

#9

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

عذرا على تنأخري و ذلك بسبب انقطاع التيار الكهربي عن غزة , حيث اني لم ارى نورها ل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 بارك الله فيك

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

#10
اقتباس
عذرا على تنأخري و ذلك بسبب انقطاع التيار الكهربي عن غزة , حيث اني لم ارى نورها ل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

بالتوفيق ..

الله معك..

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

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

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

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

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

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

#12

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

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

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

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

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

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#13

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

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

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

بالتوفيق ،،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#14

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

تقنية 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 تقريبا

بالتوفيق ..

الله معكم..

#15

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

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

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

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

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

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

تم تعديل هذه المشاركة بواسطة MKSoft في 12 نوفمبر 2008 في 18:27

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

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

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

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

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

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#17

مشكور

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

#18

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

#19
بربلم كتب:

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

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

#20

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

شكراً

#21

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

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

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#22
علاء الصالحي كتب:

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

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

تحياتي

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

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

#23

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

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

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة