タイマンのインベーダーゲーム!ってこれが? でもこれで連射可能!


きもちよく連射できます。 当たり判定は組み込んでないのですが・・・。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>Game</title>
<style type="text/css">
#waku { width:480px; height:640px; border :2px #888 inset; position:relative;}
#waku img { position:absolute; }
#TAMA { display:none; }
</style>

<body>
<div id="waku">
<img src="jiki.png" width="20" height="20" alt="自機" id="JIKI">
<img src="teki.png" width="20" height="20" alt="敵機" id="TEKI">
<img src="tama0.png" width="20" height="20" alt="玉"  id="TAMA">
</div>

<script type="text/Javascript">

var offset = getPosition(document.getElementById('waku'));
var teki = {x: 0, y: 0, m: 4, e: document.getElementById('TEKI') };
var jiki = {x: 240, y: 600, e: document.getElementById('JIKI') };
var tama = {x: 0, y:0 , e: document.getElementById('TAMA') };
var FEND = true;
var Pmouse = {x:240, y:600};

document.getElementById('waku').onmousemove = function (evt) {
  evt = evt ? evt: window.event;
  Pmouse.x = evt.clientX - offset.x;
  Pmouse.y = evt.clientY - offset.y;
}

document.getElementById('waku').onclick = function (evt) {
  start_tama();
  return evt ? evt.preventDefault(): event.returnValue = false;
};

start = function LOOP () {
  //ここに何か書く?

  FEND && setTimeout( LOOP, 10);
};

start_teki = function LOOP1 () { 
  teki.x += teki.m;
  if (teki.x < 0 || teki.x > 460) teki.m *=-1, teki.y += 20;
  teki.e.style.top = teki.y + 'px';
  teki.e.style.left = teki.x + 'px';

  FEND = teki.y < 600;
  FEND && setTimeout(LOOP1, 20);
};

start_jiki = function LOOP2 () {
  jiki.x += (Pmouse.x < jiki.x -8 ) * -4 + (Pmouse.x > jiki.x +8) *4;
  jiki.e.style.left = jiki.x + 'px';
  jiki.e.style.top = jiki.y + 'px';
  FEND && setTimeout(LOOP2, 60);
};

start_tama = function () {
  var x = jiki.x;
  var y = jiki.y;
  var e = document.getElementById('TAMA').cloneNode(false);
  e.id = null;
  e.style.display = 'inline';
  document.getElementById('waku').appendChild(e);
  var P = function LOOP3 () {
    y-= 8;
    e.style.left = x + 'px';
    e.style.top = y + 'px';
    if (y>4) setTimeout(LOOP3, 20); else {
      document.getElementById('waku').removeChild(e);
    }
  };
  P();
};

function getPosition(node) {
  var x = 0, y = x;
  do x += node.offsetLeft, y += node.offsetTop; while (node = node.offsetParent)
  return {x: x, y:y};
}

start();
start_teki();
start_jiki();

</script>