動作ボロボロのブロック崩しです。とりあえず動くだけで未完成。
マウスが動くと下の青い 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>
なんか無理に一日で完成させた記憶があります。 途中でオセロをつくりたくなってとりあえず動くだけにして、作業を終了させたようなしてないような...
完成度を高めればそこそこ遊べそうなので、そのうち完成させたいです。