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

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

مغلق
بدأه تمام كوجان في 28 يناير 2006 · 8 رد · 12,496 مشاهدة · في قسم الرسوميات و الالعاب
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

Su Doku

هذه المقالة تطبق على :

Microsoft Visual Basic 2005

مقدمة :

انا من الذين يؤمنون انه لتتعلم أي شيء يجب ان تستمتع فيما تتعلمه و في البرمجة بالذات المتعة في العمل هي الحافز للمتابعة و النشاط ( هذا ليس رأيك أنت ! حسنا انا اعبر عن رأيي الخاص و على فكرة من الذي اخذ رأيك )

لذا عندما قررت ان ابدا مع برمجة الكائنات في اطار عمل .NET Framework قررت ان ابرمج لعبة صغيرة حسنا فكرت ما هي اللعبة ؟ لا يوجد اية فكرة ... اه فكر مرة ثانية ! لا يوجد

عندها ضربت رأسي بالحائط فسقط فكرة صغيرة اه انها لعبة Su Doku

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

كيف تلعب : عليك أن تضع في كل حقل فارغ أحد الأرقام من 1 إلى 9 بحيث لا تستخدم الرقم نفسه أكثر من مرة واحدة في كل

خلية مؤلفة من 3*3 مربعات و ألا تستخدم الرقم نفسه أكثر من مرة واحدة في نفس الصف العمودي أو الأفقي الممتد من طرف الشبكة

إلى طرفها المقابل .

ماذا ستستفيد من الدرس : اولا ستحصل على لعبة Su Doku مجانية ( و هو الاهم في رأيي )

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

الان فلنشرح كيف نلعب سودوكو اه عفوا كيف نصمم سودودكو

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

اذا نحن نحتاج إلى كائن له الصفات التالية:

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

• عند تغيير قيمة الكائن يتم تفحص المجموعة فيما اذا كانت تحتوي كائنا اخر يملك نفس القيمة :

اذا الكائن يمتلك خاصية تبين المجموعة التي ينتمي إليها من اجل عمليات المقارنة للكائنات ضمن نفس المجموعة

• عند تغيير قيمة الكائن يتم تفحص السطر الحاوي للكائن فيما اذا كان يحوي كائنات تمتلك قيما مشابهة : اذا الكائن يمتلك خاصية تجدد السطر الحاوي له من اجل عمليات المقارنة للكائنات في نفس السطر

• عند تغيير قيمة الكائن يتم تفحص العمود الحاوي للكائن فيما اذا كان يحوي كائنات تمتلك قيما مشابهة : اذا الكائن يمتلك خاصية تحدد العمود الحاوي للكائن من اجل عمليات المقارنة للكائنات في نفس السطر

هذا يكفي كبداية و من ثم سنتوسع في تفاصيل الكائن

الان شغل Visual Studio .NET و اذهب إلى القائمة File و انقر New تظهر نافذة كما في الصورة ادناه

قم باختيار مشاريع Visual Basic .NET و انتق من Smart Device ان تنشأ Device Application

سم المشروع Su-Duko و انقر موافق .

من النافذة Solution Eplorer انقر باليمين على المشروع و اختر ADD و من ثم انقر على User Control سم الكائن MyPanel و من ثم انقر موافق

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

انسخ الشيفرة التالية و ضعها عوضا عن الشيفرة الموجودة في المحرر

Public Class MyPanel

    Private m_X As Integer
    Public Property X() As Integer
        Get
            Return m_X
        End Get
        Set(ByVal value As Integer)
            m_X = value
        End Set
    End Property
    Private m_Y As Integer
    Public Property Y() As Integer
        Get
            Return m_Y
        End Get
        Set(ByVal value As Integer)
            m_Y = value
        End Set
    End Property

    Private m_IsSelected As Boolean = False
    Public Property IsSelected() As Boolean
        Get
            Return m_IsSelected
        End Get
        Set(ByVal value As Boolean)
            m_IsSelected = value
        End Set
    End Property

    Private m_Hold As Boolean = False
    Public Property Hold() As Boolean
        Get
            Return m_Hold
        End Get
        Set(ByVal value As Boolean)
            m_Hold = value

        End Set
    End Property
    Public m_BackColor As Color
    ' Public Overrides Property BackColor() As Color
    ' Get
    '       Return m_BackColor
    '   End Get
    '   Set(ByVal value As Color)
    '       m_BackColor = value
    '   End Set
    'End Property

    Enum MyPanelValue
        Null = 0
        One = 1
        Two = 2
        Three = 3
        Four = 4
        Five = 5
        Sex = 6
        Seven = 7
        Eight = 8
        Nine = 9
    End Enum

    Private m_Value As MyPanelValue = MyPanelValue.Null
    Public Property Value() As MyPanelValue
        Get
            Return m_Value
        End Get
        Set(ByVal value As MyPanelValue)
            m_Value = value
        End Set
    End Property
    Enum Group
        Null = 0
        One = 1
        Two = 2
        Three = 3
        Four = 4
        Five = 5
        Sex = 6
        Seven = 7
        Eight = 8
        Nine = 9
    End Enum
    Private m_MyGroup As Group
    Public Property MyGroup() As Group
        Get
            Return m_MyGroup
        End Get
        Set(ByVal value As Group)
            m_MyGroup = value
        End Set
    End Property

    Public Sub New()

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        m_X = -1
        m_Y = -1
        m_MyGroup = Group.Null
    End Sub
    Public Sub New(ByVal ValueX As Integer, ByVal ValueY As Integer)

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        m_X = ValueX
        m_Y = ValueY
        m_MyGroup = Group.Null
    End Sub


    Private Sub IncreaseValue()
        If m_IsSelected = True And (Hold = False) Then
            If m_Value < 9 Then
                m_Value += 1
            Else
                m_Value = 0
            End If
        Else
            m_IsSelected = True
        End If

        Me.Refresh()
    End Sub


    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)

        ' Dim FontFamily As New FontFamily("Tahoma")
        Dim myFont As New Font("Tahoma", Me.Width / 3, FontStyle.Bold)
        Dim myPoint As New Point(5, 70)
        Dim solidBrush As New SolidBrush(Color.FromArgb(0, 0, 255))
        Dim fs As SizeF = e.Graphics.MeasureString(m_Value, myFont)
        If m_Value = MyPanelValue.Null Then
            e.Graphics.DrawString("", myFont, solidBrush, 4, 4)
        Else

            ' e.Graphics.DrawString(m_Value, myFont, solidBrush, 4, 4)
            e.Graphics.DrawString(m_Value, myFont, solidBrush, _
         ((Me.Width - fs.ToSize().Width) / 2), _
         ((Me.Height - fs.ToSize().Height) / 2) _
          )

        End If

    End Sub

    Private Shadows Sub MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
        Me.Focus()
        IncreaseValue()
        Dim RowPanel As New MyPanels
        Dim ColPanel As New MyPanels
        Dim GroupPanel As New MyPanels
        Dim h As MyPanel
        Try

            For Each h In Me.Parent.Controls
                If Me.X = h.X Then
                    RowPanel.Add(h)
                End If
                If Me.Y = h.Y Then
                    ColPanel.Add(h)
                End If
                If (Me.MyGroup = h.MyGroup) Then
                    GroupPanel.Add(h)
                End If
            Next

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        RowPanel.Check(Me)
        ColPanel.Check(Me)
        GroupPanel.Check(Me)
    End Sub
    Private Shadows Sub GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.GotFocus
        m_BackColor = Me.BackColor
        If m_Hold = False Then
            Me.BackColor = Color.Fuchsia
        End If


    End Sub
    Private Shadows Sub LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.LostFocus
        m_IsSelected = False
        '  Me.BackColor = Color.Coral
        If m_Hold = False Then
            Me.BackColor = m_BackColor 'Color.Coral
        Else
            Me.BackColor = Color.LightGray
        End If
    End Sub

End Class
Public Class MyPanels
    Inherits CollectionBase

    Public Sub Add(ByVal PanelToAdd As MyPanel)
        List.Add(PanelToAdd)
    End Sub

    Public Sub Remove(ByVal PanelToRemove As MyPanel)
        List.Remove(PanelToRemove)
    End Sub

    ' Indexer for MyPanels
    Public Property MyPanel(ByVal Index As Byte) As MyPanel
        Get
            Return Me.List(Index)

        End Get
        Set(ByVal value As MyPanel)
            Me.List(Index) = value
        End Set
    End Property

    Public Sub Check(ByRef CheckPanel As MyPanel)

        For i As Integer = 0 To Me.Count - 1
            If (CheckPanel.Value <> Su_Doku.MyPanel.MyPanelValue.Null) And (Me.MyPanel(i).Value = CheckPanel.Value) Then
                Me.MyPanel(i).BackColor = Color.Red
                CheckPanel.BackColor = Color.Red
            Else
                Me.MyPanel(i).BackColor = Color.Coral
            End If
        Next

    End Sub
End Class

الان إلى شرح الشيفرة السابقة

• المتحول m_X يخزن هذا المتحول قيمة تمثل السطر الذي يتواجد فيه الكائن

• الخاصية X يتم من خلالها اسناد و استرجاع قيمة المتحول m_X

نلاحظ ان المتحول من نوع Private لإننا لا نريد للمستخدم الوصول إليه إلا من خلال الخاصية و التي من نوع Public مما يتيح لنا القيام بعمليات معينة عند قراءة او كتابة قيمة في المتحول من خلال خاصيته عند الحاجة

• المتحول m_Y يخزن هذا المتحول قيمة تمثل العمود الذي يتواجد فيه الكائن

• الخاصية Y يتم من خلالها اسناد و استرجاع قيمة المتحول Y_m

• المتحول m_IsSelected متحول بولياني يحدد فيما اذا كان الكائن محددا او لا

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

• المتحول m_Hold متحول بولياني يحدد فيما اذا كانت قيمة الكائن مثبتة ام لا ( أي ان قيمة الكائن مجمدة لا يمكن تغييرها عندما يكون المتحول True يستفاد من ذلك من اجل تبيت قيم عند بدء اللعبة مما يحدد درجة صعوبتها

• البنية MyPanelValue التي تحوي القيم اتي يجب ان يأخذها الكائن فقط

• المتحول m_Value الذي يخزن قيمة الكائن و يأخذ قيمه من البنية السابقة

• البنية Group التي تحوي المجموعة التي ينتمي إليها الكائن في Su Doku هناك تسع مجموعات اما المجموعة العاشرة Null فهي قيمة تمهيدية تعطى للكائن عند انشاءه

• المتحول M_MyGroup الذي يخزن المجموعة التي ينتمي إليها الكائن و يأخذ قيمه من البنية السابقة

• الباني New يستخدم الباني لإنشاء الكائن مع تمهيده بالقيم المناسبة حيث يأخذ افتراضيا قيمة -1 للسطر و -1 للعمود أي انه لا ينتمي لأية سطر أو عمود كما يتم تمهيد المجموعة عند القيمة Null أي انه لا ينتمي لأي مجموعة

• الباني المحمل بشكل زائد New() يتم من خلال هذا الباني انشاء كائن يتم تمهيد سطره و عموده من خلال القيم الممررة له .

• الاجرائية IncreaseValue تقوم هذه الدالة بتغيير قيمة الكائن عند النقر عليه .

• الاجرائية OnPaint التي تقوم برسم الكائن نلاحظ ان الكلمة Overrides تجعل هذه الدالة تهيمن على الحدث OnPaint الخاص بالكائن كما ان عملية الرسم تجعل النص الذي يعرض قيمة الكائن يرسم في وسط الكائن و بحجم يتناسب مع تغير حجم الكائن .

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

نلاحظ العبارة Inherits CollectionBase التي تشير إلى وراثة هذه الفئة للفئة CollectionBase

تستخدم الفئة MyPanels كمخزن لعناصر MyPanel حيث يتم تجميع العناصر ضمن كائن من هذه الفئة

تحتوي الفئة MyPanels على الطرائق التالية :

• الإجرائية Add : تقوم هذه الإجرائية بإضافة الوسيط المرر لها إلى الكائن الذي يستدعيها

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

• الخاصية MyPanel : تعود هذه الخاصية بالعنصر المخزن بالكائن و الذي يوافق فهرسه القيمة المررة , كما انها تسند قيمة عنصر للعنصر الذي فهرسه يوافق القيمة المكررة

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

الان لنتابع شرح بقية طرائق الكائن MyPanel

* الإجرائية MouseDown : للتعامل مع حدث الضغط بالفأرة نلاحظ انه للربط مع هذا الحدث هناك امران الاول ان يكون للدالة نفس عدد الوسائط التي تملكها الإجرائية MousDown التقليدية إضافة إلى إضافة العبارة Handles MyBase.MouseDown إلى نهاية السطر الذي صرحت فيه الإجرائية .

نلاحظ أن مهمة هذه الدالة هي : عند الضغط على الكائن قم بتحديده و من ثم قم بزيادة قيمته ثم يتم تعريف ثلاث متحولات من نوع MyPanels الأول يستخدم لتجميع العناصر الموجودة في نفس سطر الكائن

الثاني يستخدم لتجميع العناصر الموجودة في نفس عمود الكائن أما الثالث فيستخدم لتجميع العناصر التي تنتمي لنفس المجموعة , بعد أن نقوم بملئ المتحولات السابقة بالعناصر المناسبة من خلال حلقة

نستدعي إجرائية Check لكل منها

و هكذا أكون قد شرحت الأجزاء المهمة من الفئة MyPanel و الفئة MyPanels

ننتقل الأن إلى النموذج الرئيسي للمشروع اسم هذا النموذج هو MainForm لا تسأل لماذا فهي عادة عندي , فلنذهب الان إلى الإجرائية DrawCells تقوم هذه الإجرائية برسم العناصر على النموذج مع تمهيد مجموعة كل عنصر و سطره و عموده .

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

الان بقي لدينا الحدث Paint للنموذج يتم من خلال هذا الحدث رسم الخطوط التي تؤلف لوحة الـ Su Doku

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

و تضع زرا لحل اللعبة عند فشل اللاعب بالحل كما و يمكنك أن تضيف امكانية حفظ اللعبة الحالية و تحميل لعبة محفوظة من خلال ملفات XML الأمر ليس صعب انشأ حلقة تمر على كل عنصر Mypanel و تقوم بحفظ خواصه الاساسية

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

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

للمزيد من الدروس يمكنك زيارة مدونتي الإلكترونية http://www.enashir.com/blogs/TammamKoujan

أو يمكنك زيارة مندى المبرمجين العرب حيث اشارك في منتديات البرمجة هناك http://www.arabteam2000.com

اذا كنت ترغب بمراسلتي Tammam84@Yahoo.com

ملاحظاتك و استفساراتك مرحب بها على الدوام .

يمكنك الحصول عى نسخة من اللعبة و شيفرتها من خلال مراسلتي على بريدي الالكتروني

تمام كوجان

‏الثلاثاء‏، 24‏ كانون الثاني‏، 2006

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

Su_Doku.zip

Su_Doku.doc

تم تعديل هذه المشاركة بواسطة Tammam Koujan في 28 يناير 2006 في 20:32

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#2

UP

للفائدة

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#3

خلال زيارتي لموقع Microsoft وجدت مثالا عن اللعبة ( اكيد سرقوا اللعبة مني انا طرحت الموضوع قبلهم بشهر :lol: :lol: ;) )

لكن لإجهزة التي تشغل Windows XP Tablet PC Edition

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

Microsoft Sudoku

تم تعديل هذه المشاركة بواسطة Tammam Koujan في 18 مايو 2006 في 18:48

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#4

iهذا موضوع وجدته اليوم على TheCodeProject يتحدث عن برمجة اللعبة على Smart Client

SudokuSmartClient.jpg

كنت أظن أن الموضوع جيد لكن لا حياة لمن تنادي

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#5

دائما اتي متأخر في هذا القسم

الله يعطيك العافية اخي تمام

يبدوا انّ اللعبة في موقع CodeProject اخذت منحى احترافي اكثر

فقد تم وضع درجات للصعوبة

سوف انظر الى الكود عندما اجد الوقت المناسب لذلك (لدي بعض الامتحانات الان)

شكرا لك على هذا المجهود في احياء هذا القسم :). ولا تيأس من عدم وجود اعضاء فاعلين في هذا المنتدى فقلما تجد من يهتم في هذا المجال في العالم العربي

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#6

عفوا نسيت ان اضع رابط الموضوع في The Code Project :unsure:

Sudoku and Smart Client techniques

أخي وائل شكرا على مشاركتك

من خلال نظرة أولية للمشروع في The Code Project اعلم ان اللعبة اخذت منحى احترافي اكثر على الأقل

لإنها شبه كاملة او منتهية

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

حتى اني قلت في نهاية مقالتي :

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

و تضع زرا لحل اللعبة عند فشل اللاعب بالحل كما و يمكنك أن تضيف امكانية حفظ اللعبة الحالية و تحميل لعبة محفوظة من خلال ملفات XML الأمر ليس صعب انشأ حلقة تمر على كل عنصر Mypanel و تقوم بحفظ خواصه الاساسية

لكي يتفاعل الاعضاء و يعملوا

على اي حال سأحاول ان اكمل اللعبة حالما استطيع دون انظر إلى كود لعبة Microsoft أو لعبة The Code Project

لأني اريد ان اطورها بأسلوبي الخاص

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#7

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

#8

Sudoku

قمت بعمل لعبة السودكو باستخدام فيجول بيسك 6

المشروع يقوم بعمل الاتى

1-حل اى لعبة للسودكو مهما كان مستوها ومهما كان عدد (الاعداد المعطاة) حتى لو كان هناك عدد واحد

2-انشاء لعبة السودكو مع ملاحظة ان اللعبة لها حل وحيد

3-لعب السودكو

#9

Sudoku

قمت بعمل لعبة السودكو باستخدام فيجول بيسك 6

المشروع يقوم بعمل الاتى

1-حل اى لعبة للسودكو مهما كان مستوها ومهما كان عدد (الاعداد المعطاة) حتى لو كان هناك عدد واحد

2-انشاء لعبة السودكو مع ملاحظة ان اللعبة لها حل وحيد

3-لعب السودكو

يمكنك عمل

(save)

للعبة

أرجو تقيم المشروع

يمكنم مراسلتى عى الاميل

khlilism2000@yahoo.com

sudoku.rar

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

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