private void ReadPlayerData(string filePath) { if (File.Exists(filePath)) { StreamReader reader = new StreamReader(filePath); List <string> lines = ListOfLines(filePath); for (int lineCtr = 0; lineCtr < lines.Count; lineCtr++) { MoveVector2 combination = ReturnCombination(lines[lineCtr]); if (!combination.Equals(MoveVector2.EmptyVector)) { playerMoveHistory.Add(combination, ReturnMoves(lines[lineCtr + 2])); } } reader.Close(); playerAiMoveCombination = playerMoveHistory.ReturnKeys()[0]; //Skipping the study state and switching to predicting player moves states["Study"] = false; states["Make Predictions"] = true; } }
private bool ListContainsCombination(List <MoveVector2> list, MoveVector2 combination) { foreach (MoveVector2 vec in list) { if (combination.Equals(vec)) { return(true); } } return(false); }
public void SavePlayerData() { string currentFileName = @"Past Player Data\" + playerName.ToUpper() + ".txt"; if (!Directory.Exists(@"Past Player Data")) //Creating a new folder if it doesnt already exist { Directory.CreateDirectory(@"Past Player Data"); } if (File.Exists(currentFileName)) //Checking whether the players file exists { StreamReader reader = new StreamReader(currentFileName); List <MoveVector2> combinations = playerMoveHistory.ReturnKeys(); int lineCount = 0; //Updating the existing combinations while (!reader.EndOfStream) { string line = reader.ReadLine(); lineCount++; MoveVector2 combination = ReturnCombination(line); //Updating the existing combinations if (!combination.Equals(MoveVector2.EmptyVector)) { reader.Close(); if (ListContainsCombination(combinations, combination)) { List <string> lines = ListOfLines(currentFileName); string lineContents = ""; for (int a = 0; a < lines.Count; a++) { if (line == lines[a]) { lineContents = ReadFromLine(currentFileName, a + 2); foreach (MoveVector2 existingCombinations in combinations) { if (combination.Equals(existingCombinations)) { List <Move> moves = playerMoveHistory[existingCombinations]; foreach (Move move in moves) { lineContents += move.MoveName; } } } } } WriteOnLine(currentFileName, lineCount + 2, lineContents); break; } } } reader.Close(); //Adding new combinations to the file List <string> linesInFile = ListOfLines(currentFileName); foreach (MoveVector2 combination in combinations) { bool combinationExists = false; for (int a = 0; a < linesInFile.Count; a++) { if (combination.Equals(ReturnCombination(linesInFile[a]))) { combinationExists = false; break; } } if (!combinationExists) { string textCombination = "(" + combination.XComponent.MoveName + "," + combination.YComponent.MoveName + ")"; WriteOnLine(currentFileName, linesInFile.Count + 2, textCombination); linesInFile = ListOfLines(currentFileName); //Updating the list of lines } } } else { //Creating a new file and writing the players information to it StreamWriter writer = new StreamWriter(currentFileName); List <MoveVector2> keys = playerMoveHistory.ReturnKeys(); foreach (MoveVector2 combination in keys) { writer.WriteLine(""); writer.WriteLine("(" + combination.XComponent.MoveName + "," + combination.YComponent.MoveName + ")"); writer.WriteLine("/"); for (int a = 0; a < playerMoveHistory[combination].Count; a++) { writer.Write(playerMoveHistory[combination].ElementAt(a).MoveName + " "); } writer.WriteLine(""); } writer.Close(); } }