Esempio n. 1
0
    /// <summary>
    /// Coloca la pieza de juego en la posición dada
    /// </summary>
    /// <param name="bp">Objeto BoardPosition que representa la posición
    /// en el tablero</param>
    public void PlaceToken(BoardPosition bp)
    {
        // Si la posición no está ocupada entonces colocamos
        // la ficha, de lo contrario, no hacemos nada
        if (!bp.Used)
        {
            // Guardamos la posición a utilizar
            Vector3 pos = bp.gameObject.transform.position;
            // Colocamos la ficha según el tipo de _playerGame que tenemos,
            // recuerda si _playerGame es 0 entonces colocamos un tache
            // de lo contrario colocamos un círculo

            GameObject obj = Instantiate(Cross,
                                         pos,
                                         Quaternion.identity) as GameObject;

            // Marcamos la casilla como ocupada
            bp.Used = true;


            //Fila 1
            if (pos.x < -2f && pos.y > 2f)
            {
                valor = 0;
            }


            if (pos.x > -2f && pos.x < 2f && pos.y > 2f)
            {
                valor = 1;
            }


            if (pos.x > 2f && pos.y > 2f)
            {
                valor = 2;
            }

            //Fila 2
            if (pos.x < -2f && pos.y < 2f && pos.y > -2f)
            {
                valor = 3;
            }


            if (pos.x > -2f && pos.x < 2f && pos.y < 2f && pos.y > -2f)
            {
                valor = 4;
            }


            if (pos.x > 2f && pos.y < 2f && pos.y > -2f)
            {
                valor = 5;
            }

            //Fila 3
            if (pos.x < -2f && pos.y < -2f)
            {
                valor = 6;
            }

            if (pos.x > -2f && pos.x < 2f && pos.y < -2f)
            {
                valor = 7;
            }

            if (pos.x > 2f && pos.y < -2f)
            {
                valor = 8;
            }



            // Cambiamos la ficha para el siguiente juego
            _playerGame = 1;
            canMove++;
            SavePosition(valor, 0);

            //Turno de la computadora
            computadora.GetMinimax(lugar, 1, 0);
            int best = computadora.BestMove();
            if (best == 0)
            {
                pos.x = -2.481309f;
                pos.y = 2.488531f;
                pos.z = 0f;
            }
            if (best == 1)
            {
                pos.x = 0.007499248f;
                pos.y = 2.488531f;
                pos.z = 0f;
            }
            if (best == 2)
            {
                pos.x = 2.48025f;
                pos.y = 2.488531f;
                pos.z = 0f;
            }
            if (best == 3)
            {
                pos.x = -2.481309f;
                pos.y = -0.0002770126f;
                pos.z = 0f;
            }
            if (best == 4)
            {
                pos.x = 0.007499248f;
                pos.y = -0.0002770126f;
                pos.z = 0f;
            }
            if (best == 5)
            {
                pos.x = 2.48025f;
                pos.y = -0.0002770126f;
                pos.z = 0f;
            }
            if (best == 6)
            {
                pos.x = -2.481309f;
                pos.y = -2.424857f;
                pos.z = 0f;
            }
            if (best == 7)
            {
                pos.x = 0.007499248f;
                pos.y = -2.424857f;
                pos.z = 0f;
            }
            if (best == 8)
            {
                pos.x = 2.48025f;
                pos.y = -2.424857f;
                pos.z = 0f;
            }

            GameObject obj2 = Instantiate(Circle,
                                          pos,
                                          Quaternion.identity) as GameObject;

            valor = best;

            // Cambiamos la ficha para el siguiente juego
            _playerGame = 0;
            SavePosition(valor, 1);
        }
    }