Scratchのブロックは、JavaScriptだとこう書く

ゲームの作り方一覧 →

ブロックでできたことは、文字でも書ける

Scratchで「ずっと」「もし〜なら」「変数」を使ってゲームを作れた人は、プログラミングの考え方をもう身につけています。JavaScriptに移るときに新しく覚えるのは、同じ考え方の「書き方」だけです。

このページでは、Scratchのブロックと、それに当たるJavaScriptを並べて見せます。ひなテックGamesには同じゲームのScratch版とJavaScript版が両方あるので、読み終えたら本物のコードで見くらべてみてください。

まずは早見表

ScratchJavaScriptよぶ名前
ずっとwhile (true) { }繰り返し
10回くりかえすfor (var i = 0; i < 10; i++) { }回数指定の繰り返し
もし〈 〉ならif ( ) { }条件分岐
スコア1 ずつ変えるscore += 1;変数
リスト3 を追加するlist.push(3);配列
1 から 10 までの乱数Math.floor(Math.random() * 10) + 1乱数
x座標を 10 ずつ変えるx += 10;座標
スペースキーが押されたときaddEventListener("keydown", …)イベント
タイルをよせる(自作ブロック)function slideRow() { }関数

ならべてみると、ブロック1つが、だいたいコード1行に対応しているのが分かります。むずかしくなったわけではなく、形が変わっただけです。

1. ずっと動かしつづける

ゲームを動かしつづける仕組み

SCRATCH
🏳 が押されたとき
ずっと
キャラを動かす 画面をかきなおす
JAVASCRIPT
function loop() {
  moveCharacter();
  draw();
  requestAnimationFrame(loop);
}
loop();
Scratchの「ずっと」は、自動でちょうどよい速さでくり返してくれます。JavaScriptでは requestAnimationFrame がその役目で、画面の書きかえに合わせて1秒に約60回呼んでくれます。自分自身をもう一度呼ぶことで「ずっと」を作っているのがポイントです。

2. もし〜なら(当たり判定)

ボールが端に当たったら跳ね返す

SCRATCH
もし 端に触れた なら
向きを −1 倍にする
JAVASCRIPT
if (ball.x < 0 || ball.x > 400) {
  ball.vx = ball.vx * -1;
}
Scratchの「端に触れた」は、当たり判定を Scratch が代わりにやってくれています。JavaScriptでは自分で「どこからが端か」を数字で書く必要があります。ここが最初にとまどうところですが、逆にいえば好きなように判定を決められるということです。

3. 変数とリスト

スコアを増やす/並んだ数を覚えておく

SCRATCH
スコア0 にする
スコア10 ずつ変える

タイル2 を追加する
タイル1 番目
JAVASCRIPT
var score = 0;
score += 10;

var tiles = [];
tiles.push(2);
tiles[0];
Scratchの「リスト」は、JavaScriptでは配列といいます。大きなちがいが1つあって、Scratchのリストは1番目から数えますが、JavaScriptの配列は0番目から数えますtiles[0] が最初の要素です。ここは多くの人がつまずくので、覚えておくと得をします。

4. 自作ブロックは関数になる

2048の「タイルをよせる」処理

SCRATCH
タイルをよせる(定義)
4回くりかえす もし となりが同じ数 なら 数を2倍にする
タイルをよせる(呼び出し)
JAVASCRIPT
function slideRow(row) {
  for (var i = 0; i < 4; i++) {
    if (row[i] === row[i + 1]) {
      row[i] = row[i] * 2;
    }
  }
  return row;
}

slideRow(grid[0]);
Scratchの自作ブロックが、JavaScriptの関数です。「同じ処理に名前を付けて、何度も呼べるようにする」という役割はまったく同じ。ちがうのは、JavaScriptでは return結果を返せることです。

同じゲームで、両方の中身を見くらべよう

ここまでの話は、実物で見るのがいちばん早いです。下のゲームはScratch版とJavaScript版の両方が公開されていて、どちらも中身を読めます。同じ遊びが2通りの書き方で作られているのを、ぜひ見くらべてみてください。

ゲームScratchで中を見るJavaScriptで読む
2048Scratch版 →ソースコード全文 →
スネークゲームScratch版 →ソースコード全文 →
ブロックくずしScratch版 →ソースコード全文 →
迷路ゲームScratch版 →ソースコード全文 →
倉庫番Scratch版 →ソースコード全文 →

ソースコードのページには「このコードを書きかえて動かす」ボタンがあります。押すとその場で実行できるので、数字を1つ変えて、どう変わるかを試すのがおすすめです。Scratchでやっていたことと、まったく同じ学び方ができます。

💡 つまずいたら、いっしょにやってみよう

ブロックからコードへ移るときは、最初のひと山を誰かと越えると一気に楽になります。ひなテックでは、Scratchで作った経験を活かしてHTML・CSS・JavaScriptへ進む道すじを用意しています。