اذهب الي المحتوي
أوفيسنا

الردود الموصى بها

قام بنشر

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

ممكن نشوف افكار وتطبيق رواد المنتدى المحترمين لعمل فكرة اللعبة  X , O

ولكن ولكن ولكن المطلوب ان تكون اللعبة بينك وبين الكمبيوتر :biggrin:

يعنى انت تعمل حركة وهو يعمل حركة 

 

فى انتظار ابداعاتكم وافكاركم النيرة



image.png.4a8eb8645fff6028cea311cb44ff436c.png

قام بنشر

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

وبما أنني من عشاق تصميم الألعاب في آكسيس .. وقد كان لي تجربة مع هذه اللعبة الجميلة ، وقد قمت بتضمينها ضمن برنامج إدارة النوادي الرياضية في هذا الموضوع هنا .. وكانت تجربتي بالشكل  القديم التالي :-

X-O.gif.553207f48912bbf09c7e92efae6da68e.gif

 

ولكن وبما أننا في 2026 ، فسأقوم بتطويرها بشكل أجمل ضمن هوايتي المتواضعة .😁.

image.png.5e290a3ac98fee4a63b43793b0b4544d.png

  • Like 2
قام بنشر
8 ساعات مضت, Foksh said:

فسأقوم بتطويرها بشكل أجمل

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

  • Haha 1
قام بنشر
منذ ساعه, Debug Ace said:

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

تقصد بهذا الشكل ؟؟

 

TicTac.gif.380fe8615df1daff5cf7ee60fc48efe9.gif

  • Like 1
  • Thanks 1
قام بنشر

الموضوع ممتع و شيق
تفضل هذه الفكرة

الخطوة الأولى: تجهيز النموذج (Form)
أنشئ نموذجاً جديداً (Form) 

أضف 9 أزرار أمر (Command Buttons) وقم بتسميتها برمجياً كالتالي:

btn1, btn2, btn3 (للصف الأول)

btn4, btn5, btn6 (للصف الثاني)

btn7, btn8, btn9 (للصف الثالث)

أضف زر عاشر باسم btnReset لإعادة اللعبة.

أضف "تسمية" (Label) باسم lblStatus لعرض حالة اللعبة (دور من؟ أو من الفائز؟).

الكود البرمجي

Option Compare Database
Option Explicit

' متغيرات عامة للتحكم في حالة اللعبة
Dim GameOver As Boolean

' عند تحميل النموذج
Private Sub Form_Load()
    ResetGame
End Sub

' زر إعادة تشغيل اللعبة
Private Sub btnReset_Click()
    ResetGame
End Sub

' الإجراء الرئيسي عند ضغط اللاعب على أي مربع
Private Sub PlayMove(btn As CommandButton)
    ' التأكد أن المربع فارغ وأن اللعبة لم تنتهِ
    If btn.Caption = "" And Not GameOver Then
        btn.Caption = "X"
        btn.ForeColor = RGB(0, 0, 150) ' لون أزرق لعلامة اللاعب
        
        If CheckWinner("X") Then
            lblStatus.Caption = "مبروك! لقد فزت."
            lblStatus.ForeColor = RGB(0, 150, 0) ' لون أخضر عند الفوز
            Beep ' صوت تنبيه
            GameOver = True
        Else
            ' إذا لم يفز اللاعب، يأتي دور النظام
            CPUMove
        End If
    End If
End Sub

' منطق ذكاء النظام (الكمبيوتر)
Private Sub CPUMove()
    If GameOver Then Exit Sub
    
    Dim moveIndex As Integer
    
    ' 1. محاولة الفوز (الهجوم)
    moveIndex = FindBestMove("O")
    
    ' 2. سد الطريق على اللاعب (الدفاع)
    If moveIndex = 0 Then moveIndex = FindBestMove("X")
    
    ' 3. محاولة السيطرة على المركز (الخانة رقم 5)
    If moveIndex = 0 And Me.btn5.Caption = "" Then moveIndex = 5
    
    ' 4. اختيار أول خانة متاحة إذا فشلت الاستراتيجيات أعلاه
    If moveIndex = 0 Then
        Dim i As Integer
        For i = 1 To 9
            If Me.Controls("btn" & i).Caption = "" Then
                moveIndex = i
                Exit For
            End If
        Next i
    End If

    ' تنفيذ حركة النظام
    If moveIndex > 0 Then
        With Me.Controls("btn" & moveIndex)
            .Caption = "O"
            .ForeColor = RGB(200, 0, 0) ' لون أحمر لعلامة النظام
        End With
        
        ' التحقق هل فاز النظام؟
        If CheckWinner("O") Then
            lblStatus.Caption = "للأسف! فاز النظام."
            lblStatus.ForeColor = vbRed ' لون أحمر للنص عند الخسارة
            Beep
            GameOver = True
        End If
    End If
    
    ' التحقق من حالة التعادل (إذا امتلأت الخانات ولم يفز أحد)
    If Not GameOver Then
        Dim IsDraw As Boolean: IsDraw = True
        Dim j As Integer
        For j = 1 To 9
            If Me.Controls("btn" & j).Caption = "" Then IsDraw = False: Exit For
        Next j
        
        If IsDraw Then
            lblStatus.Caption = "تعادل!"
            lblStatus.ForeColor = vbBlack
            Beep
            GameOver = True
        End If
    End If
End Sub

' دالة ذكية للبحث عن أفضل حركة (فوز أو دفاع)
Private Function FindBestMove(PlayerSign As String) As Integer
    Dim WinPatterns As Variant
    Dim i As Integer, count As Integer, emptyPos As Integer
    Dim pos() As String
    
    ' جميع احتمالات الفوز الممكنة
    WinPatterns = Array("1,2,3", "4,5,6", "7,8,9", "1,4,7", "2,5,8", "3,6,9", "1,5,9", "3,5,7")
    
    For i = 0 To 7
        pos = Split(WinPatterns(i), ",")
        count = 0
        emptyPos = 0
        
        Dim j As Integer
        For j = 0 To 2
            If Me.Controls("btn" & pos(j)).Caption = PlayerSign Then
                count = count + 1
            ElseIf Me.Controls("btn" & pos(j)).Caption = "" Then
                emptyPos = CInt(pos(j))
            End If
        Next j
        
        ' إذا وجد خانتين لنفس اللاعب والثالثة فارغة، يعيد رقم الخانة الفارغة
        If count = 2 And emptyPos <> 0 Then
            FindBestMove = emptyPos
            Exit Function
        End If
    Next i
    FindBestMove = 0
End Function

' دالة التحقق من الفوز
Private Function CheckWinner(Player As String) As Boolean
    Dim WinPatterns As Variant
    Dim i As Integer
    Dim pos() As String
    
    WinPatterns = Array("1,2,3", "4,5,6", "7,8,9", "1,4,7", "2,5,8", "3,6,9", "1,5,9", "3,5,7")
    
    For i = 0 To 7
        pos = Split(WinPatterns(i), ",")
        If Me.Controls("btn" & pos(0)).Caption = Player And _
           Me.Controls("btn" & pos(1)).Caption = Player And _
           Me.Controls("btn" & pos(2)).Caption = Player Then
            CheckWinner = True
            Exit Function
        End If
    Next i
    CheckWinner = False
End Function

' إعادة ضبط اللعبة للحالة الأصلية
Private Sub ResetGame()
    Dim i As Integer
    For i = 1 To 9
        Me.Controls("btn" & i).Caption = ""
        Me.Controls("btn" & i).ForeColor = vbBlack
    Next i
    GameOver = False
    lblStatus.Caption = "دورك الآن (X)"
    lblStatus.ForeColor = vbBlack
End Sub

' ربط أحداث النقر للأزرار (Events)
Private Sub btn1_Click(): PlayMove btn1: End Sub
Private Sub btn2_Click(): PlayMove btn2: End Sub
Private Sub btn3_Click(): PlayMove btn3: End Sub
Private Sub btn4_Click(): PlayMove btn4: End Sub
Private Sub btn5_Click(): PlayMove btn5: End Sub
Private Sub btn6_Click(): PlayMove btn6: End Sub
Private Sub btn7_Click(): PlayMove btn7: End Sub
Private Sub btn8_Click(): PlayMove btn8: End Sub
Private Sub btn9_Click(): PlayMove btn9: End Sub

مرفق مثال على ذلك

 

اكس او.accdb

  • Like 1
قام بنشر
35 دقائق مضت, دروب مبرمج said:

الموضوع ممتع و شيق


يا هلا والله يا مراحب 

تسلم الافكار النيرة ممتاز جدا ورائع

قام بنشر


هل هناك من يملك افكار لكسر جمود الاكسس بعمل اضافات تعمل كمؤثرات بصرية ممتعة :biggrin:

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

1- تحديد مستوى الصعوبة والسهولة لما تلعب مع الكمبيوتر
2- تحديد وادخال اسماء اللاعبين فى حالة لاعب ضد لاعب آخر 
3- مؤثرات بصرية تعطى رونق جميلا لكسر جكود الاكسس

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

  • Haha 1
قام بنشر (معدل)

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

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

تم تعديل بواسطه Debug Ace
قام بنشر
8 دقائق مضت, Debug Ace said:

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

لا لا يا هندسة ، مش ده قصدي !! ولا حتى قريب منه ، استغفر الله أن نظن بأحد ظناً سيء . على العكس ثقتنا كبيرة ببعضنا :wub:

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

وهذين ملفين 32 و 64 للتجربة ، وإبداء الرأي لمن يريد .

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

 

X-O Game - 32.zip

X-O Game - 64.zip

قام بنشر (معدل)
18 دقائق مضت, Foksh said:

استغفر الله أن نظن بأحد ظناً سيء

لا تقلق لم يكون ردى عليكم لاعتقادى انكم تظنون بى سوءا ولكن كان الرد علشان الضحكة الجميلة بتاعتك اللى على منشورى وبس لا اكثر ولا اقل لا تكبر المواضيع يا رجل

 

وبجد بجد برافو :clapping:

ولكن انت محتاج تراجع اكوادك تانى يا استاذ فى عندك bugs

 

image.png.d9d792d1d16bf6d20c76af8b7772efc9.png

image.png.c71bfd5440162d8bf5516e9a4aeb9317.png

image.png.fe374383013090fa606bcf0ac4a31936.png

 

تم تعديل بواسطه Debug Ace
قام بنشر
12 دقائق مضت, Debug Ace said:

ولكن انت محتاج تراجع اكوادك تانى يا عثل فى عندك bugs

ماشي يا محمد .. الـ Bugs ده اللي بتتكلم عنه سببه إنك بالنقر على الأزرار بينما الكمبيوتر كان يفكر .. ولكن جاري المعالجة في المرفقات التي سيتم رفعها في المشاركة التالية .. :biggrin:

على العموم ، انا زودت قفل زيادة علشان تفرح يا عم 😉

  • Haha 1
قام بنشر
1 دقيقه مضت, Foksh said:

الـ Bugs ده اللي بتتكلم عنه سببه إنك بالنقر على الأزرار بينما الكمبيوتر كان يفكر

برافو عليك شاطر :clapping:

قام بنشر
1 دقيقه مضت, Foksh said:

جرب كدة ونشوف النتيجة !!

 


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

قام بنشر (معدل)
13 دقائق مضت, Foksh said:

جرب كدة ونشوف النتيجة !!

 

لسة فيه عندك bugs يا سيد Foksh 


image.png.9ca15111354fd9b352c952cbcc329f25.png

تم تعديل بواسطه Debug Ace
قام بنشر
4 دقائق مضت, Debug Ace said:

لسة فيه عندك bugs يا سيد Foksh 

احذف القديم ، وشغل الجديد يا هندسة ..  😎

 

13 دقائق مضت, ابوخليل said:

:angry:  كل الامثلة لا تعمل على 2010  😠 

معلمنا الفاضل ، انا مستغرب جداً من عدم عمل الإصدار 32 لديك .. انظر من جهاز آخر بالقرب مني ويعمل على أوفيس 2010 32 ..

TicTacToe.gif.8c0d7001fd180b6aa9e6a689a546d5c3.gif

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

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

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

سجل دخولك الان
×
×
  • اضف...

Important Information