2012-08-13 22:15:56 +02:00
< html >
< head >
< script type = "text/javascript" >
2012-08-14 22:48:31 +02:00
player_pos = [300, 0];
enemy_pos = [300, 0];
pewpew = 0;
2012-08-14 20:41:20 +02:00
2012-08-14 22:48:31 +02:00
document.onkeydown = onKeyDown;
2012-08-14 20:41:20 +02:00
2012-08-14 22:48:31 +02:00
function onKeyDown(e) {
e = e || window.event;
2012-08-14 20:41:20 +02:00
2012-08-14 22:48:31 +02:00
var player = document.getElementById("player");
2012-08-14 20:41:20 +02:00
2012-08-14 22:48:31 +02:00
if (e.keyCode == '37') { // left
player_pos[0] -= 10;
2012-08-13 22:15:56 +02:00
}
2012-08-14 22:48:31 +02:00
if (e.keyCode == '39') { // right
player_pos[0] += 10;
2012-08-14 21:31:16 +02:00
}
2012-08-14 22:48:31 +02:00
if (e.keyCode == '32') { // space = fire
shoot(player_pos);
}
}
shoots = [];
function shoot(player_pos) {
shoots[shoots.length] = [player_pos[0], 500];
// pewpew = 5;
}
2012-08-14 21:31:16 +02:00
2012-08-14 22:35:35 +02:00
function isCollided(a, b) {
var a_left = parseInt(a.style.left);
var a_right = a_left + a.offsetWidth;
var a_top = parseInt(a.style.top);
var a_bottom = a_top + a.offsetHeight;
var b_left = parseInt(b.style.left);
var b_right = b_left + b.offsetWidth;
var b_top = parseInt(b.style.top);
var b_bottom = b_top + b.offsetHeight;
return !(
(a_left > b_right) ||
(a_right < b_left ) | |
(a_top > b_bottom) ||
(a_bottom < b_top )
);
}
2012-08-14 21:31:16 +02:00
function gameLoop() {
2012-08-14 22:35:35 +02:00
// detect collision
var enemydiv = document.getElementById("enemy");
for(var i = 0; i < shoots.length ; i + + ) {
if (shoots[i]) {
var shootdiv = document.getElementById('shoot' + i);
if (shootdiv & & isCollided(shootdiv, enemydiv)) {
2012-08-14 22:47:02 +02:00
pewpew = 5;
2012-08-14 22:35:35 +02:00
}
}
}
2012-08-14 21:31:16 +02:00
// render shoots
for(var i = 0; i < shoots.length ; i + + ) {
if (shoots[i]) {
var shootdiv = document.getElementById('shoot' + i);
if (!shootdiv) {
shootdiv = document.createElement('div');
shootdiv.setAttribute('id', 'shoot' + i);
shootdiv.setAttribute('class', 'shoot');
shootdiv.innerHTML = '|';
var body = document.getElementsByTagName('body')[0];
body.appendChild(shootdiv);
}
shootdiv.style.left = shoots[i][0];
shootdiv.style.top = shoots[i][1];
} else {
if (deldiv = document.getElementById('shoot' + i)) {
var body = document.getElementsByTagName('body')[0];
body.removeChild(deldiv);
}
}
}
// render pew pew
var pewpewdiv = document.getElementById("pewpew");
if (pewpew > 0) {
pewpewdiv.innerHTML = "pew! pew!";
} else {
pewpewdiv.innerHTML = "";
}
2012-08-14 22:47:02 +02:00
// render player
var playerdiv = document.getElementById("player");
playerdiv.style.left = player_pos[0];
// FIXME playerdiv.style.top = player_pos[1];
2012-08-14 22:35:35 +02:00
// render enemy
var enemydiv = document.getElementById("enemy");
2012-08-14 22:47:02 +02:00
enemydiv.style.left = enemy_pos[0];
enemydiv.style.top = enemy_pos[1];
2012-08-14 22:35:35 +02:00
2012-08-14 21:31:16 +02:00
// animate shoots
for(var i = 0; i < shoots.length ; i + + ) {
if (shoots[i]) {
2012-08-14 23:02:01 +02:00
shoots[i][1] -= 20;
2012-08-14 21:31:16 +02:00
if (shoots[i][1] < 0 ) {
delete(shoots[i]);
}
}
}
// animate pew pew
if (pewpew > 0) {
pewpew -= 1;
}
2012-08-14 23:02:01 +02:00
// animate enemy
var min = -50;
var max = +50;
var off = min + parseInt(Math.random() * (max-min));
enemy_pos[0] += off;
if (enemy_pos[0] < 0 ) enemy_pos [ 0 ] = 0 ;
if (enemy_pos[0] > 600) enemy_pos[0] = 600;
2012-08-14 21:31:16 +02:00
setTimeout("gameLoop()", 100);
}
2012-08-13 22:15:56 +02:00
< / script >
2012-08-14 20:41:20 +02:00
< style type = "text/css" >
* {
2012-08-14 22:35:35 +02:00
font-size: 2em;
2012-08-14 20:41:20 +02:00
color: #ff00ff;
font-family: helvetica, arial;
}
#player {
position: absolute;
bottom: 10%;
2012-08-14 22:35:35 +02:00
/* -webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg); */
}
#enemy {
position: absolute;
top: 10%;
/* -webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg); */
border-style: solid; border-width: 1px;
2012-08-14 20:41:20 +02:00
}
#pewpew {
position:absolute;
top: 10%;
right: 10%;
}
2012-08-14 21:31:16 +02:00
div.shoot {
position:absolute;
2012-08-14 22:35:35 +02:00
border-style: solid; border-width: 1px;
2012-08-14 21:31:16 +02:00
}
2012-08-14 20:41:20 +02:00
< / style >
2012-08-13 22:15:56 +02:00
< / head >
2012-08-14 21:31:16 +02:00
< body onload = "gameLoop();" >
2012-08-14 22:35:35 +02:00
< div id = "enemy" > 3< / div >
< div id = "player" > < < / div >
2012-08-14 21:31:16 +02:00
< div id = "pewpew" > < / div >
2012-08-13 22:15:56 +02:00
< / body >
< / html >