All pastes #1979095 Raw Edit

Stuff

public text v1 · immutable
#1979095 ·published 2010-11-01 21:48 UTC
rendered paste body
s System.IO

Module Module1

    Dim IconOne As String = "X", IconTwo As String = "O"
    Dim BoardSquares(3, 3) As String, PlayerScore(2) As Integer
    Dim GameOver As Integer = 1, MoveCount As Integer = 0
    Dim StartPlayer As Integer
   
    Sub Main()
        Dim Response As String

        Call StartOfGame()

        Console.WriteLine()
        Console.WriteLine("Do You Wish To Play Again? (Y/N) : ") : Response = Console.ReadLine

        If Response.ToLower() = "y" Then
            'Resets Variables *?Allow icons Not To Be Reset*?
            IconOne = "X"
            IconTwo = "O"
            GameOver = 1
            StartPlayer = 0
            Call Main()
        End If

    End Sub

    Sub StartOfGame()
        Randomize()
        Dim Response, Icon As String
        Dim Starter As Integer = CInt(Int((2 * Rnd()) + 1))
        Call AssignArray()

        Console.Write("Do You Wish To Load A Saved Game (Y/N) : ") : Response = Console.ReadLine()

        If Response.ToLower() = "y" Then
            Call Open()
        End If

        'Allows The Player Who Starts To Be A Random Choice
        StartPlayer = Starter
        'Allows Choice Of Icon Used In The Grid
        Console.Write("Player 1 Choose Your Icon (Default : X) : ") : Icon = Console.ReadLine
        If Icon <> "" Then
            Iconone = Icon
            Icon = ""
        End If
        Console.WriteLine()
        Console.Write("Player 2 Choose Your Icon (Default : O) : ") : Icon = Console.ReadLine
        If Icon <> "" Then
            Icontwo = Icon
        End If
        Console.WriteLine()
        Console.WriteLine("Player " + Starter.ToString() + " Starts The Game.")
        Console.WriteLine()

        Call Showboard()
        Call Move()

    End Sub

    Sub Move()
        Dim Input, Vernum, Hornum As String, PlayerMove As Integer
        On Error Resume Next

        Do
            If MoveCount = 0 Then
                Console.Write("Player " + StartPlayer.ToString() + " Enter Position (Type Help For Help) : ") : Input = Console.ReadLine
            Else
                Console.Write("Player " + PlayerMove.ToString() + " Enter Position : ") : Input = Console.ReadLine
            End If

            If Input.ToLower() = "help" Then
                Console.WriteLine()
                Console.WriteLine("Enter Vertical Coordinate First.")
                Console.WriteLine("Type Save To Save The Game And Exit.")
                Console.WriteLine("Type Quit To Exit Without Saving.")
                Console.WriteLine()
            ElseIf Input.ToLower() = "save" Then
                'Call Save()
                Exit Sub
            ElseIf Input.ToLower() = "quit" Then
                Exit Sub
            End If

            If Input.ToLower <> "help" And Input.ToLower() <> "save" And Input.ToLower() <> "quit" Then
                Vernum = Left$(Input, 1)
                Hornum = Right$(Input, 1)
                If MoveCount = 0 Or PlayerMove = "" Then
                    PlayerMove = MoveCount + StartPlayer
                End If

                PlayerMove = PlayerMove Mod 2

                Select Case Hornum.ToLower()
                    Case Is = "a"
                        Hornum = 1
                    Case Is = "b"
                        Hornum = 2
                    Case Is = "c"
                        Hornum = 3
                End Select

                If BoardSquares(Vernum, Hornum) <> " " Then
                    Console.WriteLine()
                    Console.WriteLine("You Tried To Use A Square That Is Already Taken. Try Again")
                    Call Move()
                End If

                'Determines Who Placed The Placed The Piece And Changes Player Value For Next Players Turn
                Select Case PlayerMove
                    Case 0
                        BoardSquares(Vernum, Hornum) = IconTwo
                        PlayerMove = 1
                    Case Else
                        BoardSquares(Vernum, Hornum) = IconOne
                        PlayerMove = 2
                End Select

                Call WinCheck()
                Console.WriteLine()
                Call Showboard()
                Console.WriteLine()

            End If
        Loop Until GameOver <> 1

    End Sub


    Sub WinCheck()
        Dim Winner As String, WinPlayer As Integer

        If (BoardSquares(1, 1) = BoardSquares(1, 2) And BoardSquares(1, 3) = BoardSquares(1, 2) And BoardSquares(1, 2) <> " ") Or _
        (BoardSquares(2, 1) = BoardSquares(2, 2) And BoardSquares(2, 3) = BoardSquares(2, 2) And BoardSquares(2, 2) <> " ") Or _
        (BoardSquares(3, 1) = BoardSquares(3, 2) And BoardSquares(3, 3) = BoardSquares(3, 2) And BoardSquares(3, 2) <> " ") Or _
        (BoardSquares(1, 1) = BoardSquares(1, 2) And BoardSquares(1, 3) = BoardSquares(1, 2) And BoardSquares(1, 2) <> " ") Or _
        (BoardSquares(1, 1) = BoardSquares(2, 1) And BoardSquares(3, 1) = BoardSquares(2, 1) And BoardSquares(2, 1) <> " ") Or _
        (BoardSquares(1, 2) = BoardSquares(2, 2) And BoardSquares(3, 2) = BoardSquares(2, 2) And BoardSquares(2, 2) <> " ") Or _
        (BoardSquares(1, 3) = BoardSquares(2, 3) And BoardSquares(3, 3) = BoardSquares(2, 3) And BoardSquares(2, 3) <> " ") Or _
        (BoardSquares(1, 1) = BoardSquares(2, 2) And BoardSquares(3, 3) = BoardSquares(2, 2) And BoardSquares(2, 2) <> " ") Or _
        (BoardSquares(3, 1) = BoardSquares(2, 2) And BoardSquares(1, 3) = BoardSquares(2, 2) And BoardSquares(2, 2) <> " ") Then

            GameOver = 2
        End If

        If MoveCount = 9 Then
            GameOver = 3
        End If

        If GameOver = 2 Then
            WinPlayer = StartPlayer + (MoveCount - 1)
            WinPlayer = WinPlayer Mod 2

            Select Case WinPlayer
                Case 0
                    Winner = 2
                    PlayerScore(2) = PlayerScore(2) + 1
                Case Else
                    Winner = 1
                    PlayerScore(1) = PlayerScore(1) + 1
            End Select
            Console.WriteLine()
            Console.WriteLine("Player " + Winner + " Wins.")
        ElseIf GameOver = 3 Then
            Console.WriteLine()
            Console.WriteLine("The Game Is A Draw")
        End If
        MoveCount += 1

    End Sub

    Sub Showboard()

        Console.WriteLine("   A B C")
        Console.WriteLine("  -------")
        Console.WriteLine("1 |" + Boardsquares(1, 1) + "|" + Boardsquares(1, 2) + "|" + Boardsquares(1, 3) + "|")
        Console.WriteLine("  -------")
        Console.WriteLine("2 |" + Boardsquares(2, 1) + "|" + Boardsquares(2, 2) + "|" + Boardsquares(2, 3) + "|")
        Console.WriteLine("  -------")
        Console.WriteLine("3 |" + Boardsquares(3, 1) + "|" + Boardsquares(3, 2) + "|" + Boardsquares(3, 3) + "|")
        Console.WriteLine("  -------")

    End Sub

    Sub AssignArray()
        For i As Integer = 1 To 3
            For i2 As Integer = 1 To 3
                Boardsquares(i, i2) = " "
            Next
        Next
    End Sub

    Sub Save()
        Dim CurrentWriter As StreamWriter
        Dim DefaultFilename As String = "Noughtscrossessave.txt", DefaultPath As String = "C:\Users\Daniel\Documents\Text\"
        Dim FileName, ExportData As String

        Console.Write("Enter File Name For Save (Blank For Default) : ") : FileName = Console.ReadLine

        If FileName = "" Then
            FileName = DefaultPath + DefaultFilename
        Else
            FileName = DefaultPath + FileName
        End If

        CurrentWriter = New StreamWriter(FileName)

        For i As Integer = 1 To 3
            For i2 As Integer = 1 To 3
                ExportData = BoardSquares(i, i2)
                CurrentWriter.WriteLine(ExportData)
            Next
        Next

        For i As Integer = 1 To 2
            ExportData = CStr(PlayerScore(i))
            CurrentWriter.WriteLine(ExportData)
        Next

        ExportData = CStr(MoveCount)
        CurrentWriter.WriteLine(ExportData)

        ExportData = CStr(StartPlayer)
        CurrentWriter.WriteLine(ExportData)

        ExportData = IconOne
        CurrentWriter.WriteLine(ExportData)

        ExportData = IconTwo
        CurrentWriter.WriteLine(ExportData)

        CurrentWriter.Close()

    End Sub 'Save

    Sub Open()
        Dim CurrentReader As StreamReader
        Dim DefaultFilename As String = "Noughtscrossessave.txt", DefaultPath As String = "C:\Users\Daniel\Documents\Text\"
        Dim FileName, ImportedData As String
        Call AssignArray()

        Console.Write("Enter File Name For Open (Blank For Default) : ") : FileName = Console.ReadLine

        If FileName = "" Then
            FileName = DefaultPath + DefaultFilename
        Else
            FileName = DefaultPath + FileName
        End If

        CurrentReader = New StreamReader(FileName)

        For i As Integer = 1 To 3
            For i2 As Integer = 1 To 3
                ImportedData = CurrentReader.ReadLine()
                BoardSquares(i, i2) = ImportedData
            Next
        Next

        For i As Integer = 1 To 2
            ImportedData = CurrentReader.ReadLine()
            PlayerScore(i) = CInt(ImportedData)
        Next

        ImportedData = CurrentReader.ReadLine()
        MoveCount = CInt(ImportedData)

        ImportedData = CurrentReader.ReadLine()
        StartPlayer = CInt(ImportedData)

        ImportedData = CurrentReader.ReadLine()
        IconOne = ImportedData

        ImportedData = CurrentReader.ReadLine()
        IconTwo = ImportedData

        CurrentReader.Close()

        Console.WriteLine("Player 1 Icon is : " + IconOne)
        Console.WriteLine("Player 2 Icon is : " + IconTwo)

        Console.WriteLine()
        Showboard()
        Console.WriteLine()
        Move()

    End Sub 'Open

    Function CurrentPlayer()
        Dim CPlayer, Temp1, Temp2 As Integer

        Temp1 = StartPlayer + MoveCount
        Temp2 = Temp1 Mod 2

        Select Case Temp2

            Case 0
                CPlayer = 2
            Case Else
                CPlayer = 1
        End Select

        Return CPlayer
    End Function
End Module