Javascript Rock, Paper, Scissors 4

Implementation of Rock, Paper, Scissors using the Modular, Prototype, and Mediator design patterns.

by Richard Lovell

HTML

<div class="container">
            <div class="header">
                <h3 class="text-muted">Rock Paper Scissors 4</h3>
            </div>
            <div class="jumbotron">
                <div class="row">
        <div class="col-md-6">
            <p>Player 1</p>
            <p><input id="username1-tb" class="form-control" type="text" placeholder="Enter your username"></p>                
                <p><a id="create-btn" class="btn btn-lg btn-success" href="#">Create game</a></p>
                <p>Choose Rock, Paper or Scissors</p>
                <a id="rock-btn1" class="btn btn-lg btn-success" href="#">Rock</a>
                <a id="paper-btn1" class="btn btn-lg btn-success" href="#">Paper</a>
                <a id="scissors-btn1" class="btn btn-lg btn-success" href="#">Scissors</a></div>
        <div class="col-md-6">
            <p>Player 2</p>
            <p><input id="username2-tb" class="form-control" type="text" placeholder="Enter your username"></p>                
                <p><a id="join-btn" class="btn btn-lg btn-success" href="#">Join game</a></p>
                <p>Choose Rock, Paper or Scissors</p>
                <a id="rock-btn2" class="btn btn-lg btn-success" href="#">Rock</a>
                <a id="paper-btn2" class="btn btn-lg btn-success" href="#">Paper</a>
                <a id="scissors-btn2" class="btn btn-lg btn-success" href="#">Scissors</a></div>       
      </div>
</div>
<div class="footer">               
    </div>
</div>

JavaScript

//Creational/Structural pattern
//MODULAR PATTERN

//global module/library 
//import jQuery as a mixin 
//module is bound to document.ready
var rockPaperScissors = library(function ($) {
    return {
        init: function () {
            // module implementation
            // app class
            var APP = function APP() {

                this.bindUI = function () {
                    var gameManager = new APP.GameManager();

                    //player1
                    $("#create-btn").on("click", function () {
                        gameManager.startGame($("#username1-tb").val());
                    });
                    $("#rock-btn1").on("click", function () {
                        gameManager.game.player1.choice = "rock";
                        gameManager.checkComplete();
                    });
                    $("#paper-btn1").on("click", function () {
                        gameManager.game.player1.choice = "paper";
                        gameManager.checkComplete();
                    });
                    $("#scissors-btn1").on("click", function () {
                        gameManager.game.player1.choice = "scissors";
                        gameManager.checkComplete();
                    });

                    //player2
                    $("#join-btn").on("click", function () {
                        gameManager.joinGame($("#username2-tb").val());
                    });
                    $("#rock-btn2").on("click", function () {
                        gameManager.game.player2.choice = "rock";
                        gameManager.checkComplete();
                    });
                    $("#paper-btn2").on("click", function () {
                        gameManager.game.player2.choice = "paper";
                        gameManager.checkComplete();
                    });
                    $("#scissors-btn2").on("click", function () {
                        gameManager.game.player2.choice = "scissors";
          ...