Ejemplo n.º 1
0
    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;
        }
    }
Ejemplo n.º 2
0
    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;
    }
Ejemplo n.º 3
0
 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;
     }
 }
Ejemplo n.º 4
0
    // 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;
        }
        ;
    }
Ejemplo n.º 5
0
 public void IniciarJogo()
 {
     estadoPartida = EnumEstadoPartida.INICIO;
 }