PARTS

パーツカタログ

ハレアメ・コードラボ | ハレアメ・シューター 改造用
すきな パーツを えらんで、コードの 中の「★で囲まれた パーツ置き場」に はりつけよう。 はりつけたら かならず じっこう ボタン。1つずつ ためすのが コツ。

Four slotsまず、4つの 置き場を おぼえる

コードの中では、それぞれの置き場が ★の線で囲まれた 4行 になっている。 その中の「↓↓↓ この下に コピー&ペースト ↓↓↓」の すぐ下に はりつける。 「ここまで」と 書いてある 線より 下には はみ出さないこと。

Parts with codeパーツ(コードつき)

パーツ 1 スコアを 大きく する ★☆☆ 置き場 C

たおした数が 画面に 大きく 出る。まずは これで 貼りつけの れんしゅう。

▼ 置き場C の「↓↓↓ この下に コピー&ペースト ↓↓↓」の 下に はりつける

// スコアを 大きく 出す
pen.fillStyle = "#FF1D8E";
pen.font = "bold 64px sans-serif";
pen.fillText(score, 20, 110);
パーツ 2 音を つける ★★☆ 置き場 A + D

てきを たおした しゅんかんに「ピッ」。置き場Aで 音の どうぐを 用意、置き場Dで ならす。880 が 高さ、g.gain.value が 大きさ。

▼ 置き場A の「↓↓↓ この下に コピー&ペースト ↓↓↓」の 下に はりつける

// 音を つくる どうぐ 一式
let oto = new AudioContext();
function beep(hz) {
  oto.resume();
  let o = oto.createOscillator();
  let g = oto.createGain();
  o.frequency.value = hz;
  g.gain.value = 0.08;
  o.connect(g);
  g.connect(oto.destination);
  o.start();
  o.stop(oto.currentTime + 0.08);
}

▼ 置き場D の「↓↓↓ この下に コピー&ペースト ↓↓↓」の 下に はりつける

// たおした 音
beep(880);
パーツ 3 のがしは 3回まで ★★☆ 置き場 B + C

いまは 何体 のがしても つづく。3回で ゲームオーバーに して、のこりを 画面に 出す。

▼ 置き場B の「↓↓↓ この下に コピー&ペースト ↓↓↓」の 下に はりつける

// のがしが 3回に なったら おわり
if (miss >= 3) {
  gameover = true;
}

▼ 置き場C の「↓↓↓ この下に コピー&ペースト ↓↓↓」の 下に はりつける

// のこりの 回数を 出す
pen.fillStyle = "#FFFFFF";
pen.font = "20px sans-serif";
pen.fillText("のこり " + (3 - miss), 210, 26);
パーツ 4 だんだん てきが はやく なる ★★☆ 置き場 B

10びょう ごとに てきの はやさが 1 ふえる。60 × 10 = 600 コマに 1回だけ 中に 入る しかけ。

▼ 置き場B の「↓↓↓ この下に コピー&ペースト ↓↓↓」の 下に はりつける

// 10びょう ごとに はやく
if (time % 600 === 0) {
  enemySpeed = enemySpeed + 1;
}
パーツ 5 じぶんの なまえを 出す ★☆☆ 置き場 A + C

画面の 下に つくった人の 名まえが 出る。

▼ 置き場A の「↓↓↓ この下に コピー&ペースト ↓↓↓」の 下に はりつける

// じぶんの なまえ
let myName = "はれあめ たろう";

▼ 置き場C の「↓↓↓ この下に コピー&ペースト ↓↓↓」の 下に はりつける

// なまえを 画面に 出す
pen.fillStyle = "#8A8A93";
pen.font = "14px sans-serif";
pen.fillText(myName, 20, 350);
パーツ 6 ざんぞう(しっぽ)を つける ★★☆ 置き場 設定

弾と てきに しっぽが 生える。0.25 は「25%だけ ぬる」。ぜんぶ ぬりつぶさないから 前の コマが のこる。

▼ コードの 上の ほうに ある let bgColor = ... の 行を、これに 書きかえる

let bgColor = "rgba(18, 18, 26, 0.25)";

Extra missionsおかわりミッション(コードは 自分で 考える)

ぜんぶ できてしまった人へ。ここから先は コピーボタンが ない。 ヒントは 3だんかい。上から じゅんに 開けて、できるだけ 自分の 力で。
どうしても だめなら「ギブアップ」。こたえは 出るけど コピーは できない。 見ながら 自分で うちこもう。それも りっぱな 練習。できたら 先生に 見せて。

ミッション 7 ときどき 大きい てきを 出す コードは なし

5回に 1回くらい、2発 あてないと たおれない 大きい てきを 出す。

ヒント1 かんがえかた
かたさは 目に 見えない。てき 1体 1体に「あと 何発で たおれるか」の メモ(hp)を もたせる。ISSUE #1 の かたい ブロックと 同じ 考えかた。
ヒント2 さわる ばしょ
さわる 場所は 2つ。appear() の enemies.push=うまれる ときに hp を きめる。moveEnemies() の たおした ところ=hp を 1 へらして、0 に なったら たおす。
ヒント3 ほぼ せっけいず
① enemies.push に hp を たす。Math.random() が 0.2 より 小さければ 2。② あたったら hp を 1 ひく。まだ 0 より 大きければ rest に のこして continue。0 に なったら score を たす。大きい てきは draw() で はんけいを 変えると もっと それらしい。

ANSWER / うちこみ せんよう

この こたえは えらべない し、コピーも できない。1行ずつ 見て、自分で うちこむ。

① appear() の enemies.push(...) の 1行を、これに 書きかえる

let hp = 1;
if (Math.random() < 0.2) {
  hp = 2;                   // ときどき 大きい てき
}
enemies.push({ x: Math.random() * 440 + 20, y: -10, hp: hp });

② moveEnemies() の たおした ところ(score の 行の 上)に、これを 書きたす

enemies[i].hp = enemies[i].hp - 1;
if (enemies[i].hp > 0) {
  rest.push(enemies[i]);  // まだ たおれない
  continue;
}
ミッション 8 30びょう タイムアタック コードは なし

30びょう いないに 何体 たおせるか。時間が きたら おわり。のこり時間も 出せると かっこいい。

ヒント1 かんがえかた
time は 1びょうで 60 ふえる 数とり器。30びょうは 60 × 30。こえたら gameover を true に。
ヒント2 さわる ばしょ
書く 場所は 置き場B。if (time > その数) { gameover = true; } の かたち。
ヒント3 ほぼ せっけいず
おまけ:のこり びょうは (1800 - time) ÷ 60 を Math.ceil( ) で 切り上げ。0 より 小さく なったら 0。置き場Cで fillText。

ANSWER / うちこみ せんよう

この こたえは えらべない し、コピーも できない。1行ずつ 見て、自分で うちこむ。

① 置き場Bに はりつける

if (time > 1800) {
  gameover = true;
}

② おまけ(のこり時間)。置き場Cに はりつける

let nokori = Math.ceil((1800 - time) / 60);
if (nokori < 0) {
  nokori = 0;
}
pen.fillStyle = "#FFFFFF";
pen.font = "20px sans-serif";
pen.fillText("のこり " + nokori, 200, 50);
ミッション 9 ジグザグに うごく てき コードは なし

まっすぐ おりてくるだけの てきを、よこにも うごいて かべで はねかえる ジグザグに する。ISSUE #1 の はねかえりの 復習。

ヒント1 かんがえかた
ジグザグ = 下に おりながら、よこにも うごいて、かべで よこの むきを ぎゃくに する。てきにも ballDX のような「よこの むき(dx)」を もたせれば いい。
ヒント2 さわる ばしょ
さわる 場所は 2つ。appear() の enemies.push=うまれる ときに dx を もたせる。moveEnemies() の y を うごかす 行の 下=x にも dx を たして、かべで ぎゃくに。
ヒント3 ほぼ せっけいず
① enemies.push に dx: 3 を たす。② y の 行の 下に、x = x + dx。x が 12 より 小さい か 468 より 大きければ dx = -dx(はねかえり!)。

ANSWER / うちこみ せんよう

この こたえは えらべない し、コピーも できない。1行ずつ 見て、自分で うちこむ。

① appear() の enemies.push(...) を、これに 書きかえる

enemies.push({ x: Math.random() * 440 + 20, y: -10, dx: 3 });

② moveEnemies() の enemies[i].y = ... の 行の 下に、これを 書きたす

enemies[i].x = enemies[i].x + enemies[i].dx;   // よこにも うごく
if (enemies[i].x < 12 || enemies[i].x > 468) {
  enemies[i].dx = -enemies[i].dx;              // かべで はねかえる
}