Example #1
0
        public void TesteSomaValorMag()
        {
            calculador = new CalculadorNumero();
            ValorMag valorMagIgual1    = new ValorMag(50, 2);
            ValorMag valorMagIgual2    = new ValorMag(60, 2);
            ValorMag resultadoMagIgual = calculador.SomaValorMag(valorMagIgual1, valorMagIgual2);

            Assert.IsTrue(resultadoMagIgual.Valor == 11);
            Assert.IsTrue(resultadoMagIgual.Magnitude == 3);
            Assert.IsTrue(resultadoMagIgual.ValorReal == "110");

            ValorMag valorMagPerto1    = new ValorMag(50, 4);
            ValorMag valorMagPerto2    = new ValorMag(50, 3);
            ValorMag resultadoMagPerto = calculador.SomaValorMag(valorMagPerto1, valorMagPerto2);

            Assert.IsTrue(resultadoMagPerto.Valor == 55);
            Assert.IsTrue(resultadoMagPerto.Magnitude == 4);
            Assert.IsTrue(resultadoMagPerto.ValorReal == "5500");

            ValorMag valorMagLonge1    = new ValorMag(50, 3);
            ValorMag valorMagLonge2    = new ValorMag(50, 8);
            ValorMag resultadoMagLonge = calculador.SomaValorMag(valorMagLonge1, valorMagLonge2);

            Assert.IsTrue(resultadoMagLonge.Valor == 50);
            Assert.IsTrue(resultadoMagLonge.Magnitude == 8);
            Assert.IsTrue(resultadoMagLonge.ValorReal == "50000000");
        }
Example #2
0
 public ValorMag RetornaMaiorValorMag(ValorMag num1, ValorMag num2)
 {
     if (num1.Magnitude != num2.Magnitude)
     {
         if (num1.Magnitude > num2.Magnitude)
         {
             return(num1);
         }
         else
         {
             return(num2);
         }
     }
     else
     {
         if (num1.Valor > num2.Valor)
         {
             return(num1);
         }
         else
         {
             return(num2);
         }
     }
 }
Example #3
0
        public ValorMag MultiplicaValorMag(ValorMag numero, double multiplicador)
        {
            if (multiplicador == 1)
            {
                return(numero);
            }
            else if (numero == new ValorMag() || multiplicador == 0)
            {
                return(new ValorMag(0, 1));
            }
            else
            {
                return(MultiplicaValorMag(numero, new ValorMag(Convert.ToString(multiplicador))));
            }
            //double valorFinal = numero.Valor * multiplicador;
            //int magFinal = numero.Magnitude;

            //if (valorFinal < 10)
            //{
            //    magFinal = magFinal - 1;
            //    valorFinal = valorFinal * 10;
            //}
            //else if (valorFinal > 99)
            //{
            //    while (valorFinal > 99)
            //    {
            //        valorFinal = valorFinal / 100;
            //        magFinal = magFinal + 1;
            //    }
            //}

            //ValorMag resultado = new ValorMag((int)Math.Floor(valorFinal), magFinal);
            //return resultado;
        }
Example #4
0
        public ValorMag DivideValorMag(ValorMag valorMag1, ValorMag valorMag2)
        {
            if (valorMag1.ValorReal == "0")
            {
                return(new ValorMag("0"));
            }
            else if (valorMag2.ValorReal == "0")
            {
                return(new ValorMag("0"));
            }
            else if (valorMag2.ValorReal == "1")
            {
                return(valorMag1);
            }
            else
            {
                int magFinal = ((valorMag1.Magnitude - 2) - (valorMag2.Magnitude - 2)) + 2;

                double valorFinal = ((double)valorMag1.Valor / (double)valorMag2.Valor);

                while (valorFinal < 10)
                {
                    valorFinal = valorFinal * 10;
                    magFinal   = magFinal - 1;
                }

                return(new ValorMag((int)Math.Floor(valorFinal), magFinal));
            }
        }
Example #5
0
        public ValorMag MultiplicaValorMag(ValorMag valorMag1, ValorMag valorMag2)
        {
            if (valorMag1.ToString() == "1m2" || valorMag1.ToString() == "10m1")
            {
                return(valorMag2);
            }
            else if (valorMag2.ToString() == "1m2" || valorMag2.ToString() == "10m1")
            {
                return(valorMag1);
            }
            else if (valorMag1.Valor == 0 || valorMag2.Valor == 0)
            {
                return(new ValorMag(0, 1));
            }
            else
            {
                int magFinal = (valorMag1.Magnitude + valorMag2.Magnitude) - 2;

                int valorFinal = (valorMag1.Valor * valorMag2.Valor);
                while (valorFinal > 99)
                {
                    valorFinal = valorFinal / 10;
                    magFinal   = magFinal + 1;
                }

                return(new ValorMag(valorFinal, magFinal));
            }
        }
Example #6
0
        public void TesteLongParaValorMag()
        {
            conversor = new Conversor();
            ValorMag resultado = conversor.StringParaValorMag("2500000000");

            Assert.AreEqual(25, resultado.Valor);
            Assert.AreEqual(10, resultado.Magnitude);
        }
Example #7
0
 public Ideia()
 {
     this.Pontos      = 1;
     this.Ki          = 0;
     this.Base        = 0;
     this.Misterio    = new ValorMag();
     this.Irrealidade = new ValorMag();
     this.Nexo        = new ValorMag();
     this.BonusMP     = new ValorMag();
 }
Example #8
0
        public void TesteGeraValorMag()
        {
            GeradorValorMag gerador   = new GeradorValorMag();
            ValorMag        valorMag1 = new ValorMag(10, 3);
            ValorMag        valorMag2 = new ValorMag(10, 5);
            ValorMag        resultado = gerador.GerarEntre(valorMag1, valorMag2, rnd);

            Assert.IsTrue(Convert.ToInt32(resultado.ValorReal) >= Convert.ToInt32(valorMag1.ValorReal));
            Assert.IsTrue(Convert.ToInt32(resultado.ValorReal) <= Convert.ToInt32(valorMag2.ValorReal));
        }
Example #9
0
 public Criatividade()
 {
     this.Pontos        = 1;
     this.Singularidade = new ValorMag();
     this.Tutor         = new ValorMag();
     this.Visualizacao  = new ValorMag();
     this.Invencao      = new ValorMag();
     this.Realidade     = new ValorMag();
     this.BonusMP       = new ValorMag();
 }
Example #10
0
        public ValorMag SubtraiValorMag(ValorMag valorMag1, ValorMag valorMag2)
        {
            if (valorMag1.ToString() == valorMag2.ToString())
            {
                return(new ValorMag());
            }

            int valorFinal     = 0;
            int magnitudeFinal = 0;
            int valor1         = valorMag1.Valor;
            int valor2         = valorMag2.Valor;
            int mag1           = valorMag1.Magnitude;
            int mag2           = valorMag2.Magnitude;

            if (mag1 == mag2)
            {
                magnitudeFinal = mag1;
                valorFinal     = valor1 - valor2;

                if (valorFinal < 0)
                {
                    valorFinal     = valorFinal * 10;
                    magnitudeFinal = magnitudeFinal - 1;
                }
            }
            else if (mag1 - mag2 == 1 || mag1 - mag2 == -1)
            {
                magnitudeFinal = Math.Max(mag1, mag2);

                if (magnitudeFinal == mag1)
                {
                    valorFinal = valor1 - (valor2 / 10);
                }
                else
                {
                    valorFinal = valor2 - (valor1 / 10);
                }
            }
            else
            {
                magnitudeFinal = Math.Max(mag1, mag2);
                if (magnitudeFinal == mag1)
                {
                    valorFinal = valor1;
                }
                else
                {
                    valorFinal = valor2;
                }
            }

            ValorMag resultado = new ValorMag(valorFinal, magnitudeFinal);

            return(resultado);
        }
Example #11
0
        public void TesteRetornaMenorValorMag()
        {
            calculador = new CalculadorNumero();

            ValorMag num1 = new ValorMag(99, 5);
            ValorMag num2 = new ValorMag(26, 7);

            ValorMag resultado = calculador.RetornaMenorValorMag(num1, num2);

            Assert.AreEqual(num1.ValorReal, resultado.ValorReal);
        }
Example #12
0
        public void TesteStringParaValorMag()
        {
            conversor = new Conversor();
            string   numero    = "584797,5683";
            int      valor     = 58;
            int      mag       = 6;
            ValorMag resultado = conversor.StringParaValorMag(numero);

            Assert.AreEqual(valor, resultado.Valor);
            Assert.AreEqual(mag, resultado.Magnitude);
        }
Example #13
0
        public void TesteMultiplicaValorMagPorValorMag()
        {
            calculador = new CalculadorNumero();
            ValorMag valorMag1 = new ValorMag(10, 3);
            ValorMag valorMag2 = new ValorMag(10, 5);
            ValorMag resultado = calculador.MultiplicaValorMag(valorMag1, valorMag2);

            Assert.AreEqual(10, resultado.Valor);
            Assert.AreEqual(7, resultado.Magnitude);
            Assert.AreEqual("1000000", resultado.ValorReal);
        }
Example #14
0
 public Materia()
 {
     this.Pontos      = 1;
     this.Colapso     = new ValorMag();
     this.Impulso     = new ValorMag();
     this.Resistencia = new ValorMag();
     this.Vitalidade  = new ValorMag();
     this.BonusCP     = 0;
     this.BonusHP     = new ValorMag();
     this.Carga       = new ValorMag();
 }
Example #15
0
        public void TesteMultiplicaValorMagDouble()
        {
            calculador = new CalculadorNumero();

            ValorMag numero        = new ValorMag(82, 6);
            double   multiplicador = 0.12;

            ValorMag resultado = calculador.MultiplicaValorMag(numero, multiplicador);

            Assert.AreEqual(98, resultado.Valor);
            Assert.AreEqual(5, resultado.Magnitude);
        }
Example #16
0
        public ValorMag SomaValorMag(ValorMag valorMag1, ValorMag valorMag2)
        {
            int valorFinal     = 0;
            int magnitudeFinal = 0;
            int valor1         = valorMag1.Valor;
            int valor2         = valorMag2.Valor;
            int mag1           = valorMag1.Magnitude;
            int mag2           = valorMag2.Magnitude;

            if (mag1 == mag2)
            {
                magnitudeFinal = mag1;
                valorFinal     = valor1 + valor2;

                if (valorFinal > 99)
                {
                    valorFinal     = valorFinal / 10;
                    magnitudeFinal = magnitudeFinal + 1;
                }
            }
            else if (mag1 - mag2 == 1 || mag1 - mag2 == -1)
            {
                magnitudeFinal = Math.Max(mag1, mag2);

                if (magnitudeFinal == mag1)
                {
                    valorFinal = valor1 + (valor2 / 10);
                }
                else
                {
                    valorFinal = valor2 + (valor1 / 10);
                }
            }
            else
            {
                magnitudeFinal = Math.Max(mag1, mag2);
                if (magnitudeFinal == mag1)
                {
                    valorFinal = valor1;
                }
                else
                {
                    valorFinal = valor2;
                }
            }

            ValorMag resultado = new ValorMag(valorFinal, magnitudeFinal);

            return(resultado);
        }
Example #17
0
 public ValorMag MultiplicaValorMag(ValorMag valorMag1, int multiplicador)
 {
     if (multiplicador == 1)
     {
         return(valorMag1);
     }
     else if (valorMag1 == new ValorMag() || multiplicador == 0)
     {
         return(new ValorMag(0, 1));
     }
     else
     {
         return(MultiplicaValorMag(valorMag1, new ValorMag(Convert.ToString(multiplicador))));
     }
 }
Example #18
0
 public ValorMag DivideValorMag(ValorMag valorMag1, int divisor)
 {
     if (divisor == 0)
     {
         return(new ValorMag("0"));
     }
     if (divisor == 1)
     {
         return(valorMag1);
     }
     else
     {
         return(DivideValorMag(valorMag1, new ValorMag(Convert.ToString(divisor))));
     }
 }
Example #19
0
 public ValorMag RetornaMenorValorMag(List <ValorMag> lista)
 {
     if (lista.Count > 0)
     {
         ValorMag resultado = lista[0];
         foreach (ValorMag item in lista)
         {
             resultado = RetornaMenorValorMag(resultado, item);
         }
         return(resultado);
     }
     else
     {
         return(new ValorMag());
     }
 }
Example #20
0
        public void TesteRetornaMenorValorMagDeLista()
        {
            calculador = new CalculadorNumero();
            List <ValorMag> lista = new List <ValorMag>
            {
                new ValorMag(10, 7),
                new ValorMag(15, 5),
                new ValorMag(35, 8),
                new ValorMag(10, 9),
                new ValorMag(99, 2),
                new ValorMag(58, 5),
                new ValorMag(20, 3)
            };

            ValorMag resultado = calculador.RetornaMenorValorMag(lista);

            Assert.AreEqual(99, resultado.Valor);
            Assert.AreEqual(2, resultado.Magnitude);
            Assert.AreEqual("99", resultado.ValorReal);
        }
Example #21
0
        public Ser RemoveModificador(ModDivideValorMag mod, Ser ser)
        {
            PropertyInfo propriedade = ser.GetType().GetProperty(mod.Alvo);

            if (propriedade.PropertyType == typeof(ValorMag))
            {
                CalculadorNumero calculador = new CalculadorNumero();
                ValorMag         resultado  = new ValorMag();

                resultado = calculador.MultiplicaValorMag((ValorMag)propriedade.GetValue(ser, null), mod.Valor);

                propriedade.SetValue(ser, resultado);

                return(ser);
            }
            else
            {
                throw new System.ArgumentException("Propriedade não é ValorMag.", mod.Alvo);
            }
        }
Example #22
0
        public Resistencia Gerar(Random rnd)
        {
            GeradorInteiro   rng         = new GeradorInteiro();
            GeradorValorMag  genValorMag = new GeradorValorMag();
            GeradorBoolean   genBoolean  = new GeradorBoolean();
            GeradorString    genString   = new GeradorString();
            CalculadorNumero calculador  = new CalculadorNumero();
            Resistencia      resultado   = new Resistencia();
            ValorMag         min         = genValorMag.GerarEntre(new ValorMag(10, 0), new ValorMag(99, 10), rnd);
            ValorMag         max         = calculador.SomaValorMag(min, genValorMag.GerarEntre(new ValorMag(10, 0), new ValorMag(99, 10), rnd));

            char tipo;

            if (genBoolean.GeraComChance(50, rnd))
            {
                tipo = '+';
            }
            else
            {
                tipo = '-';
            }

            resultado.Nome = genString.GerarTamanhoEspecifico(3, 10, rnd);

            if (tipo == '+')
            {
                resultado.Positiva = genValorMag.GerarEntre(min, max, rnd);
                resultado.Negativa = new ValorMag();
            }
            else
            {
                resultado.Positiva = new ValorMag();
                resultado.Negativa = genValorMag.GerarEntre(min, max, rnd);
            }

            return(resultado);
        }
Example #23
0
 public Deslocamento(string tipo)
 {
     this.Tipo = tipo;
     Valor     = new ValorMag();
 }
Example #24
0
 public Resistencia()
 {
     this.Nome     = "Vazio";
     this.Positiva = new ValorMag();
     this.Negativa = new ValorMag();
 }
Example #25
0
 public Resistencia(string nome, ValorMag positiva, ValorMag negativa)
 {
     this.Nome     = nome;
     this.Positiva = positiva;
     this.Negativa = negativa;
 }
Example #26
0
        //Calcula subatributos BASE de um ser sem modificadores
        public Ser CalculaSubatributos(Ser ser)
        {
            GeradorValorMag  genValorMag = new GeradorValorMag();
            CalculadorNumero calculador  = new CalculadorNumero();
            Random           rnd         = new Random();

            //Iniciativa = Destreza.Iniciativa
            ser.Iniciativa = ser.Destreza.Iniciativa;

            //Destria = Pontos Destreza / 10 (até o maximo da espécie)
            if (ser.Destreza.Pontos / 10 > ser.Especies[0].DestriaMax)
            {
                ser.Destria = ser.Especies[0].DestriaMax;
            }
            else if (ser.Destreza.Pontos / 10 < ser.Especies[0].DestriaMin)
            {
                ser.Destria = ser.Especies[0].DestriaMin;
            }
            else
            {
                ser.Destria = ser.Destreza.Pontos / 10;
            }

            //Acao = vigor + vitalidade * dinamica
            ser.Acao = calculador.SomaValorMag(ser.Forca.Vigor, ser.Materia.Vitalidade);
            ser.Acao = calculador.MultiplicaValorMag(ser.Acao, Convert.ToDouble(ser.Destreza.Dinamica));
            //Reacao = Vitalidade * Dinamica
            ser.Reacao = calculador.MultiplicaValorMag(ser.Materia.Vitalidade, Convert.ToDouble(ser.Destreza.Dinamica));
            //Turno = valor minimo da especie dominante + 20% da maior especie
            ser.Turno = ser.Especies[0].TurnoMin + (int)calculador.CalculaPorcentagem(20, (long)(from e in ser.Especies select e.TurnoMin).Max());

            //Altura = aleatorio a partir da especie dominante
            if (ser.Altura.Valor == 0)
            {
                ser.Altura = genValorMag.GerarEntre(ser.Especies[0].AlturaMin, ser.Especies[0].AlturaMax, rnd);
            }

            ser.Comprimento = new ValorMag(Convert.ToString(ser.Materia.Pontos));

            //Largura = Aleatorio entre largura min e largura max da especie dominante
            if (ser.Largura.Valor == 0)
            {
                ser.Largura = genValorMag.GerarEntre(ser.Especies[0].LarguraMin, ser.Especies[0].LarguraMax, rnd);
            }

            //Massa = Volume * Densidade da Especie
            ValorMag volume = calculador.MultiplicaValorMag(ser.Altura, ser.Comprimento);

            volume    = calculador.MultiplicaValorMag(volume, ser.Largura);
            ser.Massa = calculador.MultiplicaValorMag(volume, ser.Especies[0].Densidade);

            //Instinto = (Ideia + Destreza) / 2
            ser.Instinto = calculador.SomaValorMag(ser.Ideia.Porcentagem, ser.Destreza.Porcentagem);
            ser.Instinto = calculador.DivideValorMag(ser.Instinto, 2);

            //Raciocinio = (Intelecto + Criatividade) / 2
            ser.Raciocinio = calculador.SomaValorMag(ser.Intelecto.Porcentagem, ser.Criatividade.Porcentagem);
            ser.Raciocinio = calculador.DivideValorMag(ser.Raciocinio, 2);

            //Subconsciencia = (Existencia + Ideia) / 2
            ser.Subconsciencia = calculador.SomaValorMag(ser.Existencia.Porcentagem, ser.Ideia.Porcentagem);
            ser.Subconsciencia = calculador.DivideValorMag(ser.Subconsciencia, 2);

            //Autocontrole = (Intelecto + Existencia) / 2
            ser.Autocontrole = calculador.SomaValorMag(ser.Intelecto.Porcentagem, ser.Existencia.Porcentagem);
            ser.Autocontrole = calculador.DivideValorMag(ser.Subconsciencia, 2);

            //Anatomia = (Materia + Força + Destreza) /3
            ser.Anatomia = calculador.SomaValorMag(ser.Materia.Porcentagem, ser.Forca.Porcentagem);
            ser.Anatomia = calculador.SomaValorMag(ser.Anatomia, ser.Destreza.Porcentagem);
            ser.Anatomia = calculador.DivideValorMag(ser.Anatomia, 3);

            //Animo = (Criatividade + Existencia)/2
            ser.Animo = calculador.SomaValorMag(ser.Criatividade.Porcentagem, ser.Existencia.Porcentagem);
            ser.Animo = calculador.DivideValorMag(ser.Animo, 2);

            //Movimento = (Destreza + Forca*2) /3
            ser.Movimento = calculador.MultiplicaValorMag(ser.Forca.Porcentagem, 2);
            ser.Movimento = calculador.SomaValorMag(ser.Movimento, ser.Destreza.Porcentagem);
            ser.Movimento = calculador.DivideValorMag(ser.Movimento, 3);

            //Precisao = (Forca*2 + Destreza) / 3
            ser.Precisao = calculador.MultiplicaValorMag(ser.Forca.Porcentagem, 2);
            ser.Precisao = calculador.SomaValorMag(ser.Movimento, ser.Destreza.Porcentagem);
            ser.Precisao = calculador.DivideValorMag(ser.Movimento, 3);

            //Composição = Dureza + Resistencia
            Conversor conver = new Conversor();

            ser.Composicao = conver.StringParaValorMag(Convert.ToString(ser.Forca.Dureza));
            ser.Composicao = calculador.SomaValorMag(ser.Composicao, ser.Materia.Resistencia);

            //HP MP AP SP
            //HP = Materia
            //AP = Força Materia Destreza Intelecto Existência
            //MP = Criatividade + Ideia
            //SP = ((15*(pontos de todos atributos-7))*7) (somar tracinhos)
            ser.BonusHP = ser.Materia.BonusHP;
            ser.BonusCP = ser.Forca.BonusCP + ser.Materia.BonusCP;
            ser.BonusCP = ser.BonusCP + ser.Destreza.BonusCP;
            ser.BonusCP = ser.BonusCP + ser.Intelecto.BonusCP;
            ser.BonusCP = Math.Floor(ser.BonusCP + ser.Existencia.BonusCP);
            ser.BonusMP = calculador.SomaValorMag(ser.Criatividade.BonusMP, ser.Ideia.BonusMP);
            ser.BonusSP = CalculaBonusSP(ser);

            return(ser);
        }