Beispiel #1
0
    public Projeto GerarProjeto(float dificuldade)
    {
        // TODO(andre:2018-06-10): Uma possibilidade seria implementar uma
        // reputação do jogador com os diferentes tipos de empresa e usar isso
        // para decidir quais projetos seriam sugeridos
        // https://stackoverflow.com/questions/9956486/distributed-probability-random-number-generator
        List <DescricaoTipoEmpresa> possiveisEmpresas = new List <DescricaoTipoEmpresa>();

        foreach (DescricaoTipoEmpresa descricaoTipoEmpresa in descricaoTiposEmpresas)
        {
            if (dificuldade >= descricaoTipoEmpresa.dificuldadeMinima && dificuldade <= descricaoTipoEmpresa.dificuldadeMaxima)
            {
                possiveisEmpresas.Add(descricaoTipoEmpresa);
            }
        }

        DescricaoTipoEmpresa tipoSelecionado = possiveisEmpresas[Random.Range(0, possiveisEmpresas.Count)];

        string tipoEmpresa = tipoSelecionado.tipoEmpresa;
        // TODO(andre:2018-06-10): Permitir gerar nomes e descricoes aleatorias
        string nomeEmpresa = tipoSelecionado.nomeEmpresa;
        string descricao   = tipoSelecionado.descricaoProjeto;

        float pagamento          = (float)System.Math.Round(Random.Range(tipoSelecionado.pagamentoMinimo, tipoSelecionado.pagamentoMaximo), 2);
        float multa              = (float)System.Math.Round(Random.Range(tipoSelecionado.multaMinima, tipoSelecionado.multaMaxima), 2);
        int   tamanho            = Random.Range(tipoSelecionado.tamanhoMinimo, tipoSelecionado.tamanhoMaximo);
        float experienciaUsuario = Random.Range(tipoSelecionado.experienciaUsuarioMinima, tipoSelecionado.experienciaUsuarioMaxima);

        int pontosDesignEsperado     = Random.Range(tipoSelecionado.pontosDesignEsperadoMinimo, tipoSelecionado.pontosDesignEsperadoMaximo);
        int pontosTecnologiaEsperado = Random.Range(tipoSelecionado.pontosTecnologiaEsperadoMinimo, tipoSelecionado.pontosTecnologiaEsperadoMaximo);

        // Prioridades prioridadesDesign = new Prioridades();
        // TODO(andre:2018-06-10): Gerar variacoes nos valores bases com base nos demais parametros
        // prioridadesDesign.coletaDados              = tipoSelecionado.prioridadeColetaDadosBase;
        // prioridadesDesign.estudoDominio            = tipoSelecionado.prioridadeEstudoDominioBase;
        // prioridadesDesign.documentacao             = tipoSelecionado.prioridadeDocumentacaoBase;
        // prioridadesDesign.legibilidade             = tipoSelecionado.prioridadeLegibilidadeBase;
        // prioridadesDesign.qualidadeSolucao         = tipoSelecionado.prioridadeQualidadeSolucaoBase;
        // prioridadesDesign.desenvolvimentoInterface = tipoSelecionado.prioridadeDesenvolvimentoInterfaceBase;
        // prioridadesDesign.testes                   = tipoSelecionado.prioridadeTestesBase;
        // prioridadesDesign.avaliacaoCliente         = tipoSelecionado.prioridadeAvaliacaoClienteBase;
        // prioridadesDesign.implantacao              = tipoSelecionado.prioridadeImplantacaoBase;

        Prioridades prioridadesDesign     = new Prioridades(tipoSelecionado.prioridadesDesignBase);
        Prioridades prioridadesTecnologia = new Prioridades(tipoSelecionado.prioridadesTecnologiaBase);

        Projeto projeto = new Projeto(tipoEmpresa, nomeEmpresa, descricao, pagamento, multa, tamanho, experienciaUsuario,
                                      pontosDesignEsperado, pontosTecnologiaEsperado, prioridadesDesign, prioridadesTecnologia,
                                      tipoSelecionado);

        return(projeto);
    }
Beispiel #2
0
    public Projeto(string tipoEmpresa, string nomeEmpresa, string descricao, float valorPagamento, float multaAtraso, int tamanhoEmpresa, float experienciaUsuario,
                   int pontosDesignEsperado, int pontosTecnologiaEsperado, Prioridades prioridadesDesign, Prioridades prioridadesTecnologia,
                   DescricaoTipoEmpresa descricaoTipoEmpresa = null)
    {
        this.tipoEmpresa = tipoEmpresa;
        this.nomeEmpresa = nomeEmpresa;
        this.descricao   = descricao;

        this.valorPagamento     = valorPagamento;
        this.multaAtraso        = multaAtraso;
        this.tamanhoEmpresa     = tamanhoEmpresa;
        this.experienciaUsuario = experienciaUsuario;

        this.pontosTecnologiaEsperado = pontosTecnologiaEsperado;
        this.pontosDesignEsperado     = pontosDesignEsperado;

        this.prioridadesDesign     = prioridadesDesign;
        this.prioridadesTecnologia = prioridadesTecnologia;

        this.descricaoTipoEmpresa = descricaoTipoEmpresa;

        this.dicaProjeto = "";
    }