JSFiddle - React, Tailwind, and code Playground
by jjhageman
HTML
<div id="yard">
<span id="food"></span>
<div id="snake">
<span id="snakeHead"></span>
</div>
</div>
<div class="shrub"></div>
<div id="output">
<div style="float: left;">
Snake X: <span id="snakeX"></span><br />
Snake Y: <span id="snakeY"></span><br />
Snake XOffset: <span id="snakeXOffset"></span><br />
</div>
<div style="float:right;">
Food X: <span id="foodX"></span><br />
Food Y: <span id="foodY"></span><br />
</div>
</div>
CSS
#yard {
background-color: #eee;
border: 1px solid #eee;
width: 300px;
height: 300px;
position: relative;
overflow: hidden;
}
#output {
width: 300px;
}
#food {
visibility: hidden;
background: #fff;
display: block;
width: 10px;
height: 10px;
position: absolute;
}
#snake {
display: inline-block;
}
#snakeHead {
background: #000;
display: block;
width: 10px;
height: 10px;
position: absolute;
}
.snakeAppendage {
background: #000;
display: block;
width: 10px;
height: 10px;
position: absolute;
}
#azure_text {
font-family: helvetica, arial, sans-serif;
font-size: 32px;
color: #a6ca52;
position:relative;
left:40px;
top: 125px;
}
JavaScript
var b = {
};
b.snake = {
init: function() {
var $food = $('#food');
var $snake = $('#snakeHead');
var $shrub = $('.shrub');
snakeWidth = $('#snakeHead').width();
var snakeParts = [$snake]
// our random location to position food
var randomPosition = b.snake.randomPosition();
b.snake.positionFood($food, randomPosition);
// our random location to position the snake
randomPosition = b.snake.randomPosition();
b.snake.positionSnake($snake, randomPosition);
// our function that allows us to move mr. snakey
b.snake.moveSnake(snakeWidth);
},
/* end init */
randomDimension: function() {
var min = 0;
var max = $('#yard').width();
return Math.floor(Math.random() * (max - min + 1)) + min;
},
randomPosition: function() {
var x = b.snake.randomDimension();
var y = b.snake.randomDimension();
return [x, y];
},
/* end random position */
positionFood: function($food, randomPosition) {
$food.css('top', randomPosition[0] - 10).css('left', randomPosition[1] - 10).css('visibility', 'visible');
},
/* end position food */
positionSnake: function($snake, randomPosition) {
$snake.css('top', randomPosition[0] - 10).css('left', randomPosition[1] - 10).css('visibility', 'visibile');
},
/* end position snake */
moveSnake: function(snakeWidth) {
$(document).keydown(function(e) {
var snakePosition = $('#snakeHead').position();
var snakeX = snakePosition.left;
$('#snakeX').text(snakeX);
var snakeY = snakePosition.top;
$('#snakeY').text(snakeY);
// see if mr. snakey ate his food :0
var checkCollision = function(snakeX, snakeY, snakeWidth) {
var snakeXOffset = snakeX + 10;
var snakeYOffset = snakeY + 10;
...