Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

192
Vistas
Jugando con un juego incremental. ¿Cómo hago para que un número suba cada X cantidad de veces que otro número suba? && ¿Cómo funcionaría el escalado?

Soy nuevo en JS y tengo dificultades para entender gran parte de la lógica que lo rodea, así que discúlpeme si estas tesis son preguntas realmente básicas.

  1. En el juego con el que estoy jugando, quiero tener un sistema de reputación. El sistema subiría automáticamente a medida que el jugador haga clic en tantos. Pero no solo quiero que suba en 1. Quiero que casi se escale a los clics. Por ejemplo, digamos que el jugador hace clic 50 veces, luego quiero que gane 1 reputación. Entonces, si el jugador hace clic 60 veces más, quiero que gane tal vez 2 reputación. Y así. Sin embargo, estoy luchando por cómo resolverlo.

  2. Y eso lleva a mi segunda pregunta. ¿Cómo implemento el escalado en el juego? Por ejemplo, si los números aumentan mucho, no quiero que el jugador solo obtenga una cantidad determinada de reputación. Quiero que el número realmente importe y sea útil. Por ejemplo, digamos que el jugador tiene 5 millones de clics. En ese momento, no deberían obtener una reputación cada 60 clics. Quiero que obtengan algo así como 100 (tal vez más) reputación por cada mil clics o algo así. Y quiero que eso se aplique a todo, ¿verdad? Como la escala de números del juego a medida que el jugador avanza.

Aquí está el JS que tengo hasta ahora si eso es útil:

 let score = 0; let reputation = 0; function addToScore(amount) { score = score + amount; document.getElementById("score").innerHTML = score; if (score === 2 * 10 || score === 2) { reputation = reputation + amount; document.getElementById("reputation").innerHTML = reputation; } }

De todos modos, lo siento si algo de eso fue confuso. Puedo aclarar cualquier duda. Cualquier ayuda es apreciada.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

// count and reputation let count = 0; let reputation = 0; // creating a list of ceiling values const firstCeiling = 50; const secondCeiling = 60; const thirdCeiling = 100; //method to increment reputation const increment = () => { count++; }; // conditional statement to assign values to reputation if (count > firstCeiling && count < secondCeiling) { reputation++; } else if (count > secondCeiling && count < thirdCeiling) { reputation++; }

Puede sustituir el si no anidado con una caja de interruptor y también puede usar una matriz para almacenar los valores máximos si lo desea. También puede usar el mismo patrón y simplemente incrementar la reputación dentro de la condición if según sus requisitos. Espero que esto ayude.

about 4 years ago · Juan Pablo Isaza Denunciar

0

A continuación se muestra una forma posible de implementar el sistema de escalado. Espero que responda a sus dos preguntas.

 let score = 0; let reputation = 0; // initial reputation boundary multiplier. let reputationBoundaryMultiplier = 1; // initial reputation boundary (should earn score of 10 to win first reputation) let reputationBoundary = 10; // reputation amount to increase depending on score let reputationToAdd = 0; function addToScore(amount) { score = score + amount; document.getElementById("score").innerHTML = score; if (score > 100) { // if score is greater than 100, increase the reputation. // The variable reputationToAdd is decided when winning a reputation boundary and fixed until the next reputation boundary reputation = reputation + reputationToAdd; } if (score >= reputationBoundary) { // at each reputation boundary, decide the amount to increase the reputation // The same amount is used to increase reputation at each 100th score reputationToAdd = Math.round(score/10); // increase reputation reputation = reputation + reputationToAdd; // increase the next reputation boundary multiplier by 0.5 when winning reputation each time reputationBoundaryMultiplier = reputationBoundaryMultiplier + 0.5; // next score boundary eligible to win reputation reputationBoundary = reputationBoundaryMultiplier * score document.getElementById("reputation").innerHTML = reputation; } } for(let i = 1; i<100;i++) { addToScore(i); }

He mantenido un límite de reputationBoundary . Inicialmente, se establece en 10.

let reputationBoundary = 10;

Cada vez que la puntuación supera o es igual al límite de reputationBoundary , subo el listón para el próximo límite de reputationBoundary . (Hay un multiplicador de reputationMultiplier inicializado en cero y cuando el jugador alcanza el límite, incremento el multiplicador de reputationMultiplier en 0,5. Establezco el siguiente límite de reputationBoundary multiplicando la puntuación actual por el multiplicador de reputationMultiplier , por lo que el siguiente límite de reputationBoundary sería más difícil de alcanzar que el anterior).

reputationBoundaryMultiplier = reputationBoundaryMultiplier + 0.5;

reputationBoundary = reputationBoundaryMultiplier * score

He fijado la cantidad para aumentar la reputación así: divide la puntuación actual por 10 y redondea. Entonces, cuando el jugador gana un límite, aumentamos la reputación en una cantidad de reputación para agregar.

reputationToAdd = Math.round(score/10);

Es cierto que cuando el límite de reputación se vuelve más difícil de alcanzar que el anterior, el jugador tendrá que esperar más tiempo para incrementar la reputación. Entonces, para evitar eso y hacer que las cosas sean interesantes, si el puntaje es mayor a 100, cuando se agregan puntajes cada vez, aumento la reputación en una cantidad de reputación para agregar. Esta cantidad de reputación para agregar aumenta cada vez que el jugador alcanza un límite de reputationBoundary .

reputation = reputation + reputationToAdd;

Hazme saber si esto te ayuda @Dominick :)

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda