TOPIC

Wrong Answer 15%

lbarcella asked 2 years ago

(retirei a entrada de dados da descrição poiso codigo era maior q o limite).

...

        distancia[0] = sqrt(pow((double)Xeu - Xi, 2) + pow((double)Yeu - Yi, 2));
        distancia[1] = sqrt(pow((double)Xeu - (Xi + base_inimigo), 2) + pow((double)Yeu - Yi, 2));
        distancia[2] = sqrt(pow((double)Xeu - Xi, 2) + pow((double)Yeu - (Yi + altura_inimigo), 2));
        distancia[3] = sqrt(pow((double)Xeu - (Xi + base_inimigo), 2) + pow((double)Yeu - (Yi + altura_inimigo), 2));

        for(int i = 0; i < 4; i++){

            if(i == 0){
                menor = distancia[i];

            }else if(distancia[i] < menor){
                menor = distancia[i];

            }
        }

        if(strcmp(magia, fire) == 0){
            int dano = 200;

            if(nivel == 1){
                raio = 20.0;

            }else if(nivel == 2){
                raio = 30.0;

            }else{
                raio = 50.0;
            }

            if(raio >= menor){
                printf("%d\n", dano);

            }else{
                printf("0\n");
            }

        }else if(strcmp(magia, water) == 0){
            int dano = 300;

            if(nivel == 1){
                raio = 10.0;

            }else if(nivel == 2){
                raio = 25.0;

            }else{
                raio = 40.0;
            }

            if(raio >= menor){
                printf("%d\n", dano);

            }else{
                printf("0\n");
            }

        } else if(strcmp(magia, earth) == 0){
            int dano = 400;

            if(nivel == 1){
                raio = 25.0;

            }else if(nivel == 2){
                raio = 55.0;

            }else{
                raio = 70.0;
            }

            if(raio >= menor){
                printf("%d\n", dano);

            }else{
                printf("0\n");
            }

        }else if(strcmp(magia, air) == 0){
            int dano = 100;

            if(nivel == 1){
                raio = 18.0;

            }else if(nivel == 2){
                raio = 38.0;

            }else{
                raio = 60.0;
            }

            if(raio >= menor){
                printf("%d\n", dano);

            }else{
                printf("0\n");
            }

        }

    }

    return 0;
}

Remember not post solutions. Your post may be reviewed by our moderators.

  • AlexMorte replied 2 years ago

    Luan, perceba que mesmo que os vértices estejam longe do centro do ataque, não quer dizer que não houve colisão. Por exemplo, o retângulo pode estar em (0,0) ter tamanho 1000x1000 e o círculo estar em (200,200) com o menor raio possível. O círculo ainda atingiu parte do retângulo, mas todos os vértices do retângulo, estão com distãncia maior do que o maior raio possível