Exemple #1
0
    static List <Rebatedor> CriarRebatedoresGrade(int pos, bool f, int dif)
    {
        List <Rebatedor> rebs = new List <Rebatedor>();

        float chanceDestrutivel =
            1 - ((dif - 1f) / Dados.jogoRapidoDificuldadeMaxima);

        //bool destru = Random.value <= chanceDestrutivel;


        Rebatedores.Tipo tipo = PegarTipo(f);
        int m          = ModPos(tipo);
        int qMaxPorDif = dif / 2;
        int q          = QuantidadeMaxima(tipo);

        q = q <= qMaxPorDif ? q : qMaxPorDif;
        q = q > 1 ? q : 1;

        List <int> posicoes = new List <int>();

        for (int i = 0; i < m; i++)
        {
            posicoes.Add(i);
        }

        for (int i = 0; i < q; i++)
        {
            Rebatedor reb = new Rebatedor();
            reb.destrutivel  = Random.value <= chanceDestrutivel;
            reb.posicaoGrade = pos;
            reb.tipo         = tipo;
            reb.posicaoLocal = AleatorioLista <int>(posicoes);

            rebs.Add(reb);
        }

        return(rebs);
    }
    static List <Rebatedor> PegarRebatedores(
        List <Rebatedor> rebs, string s)
    {
        string[] lin       = s.Split(';');
        string[] quad      = lin[0].Split(':');
        int      quadrante = 0;

        switch (quad[1])
        {
        case "tl":
            quadrante = 0;
            break;

        case "tm":
            quadrante = 1;
            break;

        case "tr":
            quadrante = 2;
            break;

        case "ml":
            quadrante = 3;
            break;

        case "mm":
            quadrante = 4;
            break;

        case "mr":
            quadrante = 5;
            break;

        case "bl":
            quadrante = 6;
            break;

        case "bm":
            quadrante = 7;
            break;

        case "br":
            quadrante = 8;
            break;

        default:
            quadrante = int.Parse(quad[1]);
            break;
        }

        for (int i = 1; i < lin.Length; i++)
        {
            string [] com = lin[i].Split(':');
            string [] pos;
            string    tipoRebate  = com[0];
            bool      destrutivel = false;
            if (com[0].StartsWith("d"))
            {
                destrutivel = true;
                tipoRebate  = com[0].Substring(1);
            }
            switch (tipoRebate)
            {
            case "s":
                pos = com[1].Split(',');
                for (int j = 0; j < pos.Length; j++)
                {
                    int       plocal = int.Parse(pos[j]);
                    Rebatedor reb    = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = plocal;
                    reb.tipo         = Rebatedores.Tipo.Fixo;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                break;

            case "vu":
                pos = com[1].Split(',');
                for (int j = 0; j < pos.Length; j++)
                {
                    int       plocal = int.Parse(pos[j]);
                    Rebatedor reb    = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = plocal;
                    reb.tipo         = Rebatedores.Tipo.VerticalBaixoCima;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                break;

            case "vd":
                pos = com[1].Split(',');
                for (int j = 0; j < pos.Length; j++)
                {
                    int       plocal = int.Parse(pos[j]);
                    Rebatedor reb    = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = plocal;
                    reb.tipo         = Rebatedores.Tipo.VerticalCimaBaixo;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                break;

            case "hr":
                pos = com[1].Split(',');
                for (int j = 0; j < pos.Length; j++)
                {
                    int       plocal = int.Parse(pos[j]);
                    Rebatedor reb    = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = plocal;
                    reb.tipo         = Rebatedores.Tipo.HorizontalEsqDir;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                break;

            case "hl":
                pos = com[1].Split(',');
                for (int j = 0; j < pos.Length; j++)
                {
                    int       plocal = int.Parse(pos[j]);
                    Rebatedor reb    = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = plocal;
                    reb.tipo         = Rebatedores.Tipo.HorizontalDirEsq;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                break;

            case "dr":
                pos = com[1].Split(',');
                for (int j = 0; j < pos.Length; j++)
                {
                    int       plocal = int.Parse(pos[j]);
                    Rebatedor reb    = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = plocal;
                    reb.tipo         = Rebatedores.Tipo.DiagonalEsqDir;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                break;

            case "dl":
                pos = com[1].Split(',');
                for (int j = 0; j < pos.Length; j++)
                {
                    int       plocal = int.Parse(pos[j]);
                    Rebatedor reb    = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = plocal;
                    reb.tipo         = Rebatedores.Tipo.DiagonalDirEsq;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                break;

            case "c":
                pos = com[1].Split(',');
                for (int j = 0; j < pos.Length; j++)
                {
                    int       plocal = int.Parse(pos[j]);
                    Rebatedor reb    = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = plocal;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                break;

            case "zig":
                if (com[1] == "0")
                {
                    Rebatedor reb = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = 0;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);

                    reb = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = 2;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);

                    reb = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = 4;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                else
                {
                    Rebatedor reb = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = 1;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);

                    reb = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = 3;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);

                    reb = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = 5;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                break;

            case "diag":
                if (com[1] == "0")
                {
                    Rebatedor reb = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = 0;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);

                    reb = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = 5;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                else
                {
                    Rebatedor reb = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = 2;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);

                    reb = new Rebatedor();
                    reb.posicaoGrade = quadrante;
                    reb.posicaoLocal = 3;
                    reb.tipo         = Rebatedores.Tipo.Circular;
                    reb.destrutivel  = destrutivel;
                    rebs.Add(reb);
                }
                break;
            }
        }

        return(rebs);
    }
Exemple #3
0
 public void AdicionarRebatedor(Rebatedor r)
 {
     AdicionarRebatedor(
         r.tipo, r.posicaoGrade, r.posicaoLocal, r.destrutivel);
 }