Dungeon Rats

Artificial Neural Net Rat Simulator

by Andy Novocin

HTML

<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.0/backbone-min.js"></script>
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/css/bootstrap.css">
<script src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/js/bootstrap.js"></script>
<script src="http://code.createjs.com/easeljs-0.7.0.min.js"></script>
<input type="textarea" id="boardseed" placeholder="board seed here format n:n:values" value="25:25:..$.$.X.............X....$X.X*..X$..X...*X$..$...X$.$......X.$.X...XX.$.X*.*.*..X..X.**.......X..$$$...........XX.....................$...X...*.$..X..$X..........$.*..X.....$.X..$*.$X......$...X.*X$......$.**.X.X..XX$X..*....*..X.X....$...X...X........$.X....$...*...X$*........X..$*$$......$$...$*..X.$.$......$.$.$...$..X.*.....X..$......$.XX*..X.$.X......X$*.**.....X*...$..XX..X.....$....X....X...X....X.$X$..X..........$...*.X$..X...$*...........*....XXX$$.$.$..*$XX..XX..*.....$......X.XX$..$$..X$.XX.$$..X.*..*......X......$..$.$$..*...X.........$X....$X.$$.*.$.$.$..**.....X.$.$X.*.$.........$**..X.X.X$X.$.*X.X*..$*."/>
<input type="textarea" id="genome" placeholder="Rat genome goes here" value="Sfz2smu:zej,9j:R\[thR73RzRdP0U.v2TF9-X/PTlOPdYF+k1N;o3`[uTfT>RTq:rsTBk:gYlNq-[@OmMrvVo^U\z=JV>l.tAq*\BLM3vJQLfnnpr_mN-7RN;^.-9j4ddZKXN,gvH;x:qYAgPz+tb29Li[qJ/jH+UepmPpV0qC^u2tpvl_/Z-`OTmijR@XW5iJRk0/\ztnzDHBu+HmsY*,AlZy`aJZ?WFQf*?>3`z6\TiU+O,MvIH\7zL?:=/.w^V/XH-`[X+8L7.+zxDBEm;jwW29jp/oj<Y"/>
<input type="number" id="start_x" placeholder="start x position" value="12"/>
<input type="number" id="start_y" placeholder="start y position" value="12"/>
<button class="btn btn-std" id="start_game">Click to Start</button>
<h3>
Ate <span id="food">0</span> time(s) :: 
Energy <span id="energy">30</span> :: 
Hit <span id="obst">0</span> obstacles ::
    <span id="moves">0</span> move(s) :: Status <span...

CSS

.tile {
    display: inline;
}

#gameCanvas {
    background-color: lightgray;
}

JavaScript

var CanvasView = Backbone.View.extend({
    initialize : function(options){
      options = options || {};
      this.container = options.container || new createjs.Container();
      this.canvasEvents(this.cEvents);
      this.init(options);
    },
    init : function(options){
    },
    canvasEvents : function(cEvents){
       if (!cEvents) return this;
       for (var key in cEvents){
           var method = cEvents[key];
           if (!_.isFunction(method)) method = this[cEvents[key]];
           if (!method) continue;
           method = _.bind(method, this);
           var eventName = key;
           this.container.on(eventName, method, this);
       }
       return this;
    }
});

var GenRand = Backbone.Model.extend({
    genRand: function(nnums, values, weights, replaceToggle){
        if(replaceToggle) // if true then with replacement
            return this.genRandWithReplacement(nnums, values, weights);
        else
            return this.genRandWithoutReplacement(nnums, values, weights);
    },
    genRandWithReplacement: function(nnums, values, weights){
        var retnums = new Array()
        var pdf = new Array();
        var cdf = new Array();
        var i, j;
        var s = 0;
        var rand;
        for(i = 0; i < weights.length; i++){
            s += weights[i];
        }
        for(i = 0; i < weights.length; i++){
            pdf[i] = weights[i]/s;
        }
        cdf[0] = pdf[0];
        for(i = 1; i < weights.length; i++){
            cdf[i] = cdf[i-1] + pdf[i];
        }
        for(i = 0; i < nnums; i++){
            rand = Math.random();
            for(j = 0; j < cdf.length; j++)
            {
                if(cdf[j] > rand){
                    retnums[i] = values[j];
                    break;
                }
            }
        }
        return retnums.slice(0,nnums);        
    },
    genRandWithoutReplacement: function(nnums, values, weights){
        var retnums = new Array();
        var dist = new Array();
   ...