Status Defender
Defender type game played in the status bar. Works in Chrome, FF, Safari & IE9, maybe more.
by nilloc
HTML
<p>
Maecenas sed diam eget risus varius blandit sit amet non magna. Cras justo odio, dapibus ac <a href='http://google.com'>facilisis</a> in, egestas eget quam. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.
</p>
<p>
Etiam porta sem malesuada magna mollis euismod. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec ullamcorper nulla non metus auctor fringilla. Cras justo odio, dapibus ac facilisis in, egestas eget quam.
</p>
<p>
Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit sit amet non magna. Curabitur blandit tempus porttitor. Nullam id dolor id nibh ultricies vehicula ut id elit.
</p>
<p>
Donec id elit non mi porta gravida at eget metus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Aenean lacinia bibendum nulla sed consectetur. Nulla vitae elit libero, a pharetra augue. Donec id elit non mi porta gravida at eget metus. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum. Donec sed odio dui.
</p>
JavaScript
var base = "/#",
bullets = [],
bullet_top = "¯",
bullet_mid = "-",
bullet_btm = "_",
checking = false,
enemies = [],
enemy_top = "°",
enemy_mid = "•",
enemy_btm = "˛",
position = 1,
score, ship = "›=»",
startPosition = {},
threshold = 30,
wiggle = false;
var bullet_pos = [bullet_top, bullet_mid, bullet_btm],
enemy_pos = [enemy_top, enemy_mid, enemy_btm];
$statusMsg = $('<a href="http://something"/>').click(function(evt) {
var something = true;
console.log('pew pew pew');
evt.stopPropagation();
return false;
}).css("border", "1px dotted red");
$statusMsg.css({
display: 'block',
position: 'absolute',
height: 20,
width: 20,
cursor: 'default'
});
$('body').append($statusMsg);
$(window).mousemove(function(evt) {
// follow the mouse with our custom link
$statusMsg.css({
top: evt.pageY - 10,
left: evt.pageX - 10
});
// checks to see if the mouse has moved enough to change ship positions
if (!checking) {
startPosition.x = evt.pageX;
startPosition.y = evt.pageY;
checking = true;
console.log('position', position);
}
if (checking) {
if (startPosition.y - evt.pageY > threshold) {
if (position - 1 >= 0) {
position--;
}
checking = false;
}
if (startPosition.y - evt.pageY < -threshold) {
if (position + 1 <= 2) {
position++;
}
checking = false;
}
}
}).mouseenter(function(evt) {
$statusMsg.attr('href', 'http://dfndr://#›=»¯ -_-¯˛°•°');
});
// Game Logic
function game() {
bullets.unshift(bullet_pos[position]);
bullets = bullets.slice(0, 60);
//enemies = enemies.slice(0,30);
$statusMsg.attr('href', base + ship + bullets.join(""));
wiggle = !wiggle;
var newOffset = (wiggle)? "block" : "none";
// kinda worked in...