private void Jogada(int L, int C, char Caractere) { matriz[L, C] = Caractere; ListaAtual.Add(new Jogada(L, C, Caractere)); if (MotorTTC.JogoGanho(matriz)) { if (caracteremaquina == ListaAtual.Last().Caractere) { MessageBox.Show("O computador ganhou"); } else { Armazenamento.AdicionarBuffer(ListaAtual); MessageBox.Show("Você ganhou"); } panel2.Visible = false; Armazenamento.Salvar(ListaAtual); } else if (MotorTTC.Empate(matriz)) { MessageBox.Show("Empate"); } else if (lblJogador.Text == "jogador 2") { JogMaquina(); } }
public static void Salvar(List <Jogada> Lista) { string linha = null; foreach (var item in Lista) { linha += item.L + ";" + item.C + ";" + item.Caractere + ";"; } UsarBuffer = false; List <string> ListaAuxiliar = Armazenamento.Carregar(); UsarBuffer = true; if (ListaAuxiliar.Contains(linha)) { int Indice = ListaAuxiliar.IndexOf(linha); int Numero = int.Parse(ListaAuxiliar[Indice - 1].ToString()) + 1; ListaAuxiliar[Indice - 1] = Numero.ToString(); } else { ListaAuxiliar.Add("1"); ListaAuxiliar.Add(linha); } try { File.WriteAllLines(/*@"C:\Users\usuario\Desktop\*/ "Jogadas.txt", ListaAuxiliar); } catch (Exception) { MessageBox.Show("Não foi possivel criar/modificar o arquivo de jogadas"); } }
public static void JogadaMaquina(List <Jogada> ListaAtual, char[,] Matriz) { string Linha = ""; List <string> Lista = Armazenamento.Carregar(); if (ListaAtual.Count == 0 && Lista.Count != 0) { for (int i = 0; i < Lista.Count; i += 2) { ListaNumeros.Add(int.Parse(Lista[i])); int.Parse(Lista[i + 1][0].ToString()); if (Lista[i + 1][Lista[i + 1].Length - 1] == 'x') { caracteremaquina = 'x'; } else { caracteremaquina = 'c'; } ListaJogadas.Add(new Jogada((int.Parse(Lista[i + 1][0].ToString())), int.Parse(Lista[i + 1][2].ToString()), caracteremaquina)); } int Maior = 0; for (int i = 0; i < ListaNumeros.Count; i++) { if (ListaNumeros[i] > Maior) { Maior = ListaNumeros[i]; J = ListaJogadas[i]; } } return; } if (SequenciaDetectada(Matriz, caracteremaquina)) { return; } if (caracteremaquina == 'x') { if (SequenciaDetectada(Matriz, 'c')) { return; } } else if (SequenciaDetectada(Matriz, 'x')) { return; } ListaJogadas.Clear(); ListaNumeros.Clear(); foreach (var item in ListaAtual) { Linha += item.L + ";" + item.C + ";" + item.Caractere + ";"; } Lista = Armazenamento.Carregar(); Regex rg = new Regex(Linha, RegexOptions.None); for (int i = 1; i < Lista.Count; i += 2) { if (rg.IsMatch(Lista[i]) && Lista[i].Length > Linha.Length) { string Auxiliar = Linha; Linha = Lista[i].Replace(Linha, ""); if (Linha[Linha.Length - 2] == caracteremaquina) { J = new Jogada(int.Parse(Linha[0].ToString()), int.Parse(Linha[2].ToString()), Linha[4]); } else { J = new Jogada(int.Parse(Linha[6].ToString()), int.Parse(Linha[8].ToString()), Linha[10]); } if (ValidaJogada(Matriz, J.L, J.C)) { ListaJogadas.Add(J); ListaNumeros.Add(int.Parse(Lista[i - 1])); } Linha = Auxiliar; } } if (ListaJogadas.Count != 0) { return; } List <Jogada> Jogadas = new List <Jogada>(); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (Matriz[i, j] != 'c' && Matriz[i, j] != 'x') { Jogadas.Add(new Jogada(i, j, caracteremaquina)); } } } Random r = new Random(); if (Jogadas.Count() > 0) { J = Jogadas[r.Next(0, Jogadas.Count() - 1)]; } else { J = Jogadas[0]; } }