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