شرح كيفية برمجة لعبة Tic Tac Toe بسيطة باستخدام فيجوال بيسك دوت نت VB.Net
بسم الله الرحمن الرحيم
بسم الله الرحمن الرحيم
الفكرة هنا لبرمجة لعبة Tic Tac Toe أو XO هوباستخدام الأزرار Buttons , حيث سيتم وضع 9 أزرار ويكون هناك لاعبين Players : 1 , 2 ويقوم البرنامج عند الضغط على زر معين بقراءه رقم اللاعب , فلو كان اللاعب الحالي هو 1 فانه سيقوم بتغيير نص الزر button text الى X وثم يغير قيمة اللاعب Players الى اللاعب الثاني 2 , والعكس صحيح لو كان الدور للاعب 2.
بدايةً , اعمل مشروع جديد وأضف فيه Buttons بعدد 9
سنقوم بعمل متغير عام نسميه Player وهو دور اللاعب سواء كان 1 او 2 , وفي بداية اللعبة سيكون دور اللاعب 1
واللاعب 1 هو X بينما 2 هو Y
كود PHP:
Dim Player As String
ضع الكود مباشرة تحت Public class form1
والآن سنضيف الكود الآتي الى الحدث Form1_Load
كود PHP:
Timer1.Start()
Player = "1"
Button1.TabStop = False
Button2.TabStop = False
Button3.TabStop = False
Button4.TabStop = False
Button5.TabStop = False
Button6.TabStop = False
Button7.TabStop = False
Button8.TabStop = False
Button9.TabStop = False
Player = "1"
Button1.TabStop = False
Button2.TabStop = False
Button3.TabStop = False
Button4.TabStop = False
Button5.TabStop = False
Button6.TabStop = False
Button7.TabStop = False
Button8.TabStop = False
Button9.TabStop = False
بعد ذلك أضف تايمر الى المشروع Timer1
لاحظ في كود الحدث Form1_load بدأنا اولا عمل الساعة ثم عرفنا قيمة اللاعب بأنه 1 , وعطلنا ال TabStop لجميع الأزرار وهذا اختياري.
الآن اضف في كل زر الكود الآتي
كود PHP:
If Player = "1" Then
Button1.Text = "X"
Button1.Enabled = False
Player = "2"
--Player2--
ElseIf Player = "2" Then
Button1.Text = "O"
Button1.Enabled = False
Player = "1"
End If
Button1.Text = "X"
Button1.Enabled = False
Player = "2"
--Player2--
ElseIf Player = "2" Then
Button1.Text = "O"
Button1.Enabled = False
Player = "1"
End If
لاحظ أننا عملنا شرط , لو اللاعب = 1 اعمل كذا ولو كان 2 اعمل كذا
يتم تغيير نص الزر الى X or O حسب اللاعب وثم قمنا يتعطيل الزر حتى لا يستطيع اللاعب التحكم فيه مرة اخرى وثم يتم تغيير قيمة متغير اللاعب الى الاعب الاخر...
أضف نفس الكود الى جميع الازرار مع تغيير رقم الزر من 1 الى 9 حسب الزر
الآن لو تشغل المشروع وتضغط على أي زر بتلاحظ أنه بكون X والزر الي بعده O والي بعده X وبعده O وهكذا...
ولاحظ أيضا انه سيتم تعطيل الزر
الآن باقي لنا نضيف الزر لتحديد هل اللاعب فاز او لا
توجه الى اخر سطر أي كود حيث توجد كلمة End sub واضف في سطر جديد الآتي
كود PHP:
Private Sub TheWinner()
End sub
End sub
وأضف فيه الكود الآتي
كود PHP:
If Button1.Text = "X" And Btn2.Text = "X" And Button3.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button1.Text = "O" And Btn2.Text = "O" And Button3.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button1.Text = "O" And Button5.Text = "O" And Button9.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button1.Text = "X" And Button5.Text = "X" And Button9.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button1.Text = "X" And Button4.Text = "X" And Button7.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button1.Text = "O" And Button4.Text = "O" And Button7.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button3.Text = "X" And Button6.Text = "X" And Button9.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button3.Text = "O" And Button6.Text = "O" And Button9.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button3.Text = "X" And Btn5.Text = "X" And Button7.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button3.Text = "O" And Button5.Text = "O" And Button7.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button2.Text = "X" And ButtonTimer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button2.Text = "O" And Button5.Text = "O" And Button8.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button7.Text = "O" And Button8.Text = "O" And Button9.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button7.Text = "X" And Button8.Text = "X" And Button9.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button4.Text = "O" And Button5.Text = "O" And Button6.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button4.Text = "X" And Button5.Text = "X" And Button6.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
Else
GameOver()
End If
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button1.Text = "O" And Btn2.Text = "O" And Button3.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button1.Text = "O" And Button5.Text = "O" And Button9.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button1.Text = "X" And Button5.Text = "X" And Button9.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button1.Text = "X" And Button4.Text = "X" And Button7.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button1.Text = "O" And Button4.Text = "O" And Button7.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button3.Text = "X" And Button6.Text = "X" And Button9.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button3.Text = "O" And Button6.Text = "O" And Button9.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button3.Text = "X" And Btn5.Text = "X" And Button7.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button3.Text = "O" And Button5.Text = "O" And Button7.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button2.Text = "X" And ButtonTimer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button2.Text = "O" And Button5.Text = "O" And Button8.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button7.Text = "O" And Button8.Text = "O" And Button9.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button7.Text = "X" And Button8.Text = "X" And Button9.Text = "X" Then
Timer1.Stop()
MsgBox("Player 1 is the winner")
ElseIf Button4.Text = "O" And Button5.Text = "O" And Button6.Text = "O" Then
Timer1.Stop()
MsgBox("Player 2 is the winner")
ElseIf Button4.Text = "X" And Button5.Text = "X" And Button6.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
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()
شغل المشروع , واستمتع باللعب
عدل سابقا من قبل حامد خالد في السبت أبريل 16, 2011 8:04 pm عدل 1 مرات