public void JogadorEfetuouJogada(BotaoPeca ultimaJogada) { if (ultimaJogada.Valor != (int)EnumEstado.Empate) { return; } if (estadoPartida == EnumEstadoPartida.JOGADOR01) { ultimaJogada.PosicionarPeca(jogador1); estadoPartida = EnumEstadoPartida.JOGADOR02; } else if (!config.versusIA && estadoPartida == EnumEstadoPartida.JOGADOR02) { ultimaJogada.PosicionarPeca(jogador2); estadoPartida = EnumEstadoPartida.JOGADOR01; } int[,] tab = this.tabuleiroAtual.Tabuleiro; tab[ultimaJogada.coord.x, ultimaJogada.coord.y] = ultimaJogada.Valor; this.tabuleiroAtual.Tabuleiro = tab; if (this.tabuleiroAtual.EhEstadoFinal()) { estadoPartida = EnumEstadoPartida.FINALIZANDOJOGO; return; } }
IEnumerator JogadaIA() { isCoroutineStarted = true; yield return(new WaitForSeconds(3)); TOEstado novoEstado = null; Random rnd = new Random(); int rndI = 0; List <TOEstado> lista; switch (config.NivelDificuldade) { case EnumDificuldade.FACIL: lista = algo.GeraEstados(this.tabuleiroAtual, jogadorIa); rndI = rnd.Next(0, lista.Count); novoEstado = lista[rndI]; break; case EnumDificuldade.MEDIO: rndI = rnd.Next(0, 100); if (rndI > 60) { lista = algo.GeraEstados(this.tabuleiroAtual, jogadorIa); rndI = rnd.Next(0, lista.Count); novoEstado = lista[rndI]; } else { novoEstado = algo.MinMaxV2(this.tabuleiroAtual, jogadorIa, 0); } break; case EnumDificuldade.DIFICIL: novoEstado = algo.MinMaxV2(this.tabuleiroAtual, jogadorIa, 0); break; } this.tabuleiroAtual = novoEstado; MatrixParaTabuleiro(novoEstado.Tabuleiro); if (this.tabuleiroAtual.EhEstadoFinal()) { estadoPartida = EnumEstadoPartida.FINALIZANDOJOGO; } else { estadoPartida = EnumEstadoPartida.JOGADOR01; } isCoroutineStarted = false; }
public void TabuleiroInicial() { tabuleiroAtual = new TOEstado(); //Proximo a jogar eh o Min tabuleiroAtual.Tabuleiro = new Int32[, ] { { 0, 0, 0 }, { 0, 0, 0 }, { 0, 0, 0 } }; MatrixParaTabuleiro(tabuleiroAtual.Tabuleiro); if (config.IaInicia) { estadoPartida = EnumEstadoPartida.JOGADOR02; } else { estadoPartida = EnumEstadoPartida.JOGADOR01; } }
// Update is called once per frame void Update() { Debug.Log("Estado: " + estadoPartida); switch (estadoPartida) { case EnumEstadoPartida.INICIO: statusJogo.text = "Iniciando Partida."; statusJogo.transform.localPosition = new Vector3(0f, -290f, 0f); TabuleiroInicial(); break; case EnumEstadoPartida.JOGADOR01: statusJogo.text = "Jogador 1"; break; case EnumEstadoPartida.JOGADOR02: statusJogo.text = "Jogador 2"; if (config.versusIA && !isCoroutineStarted) { StartCoroutine(this.JogadaIA()); } break; case EnumEstadoPartida.FINALIZANDOJOGO: FinalizandoJogo(); estadoPartida = EnumEstadoPartida.FINALJOGO; break; case EnumEstadoPartida.FINALJOGO: break; default: break; } ; }
public void IniciarJogo() { estadoPartida = EnumEstadoPartida.INICIO; }