0% found this document useful (0 votes)
119 views4 pages

Tic Tac Toe

This document contains code for a Tic Tac Toe game written in Visual Basic. It includes code to: 1) Initialize a new game by creating a 3x3 grid of panels and setting up click handlers. 2) Check for a winner after each turn by evaluating the tags of the panels for horizontal, vertical and diagonal matches. 3) Alternate turns between player 1 (X) and player 2 (O), with the computer making random moves for player 2. 4) Draw the X or O piece to the panel's background on each turn.

Uploaded by

Dhawan Gupta
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
119 views4 pages

Tic Tac Toe

This document contains code for a Tic Tac Toe game written in Visual Basic. It includes code to: 1) Initialize a new game by creating a 3x3 grid of panels and setting up click handlers. 2) Check for a winner after each turn by evaluating the tags of the panels for horizontal, vertical and diagonal matches. 3) Alternate turns between player 1 (X) and player 2 (O), with the computer making random moves for player 2. 4) Draw the X or O piece to the panel's background on each turn.

Uploaded by

Dhawan Gupta
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

TIC TAC TOE:

Option Strict On
Option Explicit On
Public Class Form1
Private grid(2, 2) As Panel
Private p1turn As Boolean
Private r As New Random
#Region "New/End game"
Private Sub newgame()
For i As Integer = pnl_Grid.Controls.Count - 1 To 0 Step -1
pnl_Grid.Controls.RemoveAt(i)
Next
For x As Integer = 0 To 2
For y As Integer = 0 To 2
Dim pnl As New Panel
With pnl
.BackgroundImage = Nothing
.BackgroundImageLayout = ImageLayout.Zoom
.BorderStyle = BorderStyle.FixedSingle
.Enabled = True
.Location = New Point(x * 100, y * 100)
.Size = New Size(100, 100)
.Tag = ""
End With
pnl_Grid.Controls.Add(pnl)
grid(x, y) = pnl
AddHandler pnl.Click, AddressOf pnl_Click
Next
Next
p1turn = True
End Sub
Private Function checkend() As Boolean
'Horizontal
If grid(0, 0).Tag.ToString = "p1" AndAlso grid(1, 0).Tag.ToString = "p1" AndAlso grid(2, 0).Tag.ToString = "p1" Then
MessageBox.Show("Player1 wins")
Call newgame()
Return True
ElseIf grid(0, 0).Tag.ToString = "p2" AndAlso grid(1, 0).Tag.ToString = "p2" AndAlso grid(2, 0).Tag.ToString = "p2"
Then
MessageBox.Show("Player2 wins")
Call newgame()
Return True
ElseIf grid(0, 1).Tag.ToString = "p1" AndAlso grid(1, 1).Tag.ToString = "p1" AndAlso grid(2, 1).Tag.ToString = "p1"
Then
MessageBox.Show("Player1 wins")
Call newgame()
Return True
ElseIf grid(0, 1).Tag.ToString = "p2" AndAlso grid(1, 1).Tag.ToString = "p2" AndAlso grid(2, 1).Tag.ToString = "p2"
Then
MessageBox.Show("Player2 wins")
Call newgame()
Return True
ElseIf grid(0, 2).Tag.ToString = "p1" AndAlso grid(1, 2).Tag.ToString = "p1" AndAlso grid(2, 2).Tag.ToString = "p1"
Then
MessageBox.Show("Player1 wins")
Call newgame()
Return True
ElseIf grid(0, 2).Tag.ToString = "p2" AndAlso grid(1, 2).Tag.ToString = "p2" AndAlso grid(2, 2).Tag.ToString = "p2"
Then
MessageBox.Show("Player2 wins")
Call newgame()
Return True
'Horizontal
ElseIf grid(0, 0).Tag.ToString = "p1" AndAlso grid(0, 1).Tag.ToString = "p1" AndAlso grid(0, 2).Tag.ToString = "p1"
Then
MessageBox.Show("Player1 wins")
Call newgame()
Return True
ElseIf grid(0, 0).Tag.ToString = "p2" AndAlso grid(0, 1).Tag.ToString = "p2" AndAlso grid(0, 2).Tag.ToString = "p2"
Then
MessageBox.Show("Player2 wins")
Call newgame()
Return True
ElseIf grid(1, 0).Tag.ToString = "p1" AndAlso grid(1, 1).Tag.ToString = "p1" AndAlso grid(1, 2).Tag.ToString = "p1"
Then
MessageBox.Show("Player1 wins")
Call newgame()
Return True
ElseIf grid(1, 0).Tag.ToString = "p2" AndAlso grid(1, 1).Tag.ToString = "p2" AndAlso grid(1, 2).Tag.ToString = "p2"
Then
MessageBox.Show("Player2 wins")
Call newgame()
Return True
ElseIf grid(2, 0).Tag.ToString = "p1" AndAlso grid(2, 1).Tag.ToString = "p1" AndAlso grid(2, 2).Tag.ToString = "p1"
Then
MessageBox.Show("Player1 wins")
Call newgame()
Return True
ElseIf grid(2, 0).Tag.ToString = "p2" AndAlso grid(2, 1).Tag.ToString = "p2" AndAlso grid(2, 2).Tag.ToString = "p2"
Then
MessageBox.Show("Player2 wins")
Call newgame()
Return True
'Diagonal
ElseIf grid(0, 0).Tag.ToString = "p1" AndAlso grid(1, 1).Tag.ToString = "p1" AndAlso grid(2, 2).Tag.ToString = "p1"
Then
MessageBox.Show("Player1 wins")
Call newgame()
Return True
ElseIf grid(0, 0).Tag.ToString = "p2" AndAlso grid(1, 1).Tag.ToString = "p2" AndAlso grid(2, 2).Tag.ToString = "p2"
Then
MessageBox.Show("Player2 wins")
Call newgame()
Return True
ElseIf grid(0, 2).Tag.ToString = "p1" AndAlso grid(1, 1).Tag.ToString = "p1" AndAlso grid(2, 0).Tag.ToString = "p1"
Then
MessageBox.Show("Player1 wins")
Call newgame()
Return True
ElseIf grid(0, 2).Tag.ToString = "p2" AndAlso grid(1, 1).Tag.ToString = "p2" AndAlso grid(2, 0).Tag.ToString = "p2"
Then
MessageBox.Show("Player2 wins")
Call newgame()
Return True
Else
Return False
End If
End Function
#End Region
#Region "Draw Bitmap and AI"
Private Function drawpiece() As Bitmap
drawpiece = New Bitmap(50, 50)
Dim g As Graphics = Graphics.FromImage(drawpiece)
'p1 is x
'cpu is o
If p1turn Then
Dim pt1, pt2, pt3, pt4 As Point
pt1 = New Point(1, 1) 'Upper-Left
pt2 = New Point(49, 49) 'Lower-Right
pt3 = New Point(1, 49) 'Lower-Left
pt4 = New Point(49, 1) 'Upper-Right
g.DrawLine(Pens.Red, pt1, pt2)
g.DrawLine(Pens.Red, pt3, pt4)
g.Save()
Else
Dim rect As New Rectangle(1, 1, 48, 48)
g.DrawEllipse(Pens.Blue, rect)
g.Save()
End If
Return drawpiece
End Function
Private Function rndPanel() As Panel
Dim i As Integer = 0
Dim templist As New List(Of Panel)
For Each pnl As Panel In pnl_Grid.Controls.OfType(Of Panel)()
If pnl.Enabled = True Then
i += 1
templist.Add(pnl)
End If
Next
rndPanel = templist.Item(r.Next(0, i))
Return rndPanel
End Function
#End Region
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Call newgame()
End Sub
Private Sub pnl_Click(sender As Object, e As EventArgs)
Dim pnl As Panel = DirectCast(sender, Panel)
pnl.BackgroundImage = drawpiece() : pnl.Tag = "p1" : pnl.Enabled = False
p1turn = False
If checkend() = True Then
Exit Sub
End If
Dim randpnl As Panel = rndPanel()
randpnl.BackgroundImage = drawpiece() : randpnl.Tag = "p2" : randpnl.Enabled = False
p1turn = True
If checkend() = True Then
Exit Sub
End If
End Sub
End Class
Output:

You might also like