4.ブロック崩し

動作ボロボロのブロック崩しです。とりあえず動くだけで未完成。

[実行結果]

別ウインドウが開きます →

遊び方

マウスが動くと下の青い Bar が動くのでそれでボールをはじいてブロックにあててください。

ちなみに不自然にボールが加速・減速したり、変な角度で跳ね返る場合がありますが、ただのバグです。。 バーやブロックに当たっているのに素通りすることがありますが、これもバグです。。。

設定方法

未完成もいいとこなので設定も何もありません。 ただ遊ぶ程度でおねがいします。

[プログラム]

<script type="text/javascript" charset="Shift_JIS">
function FirstSec()
{
   flag1=0;
   flag2=0;
   flag3=0;
   Bcount=0;
   Xr=20;
   Yr=20;
   Xp=0;
   Yp=0;
   Sp=40;
   Ball.style.left=0;
   Ball.style.top=0;
   Moveing();
}


BlockNumber=2;
Block=new Array(3);

Block[0]=new Array(
      100,100,	//x座標 y座標
      100,15,	//幅 高さ
      0);		//初期値

Block[1]=new Array(
      300,100,
      100,15,
      0);

Block[2]=new Array(
      500,100,
      100,15,
      0);


for(i=0;i <= BlockNumber;i++)
   document.write("<div id='block"+i+"' style='position:absolute;left:"+Block[i][0]+"px;top:"+Block[i][1]+"px;width:"+Block[i][2]+"px;height:"+Block[i][3]+"px;color:blue;background-color:red;'>"+i+"</div>");

function Hanten()
{
   if(flag2 == 0){
      flag2=1;
   }else if(flag2 == 1){
      flag2=0;
   }
}

   document.onmousemove = MouseMove;

function MouseMove()
{
   Xp=event.x+document.body.scrollLeft;
   Yp=event.y+document.body.scrollTop;

   Bar1.style.left=Xp;
}

function Moveing()
{
   xPos = Ball.style.left;
   yPos = Ball.style.top;

   if(parseInt(xPos) <= 0){
      flag1=0;
      Xr=Math.floor(Math.random() * (Sp-1));
	}else if(document.body.clientWidth-30 <= parseInt(xPos)){
      flag1=1;
      Xr=Math.floor(Math.random() * (Sp-1));
	}

   if(flag1==0){
      Ball.style.left = parseInt(xPos)+Xr;
   }else if(flag1==1){
      Ball.style.left = parseInt(xPos)-Xr;
   }

   if((parseInt(xPos) >= Xp && parseInt(xPos) <= 100+Xp ) && (parseInt(yPos) >= 480 && parseInt(yPos) <= 500))
      Hanten();

   for(j=0;j <= BlockNumber;j++){
      if(Block[j][4] == 1) continue;

      if((parseInt(xPos) >= Block[j][0] && parseInt(xPos) <= Block[j][0]+Block[j][2] ) && ((parseInt(yPos) >= Block[j][1]-20 && parseInt(yPos) <= Block[j][1]) || (parseInt(yPos) >= Block[j][1] && parseInt(yPos) <= Block[j][1])) && Block[j][4] == 0){
         Hanten();
         Block[j][4]=1;
         eval("block"+j).style.visibility = "hidden";
         Bcount++;
      }
   }

   if(parseInt(yPos) <= 0){
      flag2=0;
      Yr=Math.floor(Math.random() * (Sp-1));
   }else if(document.body.clientHeight-30 <= parseInt(yPos)){
      flag2=1;
      Yr=Math.floor(Math.random() * (Sp-1));
   }

   if(flag2 == 0){
      Ball.style.top = parseInt(yPos)+Yr;
   }else if(flag2 == 1){
      Ball.style.top = parseInt(yPos)-Yr;
   }

   Mov=setTimeout("Moveing()",100);
   if(Bcount == BlockNumber+1) clearTimeout(Mov)
}
</script>

<div id="Ball" style="position:absolute;">●</div>

[裏話]

なんか無理に一日で完成させた記憶があります。 途中でオセロをつくりたくなってとりあえず動くだけにして、作業を終了させたようなしてないような...

完成度を高めればそこそこ遊べそうなので、そのうち完成させたいです。


© 2000-2003 Tsukimi / HobbySpace