# User:Pluke/Noughts

```Module Module1

Sub main()
Dim board(3, 3) As Char

board(1, 1) = "-"
board(1, 2) = "-"
board(1, 3) = "-"
board(2, 1) = "-"
board(2, 2) = "-"
board(2, 3) = "-"
board(3, 1) = "-"
board(3, 2) = "-"
board(3, 3) = "-"

display(board)
game(board)
End Sub

Sub game(ByVal b(,) As Char)
Dim togo As Char
Do
If togo = "x" Then
togo = "o"
Else
togo = "x"
End If

move(b, togo)
display(b)
Loop While Not (win(b, togo)) And Not (drawn(b))
End Sub

Sub display(ByVal b(,) As Char)
For i = 0 To 3
For j = 0 To 3
Console.Write(b(i, j))
Next

Console.WriteLine()
Next
End Sub

Function win(ByVal b(,) As Char, ByVal p As Char)
For h = 1 To 3
If b(h, 1) = p And b(h, 2) = p And b(h, 3) = p Then 'column check
Console.WriteLine(p + " WINS!")
Return True
ElseIf b(1, h) = p And b(2, h) = p And b(3, h) = p Then 'row check
Console.WriteLine(p + " WINS!")
Return True
ElseIf b(1, 1) = p And b(2, 2) = p And b(3, 3) = p Then 'first diagonal check
Console.WriteLine(p + " WINS!")
Return True
ElseIf b(1, 3) = p And b(2, 2) = p And b(3, 1) = p Then  'second diagonal check
Console.WriteLine(p + " WINS!")
Return True

End If
Next

Return False
End Function

Sub move(ByRef b(,) As Char, ByVal p As Char)
Dim x, y As Integer
Dim move As String
Console.WriteLine(p + " - make your move in the format: x,y")
x = move.Substring(0, 1)
y = move.Substring(2, 1)
If b(x, y) = "-" Then
b(x, y) = p
display(b)
Else
Console.WriteLine("Invalid move!  Miss a turn")
End If
End Sub
Function drawn(ByVal b(,) As Char)
Dim c As Integer = 0 ' set a counter to keep track of how many spaces there are
For i = 0 To 3
For j = 0 To 3
If b(i, j) = "-" Then
c = c + 1
End If
Next
Next

If c = 9 Then
Console.WriteLine("Draw, game over!")
Return True
Else
Return False
End If
End Function

End Module
```