شرح كيفية برمجة لعبة tic tac toe بأستخدام الفيجوال بيسك دوت نت
بسم الله الرحمن الرحيم
لبرمجة
لعبة Tic Tac Toe أو XO هو
باستخدام الأزرار Buttons , حيث سيتم وضع 9 أزرار ويكون هناك لاعبين Players : 1 , 2 ويقوم البرنامج عند الضغط على زر معين بقراءه رقم اللاعب , فلو كان اللاعب الحالي هو 1 فانه سيقوم بتغيير نص الزر button text الى X وثم يغير قيمة اللاعب Players الى اللاعب الثاني 2 , والعكس صحيح لو كان الدور للاعب 2.
بدايةً , اعمل مشروع جديد وأضف فيه Buttons بعدد 9
وقم بتغيير أسماء الأزرار في الصف الأول من الزر الأيسر الى الأيمن , btn1 , btn 2 , btn3
بحيث تكون ارقامها كالآتي
[center]
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]سنقوم بعمل متغير عام نسميه Player وهو دور اللاعب سواء كان 1 او 2 , وفي بداية اللعبة سيكون دور اللاعب 1
واللاعب 1 هو X بينما 2 هو Y
كود PHP:
Dim Player As String
ضع الكود مباشرة تحت Public class form1
والآن سنضيف الكود الآتي الى الحدث Form1_Load
كود PHP:
Timer1.Start()
Player = "1"
Btn1.TabStop = False
Btn2.TabStop = False
Btn3.TabStop = False
Btn4.TabStop = False
Btn5.TabStop = False
Btn6.TabStop = False
Btn7.TabStop = False
Btn8.TabStop = False
Btn9.TabStop = False
بعد ذلك أضف تايمر الى المشروع Timer1
لاحظ في كود الحدث Form1_load بدأنا اولا عمل الساعة ثم عرفنا قيمة اللاعب بأنه 1 , وعطلنا ال TabStop لجميع الأزرار وهذا اختياري.
الآن اضف في كل زر الكود الآتي
كود PHP:
If Player = "1" Then
Btn1.Text = "X"
Btn1.Enabled = False
Player = "2"
--Player2--
ElseIf Player = "2" Then
Btn1.Text = "O"
Btn1.Enabled = False
Player = "1"
End If
لاحظ أننا عملنا شرط , لو اللاعب = 1 اعمل كذا ولو كان 2 اعمل كذا
يتم تغيير نص الزر الى X or O حسب اللاعب وثم قمنا يتعطيل الزر حتى لا يستطيع اللاعب التحكم فيه مرة اخرى وثم يتم تغيير قيمة متغير اللاعب الى الاعب الاخر...
أضف نفس الكود الى جميع الازرار مع تغيير رقم الزر من 1 الى 9 حسب الزر
الآن لو تشغل المشروع وتضغط على أي زر بتلاحظ أنه بكون X والزر الي بعده O والي بعده X وبعده O وهكذا...
ولاحظ أيضا انه سيتم تعطيل الزر
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة][right]الآن باقي لنا نضيف الزر لتحديد هل اللاعب فاز او لا
توجه الى اخر سطر أي كود حيث توجد كلمة End sub واضف في سطر جديد الآتي
كود PHP:
Private Sub TheWinner()
End sub
وأضف فيه الكود الآتي
كود PHP:
If Btn1.Text = "X" And Btn2.Text = "X" And Btn3.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Btn1.Text = "O" And Btn2.Text = "O" And Btn3.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Btn1.Text = "O" And Btn5.Text = "O" And Btn9.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Btn1.Text = "X" And Btn5.Text = "X" And Btn9.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Btn1.Text = "X" And Btn4.Text = "X" And Btn7.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Btn1.Text = "O" And Btn4.Text = "O" And Btn7.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Btn3.Text = "X" And Btn6.Text = "X" And Btn9.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Btn3.Text = "O" And Btn6.Text = "O" And Btn9.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Btn3.Text = "X" And Btn5.Text = "X" And Btn7.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Btn3.Text = "O" And Btn5.Text = "O" And Btn7.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Btn2.Text = "X" And Btn5.Text = "X" And Btn8.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Btn2.Text = "O" And Btn5.Text = "O" And Btn8.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Btn7.Text = "O" And Btn8.Text = "O" And Btn9.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Btn7.Text = "X" And Btn8.Text = "X" And Btn9.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Btn4.Text = "O" And Btn5.Text = "O" And Btn6.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Btn4.Text = "X" And Btn5.Text = "X" And Btn6.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
Else
GameOver()
End If
قد يبدو طويلا الا انه متكرر , حيث يقوم البرنامج بعمل شروط , اذا كانت العناصر متشابهة افقيا او عموديا او كان مائلا الى اليمين او اليسار فانه سوف يوقف التايمر أولا ثم يظهر مسج بوكس يفيد من هو اللاعب الفائز
لاحظ في اخر الكود وجود GameOver() لم يتعرف عليه الفيجوال بيسك
أضف في نهاية كلمة End sub بعد سطر جديد الآتي
كود PHP:
Private Sub GameOver()
If Btn1.Enabled = False And _
Btn2.Enabled = False And _
Btn3.Enabled = False And _
Btn4.Enabled = False And _
Btn5.Enabled = False And _
Btn6.Enabled = False And _
Btn7.Enabled = False And _
Btn8.Enabled = False And _
Btn9.Enabled = False Then
Timer1.Stop()
MsgBox("Game OVER!")
End If
End Sub
لان في كل ضغطة يتم تعطيل الزر , اذا كان جميع الازرار معطلة فان البرنامج سوق يظهر مسج بوكس فيه خسرت اللعبة
وأخيراً , اضغط مرتين على التايمر وأضف الكود الآتي
كود PHP:
TheWinner()
شغل المشروع , واستمتع باللعب
[center]
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]