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

مشكلة فى لعبة ترتيب الأرقام

بدأه mr.beshoy في 30 يونيو 2011 · 8 رد · 567 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اللعبة هى : إن فى 8 أرقام بيظهروا عشوائى من 1 : 8 غير مرتبين و كل ما علينا هو ترتيبهم

اللوحة مقسمة إلى 9 خلايا - مرفق صورة لتوضيح النتيجة التى يجب أن يصل إليها اللاعب .

------------------------------------------------------------------------------------------------

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

فى كل حركة يقوم بها اللاعب عليه بالمقارنة بالنوذج السليم ال هو ( "",1,2,3,4,5,6,7,8)

الطريقة التى اتبعتها هى إنى خزنت النموذج السليم فى list

أما الذى يرتبه اللاعب : كل مرة بيحرك فيها رقم من خلية لأخرى بيخزنه فى List و لو بيحرك رقم و صُدف إنه موجود بيحذفه فى الاول و يخزنه تانى و بعد كده بيعمل sort لل List . و بعد كل حركة بيعمل مقارنة بين ال list للنموذج السليم و الذى يرتبه اللاعب .

ال code مرفق :

ال RightModel class خاص بالنوذج السليم .

ال MoveBlocks class به 3 method خاصيين بالحركة بين الخلايا و المشكلة مش فيهم - المشكلة فى الدوال ()storInLIst - _compareTwoModel()

ال NumbersPuzzelGUI class خاص بعرض المنظر

هتلاقوا PositionsOfNumbers class ده انا كنت مستعمله فى محاولات أخرى غير المحاولة دى لكن فشلت ، أنا محذفتوش يمكن يفيد فى الاستخدام .

و مرفق صورة للنتيجة التى يجب الوصول اليها .

بصراحة كنت عملت طرق تانى غير دى بس كلها كانت محاولات خاطئة - دى تقريباً المحاولة إلى اعتقد قريبة من الحل السليم بس عاوزة شوية تعديل . و حاولت فى الموضوع ده كتير .. بصراحة تعبت فيها :huh: :mellow:

أتمنى تساعدونى فى المشكلة دى

Puzzel.rar

#2

اولا المفروض الـ list بتاعتك يكون فيها من 1 الى 8 وليس الى 9

{1, 2, 3, 4, 5, 6, 7, 8, 9}

تكون كدا

{1, 2, 3, 4, 5, 6, 7, 8}

ثانيا انت فى عمليه المقارنه

من وجهه نظرى انك بتحصل على جميع الlabels وتقارن كل label بالرقم اللى انت عاوزه يكون عليه

ولو وصل فالاخر ان كل الـ labels مقارنه بالارقام اللى عليه تساوى اللى انت عاوزه يقبى انت كدا كسبت

انا عملتها ليك

تفضل

العب بقا وشوف هتكسب ولا لا

Puzzel.zip

بالتوفيق ان شاء الله

Software Developer
Mahmoudkelany.com


 

#3

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

انت عامل انهم المفروض يترتبوا كما فى الصورة المفرقة و لا ايه ؟؟؟

المفروض النتيجة ال يوصلها اللاعب تكون زى الصورة المرفقة ... انت مصممها على كده ؟؟

post-166855-033281900 1309437182_thumb.j

المرفقات
untitled.JPG
#4

خلاص أصبحت أرتبها ..... انت عملتها عكس الرسمة ال كنت عارضها و ده بسبب أختلافات فى ال for loop

بس بص على فكرة لو هتلعبها على الكود وهو كده هتكون معقدة جداً و هتتحل بصعوبة

حضترك فى ال NumbersPuzzelGUI Class

فى ال mousePressed()

غير أول سطرين ال هما ال for loops للسطرين دول :

   for (int x = 0; x <= x_size - 1; x++) {
                for (int y = 0; y <= y_size - 1; y++) {

لان فى ال method compareTwoModel() بتبدا الحلقة من صفر و كنا فى ال mousePressed() بنبدا من آخر خانة !!! فا دى كانت بتصعب الوصول للحل ...

---------------------------------------

لكن أنا عندى سوال :

فى ال method compareTwoModel() اتفقنا لما بيكون فى خليتين متساويتين فى القيمة بنزود قيمة ال total ب 1 .... فرضاً فى بداية اللعبة حركنا الرقم 1 فى المكان المظبوط يبقى ال total أصبح بيساوى 1 ثم فى الحركة ال وراها مباشرة نقلنا الخلية ال فيها القيمة 1 أيضاً للمكان الفاضى فى الحالة دى ال total بيقل و يرجع 0 على أى أساس بيقل ؟؟؟!!!!

شكرأً

بالتوفيق

تم تعديل هذه المشاركة بواسطة mr.beshoy في 30 يونيو 2011 في 17:15

#5
mr.beshoy كتب:

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

انت عامل انهم المفروض يترتبوا كما فى الصورة المفرقة و لا ايه ؟؟؟

المفروض النتيجة ال يوصلها اللاعب تكون زى الصورة المرفقة ... انت مصممها على كده ؟؟

ما انا مش عارف انت ماشى ازاى انا قعدت استشف الموضوع

ولقيت دخلات كتير ف بعضها

انا بصيت للصوره وبدات اشتغل

Software Developer
Mahmoudkelany.com


 

#6
mr.beshoy كتب:

خلاص أصبحت أرتبها ..... انت عملتها عكس الرسمة ال كنت عارضها و ده بسبب أختلافات فى ال for loop

بس بص على فكرة لو هتلعبها على الكود وهو كده هتكون معقدة جداً و هتتحل بصعوبة

حضترك فى ال NumbersPuzzelGUI Class

فى ال mousePressed()

غير أول سطرين ال هما ال for loops للسطرين دول :

   for (int x = 0; x <= x_size - 1; x++) {
                for (int y = 0; y <= y_size - 1; y++) {

لان فى ال method compareTwoModel() بتبدا الحلقة من صفر و كنا فى ال mousePressed() بنبدا من آخر خانة !!! فا دى كانت بتصعب الوصول للحل ...

---------------------------------------

لكن أنا عندى سوال :

فى ال method compareTwoModel() اتفقنا لما بيكون فى خليتين متساويتين فى القيمة بنزود قيمة ال total ب 1 .... فرضاً فى بداية اللعبة حركنا الرقم 1 فى المكان المظبوط يبقى ال total أصبح بيساوى 1 ثم فى الحركة ال وراها مباشرة نقلنا الخلية ال فيها القيمة 1 أيضاً للمكان الفاضى فى الحالة دى ال total بيقل و يرجع 0 على أى أساس بيقل ؟؟؟!!!!

شكرأً

بالتوفيق

تمام الحمدلله :)

ما انا بقولك انا استشفيت لحد ما وصلت للحل اللى انا عاوز اعمله

وعرضت لك العمودين تحت فى الoutput

فاى تعديل او اى حاجه تانيه دا بيكون ليك بقا :)

كما يقال لينا من الدكتور لم يغلط ف اشاره ولا حاجه يقولنا دا dirty work :D

فى كل مره بينقل فيها الارقام بيعمل عملية الcheck يعنى كل مره يشوف انت وصلت للـ 9 ولا لا

لانه بيعد من الاول تانى فى كل مره تحرك فيها

فبالتالى كل مره هتلاقيه بيعد من الاول على الكل ويعمل عمليه الفحص

Software Developer
Mahmoudkelany.com


 

#7
اقتباس

فى كل مره بينقل فيها الارقام بيعمل عملية الcheck يعنى كل مره يشوف انت وصلت للـ 9 ولا لا

لانه بيعد من الاول تانى فى كل مره تحرك فيها

فبالتالى كل مره هتلاقيه بيعد من الاول على الكل ويعمل عمليه الفحص

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

يعنى انا حركت ال الرقم 1 أو 2 أى رقم فى المكان السليم اصبح ال total = 1

ثم حركت نفس الرقم لمكان غير سليم نقص ال total فاصبحت بتساوى 0 مرة أخرى .... مفيش شرط واضح يثبت انه نقص فعلا الtotal . ( معلش وضحلى كويس الجزئية دى )

ثم فى حاجة تانى عاوز اقولها هو كل مرة بيدخل الmethod compareTwoModel() بيبدأ من total = 0 - لكن ال بيحصل لو فى ارقام فى أماكنها الصحيحة بيحتفظ بقيم ال total القديمة و ليكن = 5 كيف ده و هو اصبح ال total فى دخوله فى بداية الدالة = 0 ؟!!!!

فاهم مشكلتى كويس :wacko: ؟؟؟

شكراً

تم تعديل هذه المشاركة بواسطة mr.beshoy في 30 يونيو 2011 في 19:04

#8

ما انا بقولك انه فى كل مره بيبدا يفحص كل الخانات

ولو الخانه دى مطابقه بيزود واحد

مش مطابقه مش بيزود

لحد ما يخلص خالص

يشوف هل الtotal بيساوى 9 اللى هيا ال9 خانات صحيحه

يقوم بظهور رساله الترحيب غير كدا بيطبع رساله nootttttttt

انما مش بينقص ولا حاجه

اتمنى انك تكون فهمتنى

Software Developer
Mahmoudkelany.com


 

#9

خلاص فهمت الموضوع ماشى كيف ... تعبتك يا بابشمبرمج .

بالتوفيق إن شاء الله

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