Dim WhoIs As Byte ' µÑÇá»Ãºè§ºÍ¡ÇèÒã¤ÃàÃÔèÁ¡è͹
Dim Target_X As String ' ËÁÒÂàÅ¢µÒÃÒ§ OX ¢Í§ X
Dim Target_O As String ' ËÁÒÂàÅ¢µÒÃÒ§ OX ¢Í§ O
Dim CounterGame As Integer ' ¹Ñº¤ÃÑé§¡ÒäԴà¾×èÍËÒàÊÁÍ
' ------------------------------------------
' àÃÔèÁà¡ÁÊì
' ------------------------------------------
Private Sub Worksheet_Activate()
CounterGame = 0
Range("A1:C3").Value = Empty
WhoIs = Not WhoIs
If WhoIs Then
Range("$E$1").Value = "¼Á¡è͹"
Call Random_O
Else
Range("$E$1").Value = "¤Ø³¡è͹"
End If
End Sub
' ------------------------------------------
' àÁ×èͤÅÔê¡»ØèÁ OX
' ------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Address
Case Is = "$A$1", "$B$1", "$C$1", "$A$2", "$B$2", "$C$2", "$A$3", "$B$3", "$C$3"
If Target.Value = Empty Then
CounterGame = CounterGame + 1
If Target.Value = Empty Then Target.Value = "X"
R = FindGame("O", Empty)
If R <> "None" Then
Range(R).Value = "O"
Else
R = FindGame("X", Empty)
If R <> "None" Then Range(R).Value = "O" Else Call Random_O
End If
If FindGame("X", "X") <> "None" Then
MsgBox "¤Ø³ª¹Ð": Call Worksheet_Activate
ElseIf FindGame("O", "O") <> "None" Then
MsgBox "¼Áª¹Ð": Call Worksheet_Activate
End If
If CounterGame >= 4 Then MsgBox "àÊÁÍ": Call Worksheet_Activate
End If
Range("$E$2").Value = Empty
Case Else
Range("$E$2").Value = "ÍÍ¡¹Í¡...¡Ãͺ"
End Select
End Sub
Private Function RangeOfNum(R As Integer) As String
Select Case R
Case Is = 1: RangeOfNum = "$A$1"
Case Is = 2: RangeOfNum = "$B$1"
Case Is = 3: RangeOfNum = "$C$1"
Case Is = 4: RangeOfNum = "$A$2"
Case Is = 5: RangeOfNum = "$B$2"
Case Is = 6: RangeOfNum = "$C$2"
Case Is = 7: RangeOfNum = "$A$3"
Case Is = 8: RangeOfNum = "$B$3"
Case Is = 9: RangeOfNum = "$C$3"
End Select
End Function
' ------------------------------------------
' ÊØèÁ»ØèÁãËé O
' ------------------------------------------
Private Function Random_O()
Dim R As Integer '
Randomize ' ÊØèÁ¤èÒãËÁè•Ø¡¤ÃÑé§àÁ×èÍàÃÔèÁ•Ó§Ò¹
Do ' •Ó...
R = ((Rnd * 100) Mod 9) + 1 'ÊØèÁà»éÒËÁÒ O 1 ¶Ö§ 9
Loop While Range(RangeOfNum(R)).Value <> Empty ' ǹ¡ÅѺä»ãËÁè¶éÒ à«ÅÅìà»éÒËÁÒ O äÁèÇèÒ§
Range(RangeOfNum(R)).Value = "O"
End Function
' -------------------------------------------------------------------
' ËÒ•Ò§à´Ô¹ãËéâ»Ãá¡ÃÁ... ËÃ×ÍÊèǹ¢Í§ »ÑÒ»ÃдÔɰ AI
' ------------------------------------------------------------------
Private Function FindGame(SymBol1 As String, SymBol2) As String
' ¿Ñ§¡ìªÑè¹Êèǹ¹Õé´Ù§èÒ¤ÃѺ...àÁ×èÍà¢Õ¹ÍÍ¡ÁÒáÅéÇ...
' áµè¶éÒ¹Óâ»Ãá¡ÃÁ¼Áä»à»ÃÕºà•Õº¡Ñº OX ¢Í§•èÒ¹Í×è¹..ææ ÍÒ¨¨Ð "§§" µèÒ§¡Ñ¹ä»
' áµè¼Å¢Í§â»Ãá¡ÃÁ¡çᵡµèÒ§¡Ñ¹ä»´éÇÂ...•Ñé§¡Òõͺʹͧ¢Í§ AI áÅÐ ¤ÇÒÁà»ç¹ä»
' ä´é¢Í§â»Ãá¡ÃÁ•ÕèÂ×´ËÂØè¹¡ÇèÒ...áÅФԴẺäÁè«Ñº«é͹...ãËé§§àÊÕÂàͧàÁ×èÍà¢Õ¹â»Ãá¡ÃÁ
Select Case True
Case SymBol1 = Range("$A$1").Value And Range("$A$1").Value = Range("$B$1").Value And Range("$C$1").Value = SymBol2: FindGame = "$C$1"
Case SymBol1 = Range("$A$1").Value And Range("$A$1").Value = Range("$C$1").Value And Range("$B$1").Value = SymBol2: FindGame = "$B$1"
Case SymBol1 = Range("$B$1").Value And Range("$B$1").Value = Range("$C$1").Value And Range("$A$1").Value = SymBol2: FindGame = "$A$1"
Case SymBol1 = Range("$A$2").Value And Range("$A$2").Value = Range("$B$2").Value And Range("$C$2").Value = SymBol2: FindGame = "$C$2"
Case SymBol1 = Range("$A$2").Value And Range("$A$2").Value = Range("$C$2").Value And Range("$B$2").Value = SymBol2: FindGame = "$B$2"
Case SymBol1 = Range("$B$2").Value And Range("$B$2").Value = Range("$C$2").Value And Range("$A$2").Value = SymBol2: FindGame = "$A$2"
Case SymBol1 = Range("$A$3").Value And Range("$A$3").Value = Range("$B$3").Value And Range("$C$3").Value = SymBol2: FindGame = "$C$3"
Case SymBol1 = Range("$A$3").Value And Range("$A$3").Value = Range("$C$3").Value And Range("$B$3").Value = SymBol2: FindGame = "$B$3"
Case SymBol1 = Range("$B$3").Value And Range("$B$3").Value = Range("$C$3").Value And Range("$A$3").Value = SymBol2: FindGame = "$A$3"
Case SymBol1 = Range("$A$1").Value And Range("$A$1").Value = Range("$A$2").Value And Range("$A$3").Value = SymBol2: FindGame = "$A$3"
Case SymBol1 = Range("$A$1").Value And Range("$A$1").Value = Range("$A$3").Value And Range("$A$2").Value = SymBol2: FindGame = "$A$2"
Case SymBol1 = Range("$A$2").Value And Range("$A$2").Value = Range("$A$3").Value And Range("$A$1").Value = SymBol2: FindGame = "$A$1"
Case SymBol1 = Range("$B$1").Value And Range("$B$1").Value = Range("$B$2").Value And Range("$B$3").Value = SymBol2: FindGame = "$B$3"
Case SymBol1 = Range("$B$1").Value And Range("$B$1").Value = Range("$B$3").Value And Range("$B$2").Value = SymBol2: FindGame = "$B$2"
Case SymBol1 = Range("$B$2").Value And Range("$B$2").Value = Range("$B$3").Value And Range("$B$1").Value = SymBol2: FindGame = "$B$1"
Case SymBol1 = Range("$C$1").Value And Range("$C$1").Value = Range("$C$2").Value And Range("$C$3").Value = SymBol2: FindGame = "$C$3"
Case SymBol1 = Range("$C$1").Value And Range("$C$1").Value = Range("$C$3").Value And Range("$C$2").Value = SymBol2: FindGame = "$C$2"
Case SymBol1 = Range("$C$2").Value And Range("$C$2").Value = Range("$C$3").Value And Range("$C$1").Value = SymBol2: FindGame = "$C$1"
Case SymBol1 = Range("$A$1").Value And Range("$A$1").Value = Range("$B$2").Value And Range("$C$3").Value = SymBol2: FindGame = "$C$3"
Case SymBol1 = Range("$A$1").Value And Range("$A$1").Value = Range("$C$3").Value And Range("$B$2").Value = SymBol2: FindGame = "$B$2"
Case SymBol1 = Range("$B$2").Value And Range("$B$2").Value = Range("$C$3").Value And Range("$A$1").Value = SymBol2: FindGame = "$A$1"
Case SymBol1 = Range("$C$1").Value And Range("$C$1").Value = Range("$B$2").Value And Range("$A$3").Value = SymBol2: FindGame = "$A$3"
Case SymBol1 = Range("$C$1").Value And Range("$C$1").Value = Range("$A$3").Value And Range("$B$2").Value = SymBol2: FindGame = "$B$2"
Case SymBol1 = Range("$B$2").Value And Range("$B$2").Value = Range("$A$3").Value And Range("$C$1").Value = SymBol2: FindGame = "$C$1"
Case Else: FindGame = "None"
End Select
End Function