var gamelooper; var plurkslooper; var gravity = 0.17; var move = 0; var flyMove = -3.3; var flying = false; var keyIsDown = false; var lastPlurk = null; var gameState = 0; //0=start 1=playing 2=end var score = 0; $(document).ready(function(){ $(document).keydown(function(e){ if(e.keyCode == 32){ keyDown(); } }); $(document).keyup(function(e){ if(e.keyCode == 32){ keyUp(); } }); if("ontouchstart" in window){ $(document).on("touchstart", keyDown); $(document).on("touchend", keyUp); }else{ $(document).on("mousedown", keyDown); $(document).on("mouseup", keyUp); } }); function gameReset(){ $(".plurk").remove(); lastPlurk = null; $("#player").css('top','100px'); gameState = 0; move = 0; flying = false; score = 0; $("#score").html(''); $("#startScreen").css('display','block'); $("#endScreen").css('display','none'); $("#player .playerImg").css("display","block"); $("#player .playerDieImg").css("display","none"); } function gameEnd(){ clearInterval(gamelooper); clearInterval(plurkslooper); gamelooper = null; plurkslooper = null; $("#player .playerImg").css("display","none"); $("#player .playerDieImg").css("display","block"); $("#player").animate({ top: "-=30px" },300, function(){ var playerPos = $("#player").position(); $("#player").animate({ top: "420px" }, 800 - playerPos.top , function(){ gameState = 2; $("#score").html(''); var showScore = score - 100; if(showScore < 0) showScore = 0; $("#endScreen .scoreNumber").html(showScore); $("#endScreen").css('display','block'); }); }); } function gameStart(){ if($("#main").css('display') == 'block'){ gameState = 1; $("#startScreen").css('display','none'); plurksloop(); var fps = 60; gamelooper = setInterval(gameloop, 1000 / fps); plurkslooper = setInterval(plurksloop, 500); } } function gameloop(){ var player = $("#player"); var playerPos = player.position(); if(playerPos.top < -30){ move = 5; flying = false; }else{ if(flying){ if(playerPos.top < 10) move -= 0.1; else move -= 0.3; if(move > 0) move = 0; else if(move < -4) move = -4; }else{ move += gravity; } } playerPos.top += move; if(playerPos.top > 360-26){ gameEnd(); return; } $(".plurk").each(function(index){ var pos = $(this).position(); pos.left -= 5; $(this).css('left',pos.left + 'px'); if(playerPos.left + 26 > pos.left - 20 && playerPos.left < pos.left + 200){ if(playerPos.top + 26 > pos.top && playerPos.top < pos.top + 27){ gameEnd(); return; } } }); player.css('top',playerPos.top + 'px'); score++; var showScore = score - 100; if(showScore < 0) showScore = 0; $("#score").html('score ' + showScore); } function keyDown(){ if(!keyIsDown && gameState == 1){ flying = $("#player").position().top > 0; } keyIsDown = true; } function keyUp(){ if(gameState == 0) gameStart(); else if(gameState == 1) flying = false; else if(gameState == 2){ if(flying) flying = false else gameReset(); } keyIsDown = false; } function plurksloop(){ $(".plurk").filter(function(){return $(this).position().left < -200; }).remove() var lastPos; var rowHeight = 320.0 / 4.0; if(lastPlurk != null){ lastPos = lastPlurk.position(); }else{ lastPos = {left:600, top:0}; } var x = lastPos.left + Math.floor(Math.random() * 140) + 100; var y = Math.floor(((lastPos.top - 30 + Math.floor(Math.random() * rowHeight * 3) + rowHeight) % 320) / rowHeight) * rowHeight + 30; var content = makeContent(); var avatar = Math.floor(Math.random() * 7) + 1; var newPlurk = $('
' + content + '
'); $('#timeline').append(newPlurk); lastPlurk = newPlurk; } var possible = "~!@#$ %^&* _+=- @;:$.?* "; function makeContent(){ var text = ""; var length = Math.floor(Math.random() * 16) + 8; for( var i=0; i < length; i++ ) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; }