Results 1 to 10 of 10

Thread: [VB.Net] TicTacToe

Threaded View

  1. #1

    Thread Starter
    Super Moderator dday9's Avatar
    Join Date
    Mar 2011
    Posts
    12,374

    [VB.Net] TicTacToe

    This is the source code and the .exe.

    Features:
    -Player V Player
    -Player V CPU
    -Reset Score
    -Give up

    Notes:
    -I accenditally deleted all of my stuff, so I'm trying to rebuild everything I deleted. This was the first thing.

    Full Project:
    tic-tac-toe.zip

    Source:
    Code:
    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
    Update
    See post 8 & 9
    Last edited by dday9; Oct 21st, 2014 at 05:28 PM. Reason: Updated the code.
    "Code is like humor. When you have to explain it, it is bad." - Cory House
    VbLessons | HtmlLessons | CssLessons | Code Tags | Sword of Fury - Jameram

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width