Limit the number of uses of a function

1

Hello, I'm creating a mini-rpg in javascript and I'm having a question in the character-building section, I'd like to know how to limit the number of uses of a function.

  var personagem = new Object;

  personagem.carisma = 1;
  personagem.força = 1;
  personagem.inteligencia = 1;

  window.onload = init;
  function init () {
    var button1 = document.getElementById('char');
    var button2 = document.getElementById('for');
    var button3 = document.getElementById('int');
    button1.onclick = buttonClickCarisma;
    button2.onclick = buttonClickForce;
    button3.onclick = buttonClickInt;
  }

  function buttonClickCarisma () {
    if( personagem.carisma < 3 ) {
      personagem.carisma = personagem.carisma + 1;
      console.log(personagem.carisma);
    }
    else {
      console.log('Seu carisma está no máximo!');
    }
  }

  function buttonClickForce () {
    if( personagem.força < 3 ) {
      personagem.força = personagem.força + 1;
      console.log(personagem.força);
    }
    else {
      console.log('Sua força está no máximo!');
    }
  }

  function buttonClickInt () {
    if( personagem.inteligencia < 3 ) {
      personagem.inteligencia = personagem.inteligencia + 1;
      console.log(personagem.inteligencia);
    }
    else {
      console.log('Sua inteligência está no máximo!');
    }
  }

This piece of code demonstrates character creation, where I would like to limit the number of use of the buttonClickCarisma, buttonClickForce, and buttonClickInt functions to only 3 uses (if I use a 3 times I can not any other), something similar to creation of characters in games of the saga Fallout. Thank you in advance.

    
asked by anonymous 17.07.2018 / 21:14

2 answers

0

One way to do this would be to limit the number of attribute points a person can use, look at the limiteAtributos variable in the code below:

var personagem = new Object;

personagem.carisma = 1;
personagem.força = 1;
personagem.inteligencia = 1;
var limiteAtributos = 3;

window.onload = init;
function init () {
    var button1 = document.getElementById('char');
    var button2 = document.getElementById('for');
    var button3 = document.getElementById('int');
    button1.onclick = buttonClickCarisma;
    button2.onclick = buttonClickForce;
    button3.onclick = buttonClickInt;
}

function buttonClickCarisma () {
    if(limiteAtributos > 0){
        if( personagem.carisma < 3 ) {
            personagem.carisma = personagem.carisma + 1;
            limiteAtributos = limiteAtributos - 1;
            console.log(personagem.carisma);
        }
        else {
            console.log('Seu carisma está no máximo!');
        }
    } else {
        console.log('Todos os atributos já foram usados');
    }
}

function buttonClickForce () {
    if(limiteAtributos > 0){
        if( personagem.força < 3 ) {
            personagem.força = personagem.força + 1;
            limiteAtributos = limiteAtributos - 1;
            console.log(personagem.força);
        }
        else {
            console.log('Sua força está no máximo!');
        }
    } else {
        console.log('Todos os atributos já foram usados');
    }
}

function buttonClickInt () {
    if(limiteAtributos > 0){
        if( personagem.inteligencia < 3 ) {
            personagem.inteligencia = personagem.inteligencia + 1;
            limiteAtributos = limiteAtributos - 1;
            console.log(personagem.inteligencia);
        }
        else {
            console.log('Sua inteligência está no máximo!');
        }
    } else {
        console.log('Todos os atributos já foram usados');
    }
}
    
17.07.2018 / 22:10
3

I'll create an example:

let qtdVezes = 0;

function usarFunc () {
  if(qtdVezes >= 5){
      alert('Você não pode mais usar essa função!');
      return false;
  }
  
  qtdVezes++;
  console.log('Você está usando a função pela ' + qtdVezes + ' vez');
  
}
<button onclick="usarFunc()">Apertar</button>

It will only work again if the person refreshes the page.

    
17.07.2018 / 21:22