Search Forum
(53671 Postings)
Search Site/Articles

Archived Articles
712 Articles

C# Books
C# Consultants
What Is C#?
Download Compiler
Code Archive
Archived Articles
Advertise
Contribute
C# Jobs
Beginners Tutorial
C# Contractors
C# Consulting
Links
C# Manual
Contact Us
Legal

GoDiagram for .NET from Northwoods Software www.nwoods.com


 
Printable Version

Kovan's Tic-Tac-Toe
By Kovan

(I quickly did this so if there is any mistakes in it please let me know)

Screen shot of what it looks like. (if you have any questions you can email me at kovan@rogers.com) (you need 9 label controls Form variables.

Private playerLastPlayed As Integer = 0 'initially no one went

Which will hold the value of the last player that went.

When each label is clicked, this function will get called.

    Private Sub Label1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 
    Label1.Click, Label2.Click, Label3.Click, Label4.Click, Label5.Click, Label6.Click, 
    Label7.Click, Label8.Click, Label9.Click
        labelClicked(sender)
    End Sub

    Private Sub labelClicked(ByVal lbl As Label)
        If RadioButton1.Checked Then
            If playerLastPlayed = 1 Then
                MessageBox.Show("its not your turn")
                Return
            End If
            lbl.Text = "X"
            playerLastPlayed = 1 'player one played
        Else
            If playerLastPlayed = 2 Then
                MessageBox.Show("its not your turn")
                Return
            End If
            lbl.Text = "O"
            playerLastPlayed = 2 'player two played
        End If

        'disable so its no longer clickable (make that square used)
        lbl.Enabled = False
        checkForWinner(1)
        checkForWinner(2)
    End Sub
Now we must check to see if there is a winner.
   Private Sub checkForWinner(ByVal playerNumber As Integer)

        Dim chr As String = ""

        Select Case playerNumber
            Case 1
                chr = "X"
            Case 2
                chr = "O"
        End Select

        'check for column 1,2,3
        'check for column 4,5,6
        'check for column 7,8,9
        'check for column 1,4,7
        'check for column 2,5,8
        'check for column 3,6,9
        'check for column 1,5,9
        'check for column 3,5,7

        If (Label1.Text = chr And Label2.Text = chr And Label3.Text = chr) _
        Or (Label4.Text = chr And Label5.Text = chr And Label6.Text = chr) _
        Or (Label7.Text = chr And Label8.Text = chr And Label9.Text = chr) _
        Or (Label1.Text = chr And Label4.Text = chr And Label7.Text = chr) _
        Or (Label2.Text = chr And Label5.Text = chr And Label8.Text = chr) _
        Or (Label3.Text = chr And Label6.Text = chr And Label9.Text = chr) _
        Or (Label1.Text = chr And Label5.Text = chr And Label9.Text = chr) _
        Or (Label3.Text = chr And Label5.Text = chr And Label7.Text = chr) Then

            'we found a winner
            If playerNumber = 1 Then
                MessageBox.Show("player one WON")
                reset()
            ElseIf playerNumber = 2 Then
                MessageBox.Show("player two WON")
                reset()
 
            End If 
        End If
    End Sub  
Now lets see the reset function.
    Private Sub reset()
        'remove the x, o
        For Each lbl As Control In Me.Controls
            If lbl.GetType Is GetType(Label) Then
                lbl.Text = ""
            End If
        Next
 
        'reset last player played.
        playerLastPlayed = 0
    End Sub

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        reset()
    End Sub
Download Source