早急に返信お願いします!!
Posted: 2013年2月01日(金) 03:31
先ほど質問したのですが、コードを囲ってなかったので・・・・・・
javascriptなんですがブロック崩しを作ろうと思っています。
ブロックを壊したらそのブロックがボールになり他のブロックを壊す
というゲームを作ろうと思っています。
ここまでは出来たのですが、どーしてもボールを増やすことができません。
助けてください(_ _)
javascriptなんですがブロック崩しを作ろうと思っています。
ブロックを壊したらそのブロックがボールになり他のブロックを壊す
というゲームを作ろうと思っています。
ここまでは出来たのですが、どーしてもボールを増やすことができません。
助けてください(_ _)
<html>
<div id = ball> </div>
<div id = racket> </div>
<body>
<script language="JavaScript">
var x = new Array(); // ボールのX座標
var y = new Array(); // ボールのY座標
var vx = new Array(); // ボールの速度(X方向)
var vy = new Array(); // ボールの速度(Y方向)
var xMax; // ボールが動きうる最大のX座標(右方向)
var yMax; // ボールが動きうる最大のY座標(下方向)
var rxMax; // ラケットが動きうる最大のX座標(右方向)
var k = 0; // キーコードを格納する連絡用の変数
var bkl = 100; // 一番左のブロックのX座標
var bkt = 50; // 一番上のブロックのY座標
var nx = 10; // ブロックの横方向の数
var ny = 3; // ブロックの縦方向の数
var dx = 30; // ブロックの横方向の間隔(隙間の長さではなく、二つのブロック間の差分)
var dy = 30; // ブロックの縦方向の間隔(隙間の長さではなく、二つのブロック間の差分)
var i; // for文による繰り返し処理のために利用する変数
var j; // for文による繰り返し処理のために利用する変数
var h;
var basx = 20; // ボールの大きさ(横)
var basy = 20; // ボールの大きさ(縦)
var bksx = 20; // ブロックの大きさ(横)
var bksy = 20; // ブロックの大きさ(縦)
var rsx = 68; // ラケットの大きさ(横)
var rsy = 20; // ラケットの大きさ(縦)
var rx = 200; // ラケットのX座標を意味する変数
var ry = 400; // ラケットのY座標を意味する変数
var rspeed = 5; // ラケットが動く時の速度
var a = new Array( ); // ブロックを作るための配列「a」を定義する
var b = new Array( );
for(h = 0; h < 31; h++){
x[h] = Math.random() * 100;
y[h] = Math.random() * 100;
vx[h] = Math.random() * 8 + 3;
vy[h] = Math.random() * 8 + 3;
}
resizeTo(550,650); // 最初にウィンドウを開く場合のウィンドウのサイズ指定
for(h = 0 ; h < 31; h++){
b[h] = "ball" + h;
document.write( "<div id=" + b[h] + "> </div>" );
document.getElementById(b[h]).style.position = "absolute";
document.getElementById(b[h]).style.visibility = "visible";
document.getElementById(b[h]).style.fontSize = "24";
document.getElementById(b[h]).style.color = "#FF00FF";
document.getElementById(b[h]).innerHTML = "●";
}
document.getElementById("racket").style.position = "absolute";
document.getElementById("racket").style.visibility = "visible";
document.getElementById("racket").style.fontSize = "24";
document.getElementById("racket").style.color = "#ff0000";
document.getElementById("racket").innerHTML = "■■■";
document.getElementById("racket").style.left = rx;
document.getElementById("racket").style.top = ry;
for(j = 0; j < ny; j++){
for(i = 0; i < nx; i++){
a[j * nx + i] = "block" + j + i;
document.write( "<div id=" + a[j * nx + i] + "> </div>" );
document.getElementById(a[j * nx + i]).style.position = "absolute";
document.getElementById(a[j * nx + i]).style.visibility = "visible";
document.getElementById(a[j * nx + i]).style.fontSize = "24";
document.getElementById(a[j * nx + i]).style.color = "#1E90FF";
document.getElementById(a[j * nx + i]).innerHTML = "■";
document.getElementById(a[j * nx + i]).style.left = bkl + i * dx;
document.getElementById(a[j * nx + i]).style.top = bkt + j * dy;
}
}
// キーボード押下時の処理
document.onkeydown = rmove;
function rmove(){
k = event.keyCode;
}
// キーボードを離した時の処理
document.onkeyup = rstop;
function rstop(){
k = 0;
}
setInterval("move_ball( )",16);
function move_ball() {
rxMax = document.body.clientWidth - rsx - 24;
// ラケットの移動処理
if (k == 39){
rx = rx + rspeed;
if (rx > rxMax){
rx = rxMax;
}
}
if (k == 37){
rx = rx - rspeed;
if (rx < 0){
rx = 0;
}
}
document.getElementById("racket").style.left = rx;
// ボールの位置の更新処理
x[h] = x[h] + vx[h];
y[h] = y[h] + vy[h];
xMax = document.body.clientWidth - basx - 5;
yMax = document.body.clientHeight - basy - 7;
// ゲーム終了の処理
if ( y[h] >= yMax){
document.getElementById(b[h]).style.visibility = "hidden";
return(0);
}
// ボールが壁に跳ね返る処理
if (x[h] < 0) {
x[h] = 0;
vx[h] = -vxv;
}
if (x[h] > xMax) {
x[h] = xMax;
vx[h] = -vx[h];
}
if (y[h] < 0) {
y[h] = 0;
vy[h] = -vy[h];
}
if (y[h] > yMax) {
y[h] = yMax;
vy[h] = -vy[h];
}
// ボールとラケットの接触の処理
if ( x[h] > rx - basx && x < rx + rsx && y[h] > ry - basy && y[h] < ry + rsy){
y[h] = ry - basy;
vy[h] = - vy[h];
}
// ボールと各ブロックの接触の処理
for(j = 0; j < ny; j++){
for(i = 0; i < nx; i++){
if ( x[h] > bkl - basx + i * dx && x < bkl + bksx + i * dx && y[h] > bkt - basx + j * dy && y[h] < bkt + bksy + j * dy){
if ( document.getElementById(a[j * nx + i]).style.visibility != "hidden"){
document.getElementById(a[j * nx + i]).style.visibility = "hidden";
if ( y[h] - vy[h] <= bkt - basy + j * dy || y[h] - vy[h] >= bkt + bksy + j * dy){
vy[h] = - vy[h];
}
else{
vx[h] = - vx[h];
}
}
}
}
}
// 位置が更新されたボールの表示処理
document.getElementById(b[h]).style.left = x[h];
document.getElementById(b[h]).style.top = y[h];
}
</script>
</body>
</html>