Estoy tratando de escribir un juego que tenga un sistema monetario con cobre, plata y oro. ¿Cómo cambio una de las variables una vez que alcanza 100?

var copper = 0;
var silver = 0;
var gold = 0;
0
Jess Muir 8 may. 2016 a las 03:57

3 respuestas

La mejor respuesta

Esto debería funcionar, solo llame a addMoney () cuando el jugador obtenga dinero (no probado):

var copper = 0;
var silver = 0;
var gold = 0;
function addMoney(type, amount){
    if(type=='copper'){
        copper += amount;
        while(copper >= 100){
            copper -= 100;
            silver++;
        }
        while(silver >= 100){
            silver -= 100;
            gold++;
        }
    } else if(type=='silver'){
        silver += amount;
        while(silver >= 100){
            silver -= 100;
            gold++;
        }
    } else if(type=='gold'){
        gold += amount;
    } else {
        return false;
    }
    return true;
}

Ejemplo:

getMoney('silver', 5);

Debe devolver verdadera e incrementar la plata en 5.

0
Feathercrown 9 may. 2016 a las 23:33

Creo que podemos manejar todo tipo de dinero como una vez y considerar que, la plata o el oro pueden ser más de 100 al agregar cobre.

var Money = (function(){
    var m_copper = 9;
    var m_silver = 25;
    var m_gold = 30;                    //assume get from sever, may be ajax
    var targetTop = 100;
    var addCopper = function(){
        m_copper += amount.copper;
        while (m_copper >= targetTop){
            m_copper -= targetTop;
            m_silver += 1;
        }
    };
    var addSilver = function(){
        m_silver += amount.silver;
        while (m_silver >= targetTop){
            m_silver -= targetTop;
            m_gold += 1;
        }
    };
    var addGold = function(){
        m_gold += amount.gold;
    };
    var validate = function(){
        if (isNaN(amount.copper) || isNaN(amount.silver) || isNaN(amount.gold)){
            return false;
        }
        return true;
    }

    return {
        money: {
        copper: 0,
        silver: 0,
        gold: 0
        },              // actually this is not required, just for reference

        add: function( money ){
            amount = money;
            if (!(validate())){return;}
            addCopper();
            addSilver();
            addGold();
            return {copper: m_copper, silver: m_silver, gold: m_gold};
        }
    };
}());

var a = Money.add({copper: 103, silver: 245, gold: 10});
console.log(a);
var b = Money.add({copper: 103, silver: 245, gold: 10});
console.log(b);
0
EricMok 8 may. 2016 a las 03:49

Use la declaración if:

if (copper == 100) {
 // set copper back to 0
 copper = 0;
}
0
Bosselini 8 may. 2016 a las 01:04