I’m writing a tic tac toe program and i have the board set up, and the game works for the majority. determining who wins. what i am trying to do right now is after a winner is determined, a message box pops up and says who ever wins. I would like the message box to contain two buttons. One button with the text, “Ok for new game” and the second button with the text, “Cancel to exit”. I am using Visual Basic 2010 Express.
Here is the code I have:
Public Class Form1
Private turn As Integer = 1
Private play() As String = {"O", "X"}
Private board(2, 2) As String
Private Structure arrayIndex
Dim x As Integer
Dim y As Integer
End Structure
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For x As Integer = 1 To 9
Dim b As New Button With { _
.Width = 80, _
.Height = 80, _
.Text = "", _
.Location = New Point(60 + (((x - 1) Mod 3) * 80), 60 + (((x - 1) \ 3) * 80)), _
.Tag = New arrayIndex With {.x = (x - 1) Mod 3, .y = (x - 1) \ 3}}
Me.Controls.Add(b)
AddHandler b.Click, AddressOf buttons_click
Next
Me.SetClientSizeCore(360, 360)
End Sub
Private Sub buttons_click(ByVal sender As System.Object, ByVal e As System.EventArgs)
If DirectCast(sender, Button).Text <> "" Then Return
DirectCast(sender, Button).Text = play(turn Mod 2)
Dim index As arrayIndex = DirectCast(DirectCast(sender, Button).Tag, arrayIndex)
board(index.x, index.y) = play(turn Mod 2)
turn += 1
winner()
End Sub
Private Sub winner()
Dim rows(7) As String
rows(0) = board(0, 0) & board(1, 0) & board(2, 0)
rows(1) = board(0, 1) & board(1, 1) & board(2, 1)
rows(2) = board(0, 2) & board(1, 2) & board(2, 2)
rows(3) = board(0, 0) & board(0, 1) & board(0, 2)
rows(4) = board(1, 0) & board(1, 1) & board(1, 2)
rows(5) = board(2, 0) & board(2, 1) & board(2, 2)
rows(6) = board(0, 0) & board(1, 1) & board(2, 2)
rows(7) = board(2, 0) & board(1, 1) & board(0, 2)
For x As Integer = 0 To 7
If rows(x).Length = 3 AndAlso (rows(x)(0) = rows(x)(1) AndAlso rows(x)(0) = rows(x)(2)) Then
MessageBox.Show(rows(x)(0) & "'s winsssss!", "We have a winner!", MessageBoxButtons.OKCancel, MessageBoxIcon.Information)
If DialogResult.OK Then
turn = 1
ReDim board(2, 2)
For Each ctrl As Control In Controls
ctrl.Text = ""
Next
Return
Else
Me.Close()
End If
End Sub
End Class
The easiest way to do that is by creating a new
Formthat functions as aMessageBox. There are manyAPIto customized theMessageBoxbut gives you extra time. So this is what you are going to do.FalseFormBorderStyleto FixedDialog so it will not be sizeableOk for new gameandCancel to exit)StartUpPositiontoCenterFormAdd this code to
On for New Game Button(Click event)Add this code to
Cancel to exit(Click event)When the game is finished, try to call the new form you have created.
Hope this helps you.