[Aporte] Calculadora de NPC en C

Pastore16

Club Atlético Huracán
Hola, les vengo a aportar una calculadora de NPC que hice para Alkon, todavía le falta poner la lista de todos los NPCs pero anda bien.

C++:
#include <stdio.h>
#include <stdlib.h>
#define cantNivel 41
#define cantNPC 4

void calcularNPC(float vNiveles[cantNivel], float vExpNpc[cantNPC]);
int seleccionarNPC();

enum eNpc{
    AlmaPutr=1,
    Anfisbena,
    AraRincon,
    AraGig,
}N;

int main()
{
    int elgOperacion;
    float vNiveles[cantNivel];
    float vExpNpc[cantNPC];

    do
    {
        elgOperacion = seleccionarNPC();

        N = elgOperacion;

    }while(elgOperacion<0 && elgOperacion>4);

    calcularNPC(vNiveles, vExpNpc);
    return 0;
}

int seleccionarNPC()
{
    int opNpc;

    printf("Ingrese NPC: \n");

    printf("1. Alma Putrefacta \n2. Anfisbena \n3. Arana Rincon \n4. Arana Gig \n");

    do
    {
        scanf("%d", &opNpc);
    }while(opNpc<0 && opNpc>4);
    return opNpc;
}

void calcularNPC(float vNiveles[cantNivel], float vExpNpc[cantNPC])
{
    int nivel, experiencia;
    int calcular, i, j, totalNpc, N1;

    printf("Ingrese nivel: ");
    scanf("%d", &nivel);

    printf("Experiencia conseguida: ");
    scanf("%d", &experiencia);

    for(i=1; i<41; i++)
    {
        vNiveles[i] = nivel;
    }

    vNiveles[1] = 300; vNiveles[2] = 420; vNiveles[3] = 590; vNiveles[4] = 820; vNiveles[5] = 1150;
    vNiveles[6] = 1610; vNiveles[7] = 2260; vNiveles[8] = 3160; vNiveles[9] = 4430 ;vNiveles[10] = 6200;
    vNiveles[11] = 8670; vNiveles[12] = 12140; vNiveles[13] = 17000 ;vNiveles[14] = 23800 ;vNiveles[15] = 32130;
    vNiveles[16] = 43370; vNiveles[17] = 58560 ;vNiveles[18] = 79050 ;vNiveles[19] = 106720; vNiveles[20] = 144070;
    vNiveles[21] = 187290; vNiveles[22] = 243470; vNiveles[23] = 316520 ; vNiveles[24] = 411470; vNiveles[25] = 534911;
    vNiveles[26] = 641893; vNiveles[27] = 770272; vNiveles[28] = 924326; vNiveles[29] = 1109191; vNiveles[30] = 1331029;
    vNiveles[31] = 1597235; vNiveles[32] = 1916682; vNiveles[33] = 2300018; vNiveles[34] = 2760022; vNiveles[35] = 3588029;
    vNiveles[36] = 4664438; vNiveles[37] = 6063769; vNiveles[38] = 10247770; vNiveles[39] = 19374691; vNiveles[40] = 40730884;
    vNiveles[41] = 86996903;

    for(j=1; j<4; j++)
    {
        vExpNpc[j] = 0;
    }

    N1 = N;

    vExpNpc[1] = 500;
    vExpNpc[2] = 51;
    vExpNpc[3] = 700;
    vExpNpc[4] = 1450;

    calcular = vNiveles[nivel] - experiencia;
    totalNpc = calcular / vExpNpc[N1];

    printf("Te falta %d NPCs", totalNpc);
}
 
Última edición:

Shak

Evolution
Miembro del equipo
Developer
Especialista de Argentum
No conozco c pero, no hay forma de simplificarlo un poco? Porque esta bien, son 4 npcs, pero si son 200 npcs...

Por ejemplo aca

  1. switch(elgOperacion)
  2. {
  3. case 1: N = AlmaPutr; break;
  4. case 2: N = Anfisbena; break;
  5. case 3: N = AraRincon; break;
  6. case 4: N = AraGig; break;
  7. }
Si se sabe que la alma es el 1, la anfisbena es el 2

Esto no se puede poner tipo

n = elgoperacion , o algo asi?
 

Pastore16

Club Atlético Huracán
No conozco c pero, no hay forma de simplificarlo un poco? Porque esta bien, son 4 npcs, pero si son 200 npcs...

Por ejemplo aca

  1. switch(elgOperacion)
  2. {
  3. case 1: N = AlmaPutr; break;
  4. case 2: N = Anfisbena; break;
  5. case 3: N = AraRincon; break;
  6. case 4: N = AraGig; break;
  7. }
Si se sabe que la alma es el 1, la anfisbena es el 2

Esto no se puede poner tipo

n = elgoperacion , o algo asi?

Si, se puede, no me había dado cuenta jaja, ahí lo edito.
 

Zirelay.

Newbie Lvl 3
Genial que uses C. Pero este tipo de cosas conviene hacerlas en un lenguaje de más alto nivel :p

La idea es genial, pero te recomiendo no hardcodear (creo que así se dice cuando asignas variables dentro del código).

Es más complejo, pero aprovechá para aprender: levantá todos los datos desde un archivo.

Podés crear la estructura Npc que tenga los atributos de cada npc y hacer un archivo binario o de texto (este último es mejor para editar directamente desde el archivo) que guarde los mismos. Sumado a esto podes crear funciones de tipo agregar, eliminar, o mostrar npcs.

De esta forma no sólo te simplificas la vida, sino también haces tu software más "portable" a otros servidores y, los usuarios que no sepan de programación pero sí sepan editar un archivo de índices, también puedan sacarle provecho.

Saludos!
 

Dunkan

Veterano
Genial que uses C. Pero este tipo de cosas conviene hacerlas en un lenguaje de más alto nivel :p

La idea es genial, pero te recomiendo no hardcodear (creo que así se dice cuando asignas variables dentro del código).

Es más complejo, pero aprovechá para aprender: levantá todos los datos desde un archivo.

Podés crear la estructura Npc que tenga los atributos de cada npc y hacer un archivo binario o de texto (este último es mejor para editar directamente desde el archivo) que guarde los mismos. Sumado a esto podes crear funciones de tipo agregar, eliminar, o mostrar npcs.

De esta forma no sólo te simplificas la vida, sino también haces tu software más "portable" a otros servidores y, los usuarios que no sepan de programación pero sí sepan editar un archivo de índices, también puedan sacarle provecho.

Saludos!
Para mi C es mas complicado que los lenguajes de alto nivel y para aprender es excelente, después si podes manejar java, cpp, ruby, python y por lo visto, está aprendiendo ajajajaja. Después la idea que dejaste es excelente, si se puede hacer bien en C es mas gratificante que hacerlo en un lenguaje de alto nivel

Sobre el código, bién pero... funciones abajo del main :vomitivo::mal:
 

lopera

Aprendiz Lvl 3
no entiendo de C pero al ejecutar el codigo el DEV me salta error en la linea INI

elgOperacion = seleccionarNPC();

un saludo
 

Dervet

Empty.
¿pero en el DEV no hay que darle solo a ejecutar? o hay que elegir antes algo?
Tanto en DEV como cualquier otro compilador, el lenguaje C y el lenguaje C++ deben ser compilados, y si intentas compilar un codigo de C++ como .C solamente te va a dar errores, igualmente si es viceversa
 

lopera

Aprendiz Lvl 3
Tanto en DEV como cualquier otro compilador, el lenguaje C y el lenguaje C++ deben ser compilados, y si intentas compilar un codigo de C++ como .C solamente te va a dar errores, igualmente si es viceversa
Pues no se
yo he creado un nuevo proyecto donde esta seleccionado c++ he copiado ese código y pegado le dado a guardar y le di compilar y ejecutar y salta en esa linea dando ese error. no se donde esta el error. ..

he mirado manuales y vídeos de como crear proyectos en dev y hago exactamente lo que pone los videos solo que pego ese codigo y le doy a ejecutar..

gracias. pro la respuesta..

un saludo
 

Dervet

Empty.
Pues no se
yo he creado un nuevo proyecto donde esta seleccionado c++ he copiado ese código y pegado le dado a guardar y le di compilar y ejecutar y salta en esa linea dando ese error. no se donde esta el error. ..

he mirado manuales y vídeos de como crear proyectos en dev y hago exactamente lo que pone los videos solo que pego ese codigo y le doy a ejecutar..

gracias. pro la respuesta..

un saludo
Y el error es que lo estas seleccionando como c++ , esto es C.
 
Arriba