Crear una variable basada en incrementos de otra variable

Soy muy nuevo en Java y me he autodidacta. Estoy creando un juego de rol en el que las habilidades reflejan un "modificador", ganas o pierdes modificadores según tu habilidad general en ese campo.

Por ejemplo, si tu habilidad de "fuerza" está en 10, obtienes un modificador de +0 para cualquier cosa que requiera fuerza. Si es 12, obtienes un modificador de +1, 14 es +2 y así sucesivamente.

¿Hay alguna forma en que pueda hacerlo sin tener que crear una tabla enorme que enumere todos los incrementos como if ¿declaraciones?

preguntado el 14 de febrero de 14 a las 01:02

Eso dependería de su lógica para manejar modificadores. A partir de su ejemplo, se podría suponer que cualquier habilidad superior a 10 obtiene un modificador de 1 punto por cada 2 puntos de habilidad. Deberías aclarar esa lógica. -

¡Eso es precisamente lo que quiero! Sin embargo, no puedo pensar en una forma (con mi conocimiento limitado) de indicar eso en el código. -

Bienvenido a Stack Overflow. Consulte la definición de cada etiqueta en este sitio antes de usarlo. Como sitio destinado a programadores, nuestro uso de "RPG" se refiere al lenguaje de programación, no a la vaga clase de juegos. Las preguntas relacionadas con conceptos de desarrollo de juegos a menudo pertenecen a nuestro sitio hermano. gamedev.stackexchange.com -

3 Respuestas

Parece que solo quieres alguna fórmula para calcular los modificadores. Adivinando por su pregunta, la fórmula sería algo así como:

int modifier = Math.floor((skillLevel - 10) / 2);

Si quiere diferentes fórmulas para diferentes tipos de habilidades, entonces probablemente querrá una Skill clase con diferentes constantes almacenadas en ella, que se utiliza para calcular la fórmula. Por ejemplo, si la fuerza se calcula como se indicó anteriormente, pero la inteligencia debe estar en 15 antes de comenzar a obtener un modificador, podría hacer esto:

public class Skill {
    int baseLevel;

    public Skill(int level) {
        this.baseLevel = level;
    }

    public int getModifier(int skillLevel) {
        return Math.floor((skillLevel - baseLevel) / 2);
    }
}

Crear la instancia de fuerza de Skill con un baseLevel de 10 y la instancia de inteligencia de Skill con un nivel de base de 15. Si su fórmula para calcular el modificador es más complicada, puede cambiar esta clase en consecuencia.

Respondido 14 Feb 14, 01:02

¡Gracias por la respuesta rápida! Digamos que quería dar -1 modificadores por cada 2 por debajo de 10, ¿cómo lo haría? - user3308442

La fórmula también funciona para eso, pero es posible que no le brinde exactamente lo que está buscando. Porque Math.floor siempre se redondea hacia abajo, una fuerza de 8 o 9 obtendría un modificador de -1, mientras que una fuerza de 7 o 6 obtendría un modificador de -2. Si prefiere darle a 9 un modificador de 0, deberá escribir una fórmula separada para los niveles de habilidad que son más pequeños que el nivel base. - David Stanley

Para el ejemplo que diste, podrías hacer esto:

modifier = (skill - 10) / 2;

Lo que dice que cada dos puntos> 10 da +1 modificador. Esta es una solución simplista, ya que no tiene en cuenta las habilidades <10, pero entiendes la idea.

Respondido 14 Feb 14, 01:02

Revisa Marco de colecciones de Java y elija una clase para almacenar sus tablas indicando qué modificador se aplica a las puntuaciones dadas. Desea poder cargar los datos inicialmente, luego buscar la respuesta para obtener un puntaje según sea necesario. Por lo tanto, es posible que desee ver alguna clase que implemente java.util.mapa. Te dejo ese ejercicio de aprendizaje ;-)

Respondido 14 Feb 14, 19:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.