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

Sudoku Solve مساعدة في برنامج لحل لعبة سودوكو الشهيرة

مغلق
بدأه مبرمج مبتدا في 30 ديسمبر 2007 · 21 رد · 9,045 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

قد تكون فكرة سخيفة :)

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

ذلك لاني لا اعرف استعمال الحلقات التكرارية استعمال كلي

يعني اني مسوي الاكواد طويلة جدا

ولكن هذا لا يهمني :)

المهم لمن لا يعرف لعبة سودوكو قد لا يعرف فكرة البرنامج

واذا اردت ان تعرفها فعليك بالبحث مثل (قوانين سودوكو) في قوقل

___________

انا مسوي 81 تكست

وبسوي 162 تايمر

عشان يسوي rnd الين ما الاعداد كلها ما تكرر وتنحل

لكن هذه الطريقة تاخذ وقت

عندي فكرة لكن اذا طبقتها بتصير الاكواد كبيرة جدا جدا

الفكرة هي

اذا كان التكست مكتوب فيه رقم من قبل المستخدم ينحذف الرقم من rnd

الي ما يفهم المقصود :

انا اعمل rnd 1-9 و اريد حذف كم رقم بكود مختصر كيف ؟؟

السؤال :

انا اعمل rnd 1-9 و اريد حذف ارقام بحيث الارقام المحذوفة هي في تكست اخر بكود مختصر كيف ؟؟

startingprogremmer.jpg
#2

أخي الكريم :

بما ان ارقامك فقط من الواحد الى التسعه فكل ما تحتاج إليه هو Array

بحيث تخزن القيمة المكتوبه في التكست داخل الاراي وتستخدم حلقة تكرارية لمراقبة الاراي إن وجد الرقم أم لا

أي أنه كالتالي :

Dim n(8) As Integer
Dim i As Integer

For i = 0 To 8
  While n(i) <> text1.Text
   If i = 8 Then GoTo notFindME
  Wend
	 GoTo findme
Next i
findme:
 MsgBox "الرقم موجود"
 Exit Sub
notFindME:
 MsgBox "الرقم غير موجودً"

تحياتي

OMANI FOR EVER

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

post-12787-12780191801974.jpg

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

#3
اقتباس
While n(i) <> text1.Text

If i = 8 Then GoTo notFindME

Wend

GoTo findme

ممكن شرح while و wend

____________

اذا تعرف سودوكو انت ملي الارقام وا اضغط على start solving سيبدا بحل اول ستة مربعات وقد يتاخر وانا اريد ان يحل بسرعة

sudoku_solve.rar

تم تعديل هذه المشاركة بواسطة مبرمج مبتدا في 30 ديسمبر 2007 في 09:39

startingprogremmer.jpg
#4

كما ان الكود اصلا لم يعمل اخي

startingprogremmer.jpg
#5

للاسف انا لا اجيد التعامل مع الالعاب ولكنني ممكن ان اساعدك في الكود فيما لو اوضحت لي الفكرة بشكل كامل .

يمكنك ان تقوم بإضافتي الى المسن بحيث يكون الحوار مباشرا

بالنسبة ل WHIE و WEND هي تعمل حلقة تكرارية غير منتهية إلا بتحقق شرط معين

مثلها مثل dO و LOOP

تحياتي

OMANI FOR EVER

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

post-12787-12780191801974.jpg

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

#6
اقتباس
تقوم بإضافتي الى المسن بحيث يكون الحوار مباشرا

جيد لكنك نسيت اعطائي البريد الالكتروني

startingprogremmer.jpg
#7

للرفع

startingprogremmer.jpg
#8

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

ثم لماذا تستخدم 162 تايمر هذا لا يعني أن الأعداد لن تتكرر

هناك طرق أبسط من ذلك بكثير لضمان عدم تكرار الأعداد

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

وكل خير في اتباع من سلف وكل شر في ابتداع من خلف

#9

ثم لماذا تستخدم 162 تايمر هذا لا يعني أن الأعداد لن تتكرر

هناك طرق أبسط من ذلك بكثير لضمان عدم تكرار الأعداد

اخي انا اريد اقتراحاات واكيد برنامج لحل لعبة

استخدم 162 لان هذه الطريقة الي في بالي

اريد اخي الطرق البسيطة لو سمحت

وشكرا

startingprogremmer.jpg
#10

أنت تريد الحل إذا وليس تكوين اللعبة

حسنا

سنفترض أن الخانات التي لا يوجد بها أرقام قيمتها تساي صفر

أولا سنقوم بحساب عدد الخلايا التي قيمتها تساوي الصفر ونخزن ذلك في متغير

ثم نقوم بعمل دورة على الخلايا في المصفوفة واحدة تلو الأخرى فإذا كانت قيمة الخلية أكبر من الصفر نتجاوز هذه الخلية

وإذا كانت تساوي صفر نقوم بوضع الأرقام الموجودة في نفس الصف والعمود والمنطقة في متجه مكون من 9 خانات بحيث رقم 2 مثلا إن وجد يوضع في الخلية 2 وبهذا نضمن أن الأرقام المكررة لن تؤثر لأنها ستوضع في نفس المكان بعد ذلك نقوم بحساب عدد الخلايا في المتجه التي تساوي صفر فإن كانت أكثر من خلية نتجاهل خلية المصفوفة الحالية لأن لها أكثر من احتمال وإن كان لا يوجد سوى خلية واحدة في المتجه تساوي صفر إذا الرقم الناقص هو ترتيب هذه الخلية في المتجه ونقوم بوضعه في خلية المصفوفة الحالية ثم نتجاوزها إلى ما بعدها

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

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

إذا كان هناك شئ غير مفهوم فأرجو أن تحدد ما الذي لم تفهمه بالضبط

وأما عن موضوع توليد الأرقام العشوائية فسأكتبه في موضوع مستقل قريبا إن شاء الله

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

وكل خير في اتباع من سلف وكل شر في ابتداع من خلف

#11

اخي كيف سنحدد عددهم والحل ؟؟

هل من الممكن كتابة اهم الاجزاء في الكود ؟

startingprogremmer.jpg
#12

لمعرفة التكسات الخالية :

Dim i As Integer

If Text1 = "" Then i = i + 1
If Text2 = "" Then i = i + 1
If Text3 = "" Then i = i + 1
If Text4 = "" Then i = i + 1
If Text5 = "" Then i = i + 1
If Text6 = "" Then i = i + 1
If Text7 = "" Then i = i + 1
If Text8 = "" Then i = i + 1
If Text9 = "" Then i = i + 1
Me.Caption = i

ولكن احتاج كود يحذف ارقام من rnd

startingprogremmer.jpg
#13

لااااااااااااااااااااااااااااااااااااااااااااااااااا

ما هذا أخي هل ستقوم بالتعامل مع كل تكست على حده

أولا ينبغي أن تقوم بانشاء مصفوفة من التكسات وذلك يكون كالتالي

قم بانشاء تكست ثم قم بنسخه ولصقه سيخرج لك الـ visual basic رسالة تسألك إذا ما كنت تريد إنشاء مصفوفة أو لا , اضغط على نعم لانشاء المصفوفة واكمل الطريقة حتى تكمل 81 تكست

للوصول إلى تكست بعينه اكتب

 Text1.Item(i).Text

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

وكل خير في اتباع من سلف وكل شر في ابتداع من خلف

#14

اخي انت تقصد

text1.index(i).text

كما اني اذا كتبت هذه الطريقة ستكون

text1.index(1).text
text1.index(2).text
text1.index(3).text
startingprogremmer.jpg
#15
i = Text1.Item(1) & Text1.Item(2) & Text1.Item(3) & Text1.Item(4) & Text1.Item(5) & Text1.Item(6) & Text1.Item(7) & Text1.Item(8)
On Error Resume Next
Text1.Item(0).Text = Int(Rnd * 8)
If Text1.Item(0) = Text1.Item(i).Text Then Text1.Item(0).Text = ""
If Text1.Item(0).Text = 0 Then Text1.Item(0).Text = 9

هل هذا المقصود اخي ؟؟

startingprogremmer.jpg
#16

إذا كنت تريد حساب عدد الخانات الفارغة سيكون بهذه الطريقة

Counter = 0
For i = 0 To 80
If Text1.Item(i).Text = "" Then Counter = Counter + 1
Next

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

وكل خير في اتباع من سلف وكل شر في ابتداع من خلف

#17

كل ما اريده التعديل في المرفق يا شباب هناك اخطاء

solve_.rar

startingprogremmer.jpg
#18

السلام عليكم

آمل أن يفيدكم هذا

Su Doku هيا بنا نبرمج لعبة

#19

و ماذا عن :

post-103926-1199075477_thumb.jpg

startingprogremmer.jpg
#20

اخي بن عيد

شكرا لتفاعلك

المثال كان للدوت نت

المهم هل انا استطيع برمجة اللعبة بسهولة <<<< اكواد طويلة :D

ولكن البرنامج نفسه يحل سودوكو

يعني المستخدم يحط كم رقم وبعدين البرنامج يحل اللعبة

_________

كل ما احتاجه :

التعديل في المرفق بالاعلى او :download:

___________________________

والشيء الثاني : (ليس في المرفق)

text1.text = int(rnd * 10)

سيولد ارقام من الصفر الى 9

لكني لا اريده ان يولد الرقم الذي موجود في text2 مثلا

_____________________________

وشكرا لكل من شارك في الموضوع

تم تعديل هذه المشاركة بواسطة مبرمج مبتدا في 31 ديسمبر 2007 في 07:46

startingprogremmer.jpg
#21

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

بمعنى أن الحل إذا كان يتطلب طريقة التجربة والخطأ أو كان من النوعية

post-103926-1199075477.jpg

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

Sudoku.rar

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

وكل خير في اتباع من سلف وكل شر في ابتداع من خلف

#22

اخي لذلك انا استعملت الطريقة العشوائية

لذلك سؤال هو حذف بعض اللارقام من RND و اريد ذلك في موضوع مستقل :)

ممكن شرح :

For j = Int(i / 27) * 27 + Int((i Mod 9) / 3) * 3 To Int(i / 27) * 27 + Int((i Mod 9)
startingprogremmer.jpg

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…