<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<div class='board'></div>
<button id="reset">Reset</button>
</body>
</html>
.cells{
height: 50px;
width: 50px;
border: 1px solid black;
float: left;
margin: 1px;
text-align: center;
}
.hidden{
visibility: hidden;
}
var array = new Array();
var winner_found;
//Create board and array
function board_make(){
winner_found = false;
for (var i = 0; i < 3; i ++){
array[i] = new Array(3);
for (var j = 0; j < 3; j ++){
array[i][j] = "A" ;
if(j == 2){
$('.board').append("<div class='cells'><p class='hidden'>"+i.toString()+j.toString()+"</div></br></br></br>");
}
else{
$('.board').append("<div class='cells'><p class='hidden'>"+i.toString()+j.toString()+"</div>");
}
}
}
}
//Match Checking Function
function match(x,y,z){
var same = false;
if (x == "X" && y == "X" && z == "X"){
same = true;
}
return same;
}
//Horizontal Match Check Function
function hor_match(){
var row_one = match(array[0][0],array[0][1],array[0][2]);
var row_two = match(array[1][0],array[1][1],array[1][2]);
var row_three = match(array[2][0],array[2][1],array[2][2]);
return (row_one||row_two||row_three);
}
//Vertical Match Check Function
function ver_match(){
var col_one = match(array[0][0],array[1][0],array[2][0]);
var col_two = match(array[0][1],array[1][1],array[2][1]);
var col_three = match(array[0][2],array[1][2],array[2][2]);
return (col_one||col_two||col_three);
}
//Diagonal Match Check Function
function diag_match(){
diag_left = match(array[0][0],array[1][1],array[2][2]);
diag_right = match(array[0][2],array[1][1],array[2][0]);
return (diag_left || diag_right);
}
//jQuery begins
$(document).ready(function(){
board_make();
$('.board').on('click', '.cells', function(){
console.log('clicked');
if ($(this).text() != "X"){
var a = parseInt($(this).text()[0],10);
var b = parseInt($(this).text()[1],10);
array[a][b] = "X";
$(this).html("<p class='shown'>X</p>");
}
else{
alert("Spot taken. Pick another spot.");
}
if ((winner_found === false) && (hor_match() || ver_match() || diag_match())){
alert("Match found!");
winner_found = true;
}
});
$('#reset').click(function(){
$('.board').empty();
board_make();
});
});
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |