Atomic Game

Atomic Game using jQuery.js

by homer2

HTML

<script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-2.1.0.js"></script>
Click a box that you own or an unoccupied adjacent box<br/><br/>
<span data-bind="text:turn"></span>'s turn<br/>

<table id="board" data-bind="foreach: rows" border="1">
    <tr data-bind="foreach: cols">
        <td data-bind="attr: {'class': owner}">
            <span data-bind="text:owner" style="display:none;"></span><span data-bind="text: display"></span>
        </td>
    </tr>
</table>

CSS

td{cursor:pointer; color:white; font-size: x-large; width: 20px; height: 20px; border: 1px solid grey}
.blue{background-color: blue; }
.red {background-color: red; }

JavaScript

function cell(r, c){
        var self = this;
        self.r = r;
        self.c = c;
        self.value = ko.observable(0);
        self.owner = ko.observable("");
        self.neightboors = [];
        
        this.display = ko.computed(function() {
            return self.value()>0?self.value().toString():" ";
        }, this);

        
        self.addValue = function (owner){
            self.value(self.value()+1);
            if(owner) self.owner(owner);
            
            if(self.value()>self.neightboors.length){
                alert("opps" + self.value());
            }
            else if(self.value()==self.neightboors.length){
                self.value(0);
                self.owner("");
                for(var n=0; n<self.neightboors.length; n++){
                    self.neightboors[n].addValue(owner);
                }
            }
        }
    }
    function b(){
        var self = this;
        self.size = 6;
        self.rows = [];
        
        self.turn = ko.observable("red");
        
        self.addValue = function (cell){
            var taken = false;
            if(cell.owner()==""){
                for(var n=0; n<cell.neightboors.length; n++){
                    if(cell.neightboors[n].owner()==self.turn()){
                        cell.addValue(self.turn());
                        taken = true;
                        break;
                    }                    
                }
            }
            else if(cell.owner()==self.turn()){
                cell.addValue(self.turn());
                taken = true;
            }            
            if(taken){
                if(self.turn()=="red")
                    self.turn("blue");
                else
                    self.turn("red");
            }
        }
        
        for(var r=0; r<self.size; r++){
            self.rows[r]={};
            self.rows[r].cols=[];
            for(var c=0; c<self.size; c++){
                self.rows[r].cols[c] = new...