Generate a random string in Javascript/Phaser

One of the thing I’ve had to do commonly over the years in making games is to be able to generate a random string. Now lot of times I do this on the server side of code to be able to generate a none, one time use code. But there are times where I have had to do it on the client side maybe to generate a password would be a common use of this, or it could be having to guess what the random letters are in a mastermind type of game. It’s a very simple thing to do.
All we need to do is to define a set of letters or symbols characters for the program to pick from. We decide on a word length and then loop through that many times pick a random index from the length of the set and then concat a string with that.

Here’s the outline of the code.

  1. make a random string of letters
    var letters = “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*#%&!”;
  2. we set up a variable called word set to blank
    var word = “”;
  3. Pick a random place in the string
    var index = Math.floor(Math.random() * letters.length);
  4. Concat the character at the place in the letters string to a string called word
    word += letters.charAt(index);
  5. Do that for the number of times that we want the word length to be
    var wordLen = 10;
    for (var i = 0; i < wordLen; i++) {}
  6. Return that value
    Return word

Here is the full code

var StateMain = {
    preload: function() {
        game.load.image("button", "images/btnGenerate.png");
    },
    create: function() {
        console.log("Ready!");
        var btnGet = game.add.sprite(game.world.centerX, game.world.centerY, "button");
        this.text1 = game.add.text(game.world.centerX, game.height / 3, "");
        this.text1.fill = "#ffffff";
        btnGet.anchor.set(0.5, 0.5);
        this.text1.anchor.set(0.5, 0.5);
        btnGet.inputEnabled = true;
        btnGet.events.onInputDown.add(this.getWord, this);
    },
    getWord: function() {
        var word = this.makeRandomString();
        this.text1.text = word;
    },
    makeRandomString: function() {
        var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789*#%&!";
        var word = "";
       
        var wordLen = 10;
        for (var i = 0; i < wordLen; i++) {
            var index = Math.floor(Math.random() * letters.length);
            word += letters.charAt(index);
        }
        return word;
    },
    update: function() {}
}

 

And Here is the result

Source Code Available in the FILE VAULT!

Leave a Comment