JavaScript
The for loop in JavaScript repeats a specified code block while a particular condition is true.
for [loop]
JavaScriptの「for」ループは、あるコードを繰り返し実行したいときに便利なツールです。想像してみてください、あなたがお友達に同じ話を5回繰り返して聞かせるよう頼まれたとします。毎回、同じ話を始める前に「1回目」「2回目」と数えるのは面倒ですよね。ここで「for」ループが役立ちます。
「for」ループは基本的には、「これをこの回数だけ繰り返して」という指示をコンピュータに出す方法です。この命令は3つの部分から成り立っています。スタートの設定、繰り返しを続ける条件、そして何かを1回実行した後に行う小さな変更です。
こう聞くと難しそうに感じるかもしれませんが、例を見てみましょう。
JavaScript
for (let i = 0; i < 5; i++) {
console.log("これが " + (i + 1) + " 回目の話です。");
}
このコードでは、以下のことが行われています。
- スタートの設定
- let i = 0; これは「カウンターを 0 から始めます」と言っています。このカウンターは繰り返しごとに増えていきます。
- 繰り返しを続ける条件
- i < 5; これは「カウンターが 5 未満の間は、繰り返しを続けます」と言っています。つまり、0 から始まり 4 までの 5 回です。
- 小さな変更
- i++ は「 1 回の繰り返し後にカウンターを 1 増やす」という意味です。
このコードを実行すると、コンピュータは「これが 1 回目の話です」から始めて、「これが 5 回目の話です」まで、5回のメッセージを表示します。これが「for」ループの魔法です。同じ行動を繰り返し実行する必要がある時に、この方法でコードを簡潔に保ち、作業を効率化できます。
Sample 1
画面上に 10体の敵キャラクターを生成したいとします。各敵キャラクターには、独自の位置が必要です。これを実現するためには、以下のような「for」ループを使うことができます。
JavaScript
// 10体の敵キャラクターを生成するためのコード
for (let i = 0; i < 10; i++) {
// 仮想的な関数を呼び出して、敵キャラクターを生成する。
// ここでは、各キャラクターの位置を示すために、i * 100 を使用しています。
// 実際のゲームでは、より複雑なロジックで位置や他の属性を設定します。
createEnemy(i * 100, 100); // 仮想的な関数、x位置は i * 100、y位置は100とする
}
このコードの解説は以下の通りです
- for (let i = 0; i < 10; i++)
- これは、「 0 から始まり、9 までの、合計 10回の繰り返しを行う」という意味です。
- createEnemy(i * 100, 100);
- これは架空の関数で、各敵キャラクターを生成しています。i * 100 としているのは、簡単な例として、各敵キャラクターを横に 100ピクセルずつ離して配置するためです。実際には、createEnemy関数は敵キャラクターの生成とその位置設定を行いますが、この関数の実装はこの例では省略しています。
このような使い方は、ゲーム開発では非常に一般的で、敵キャラクターやアイテムの一括生成、画面上のオブジェクトの更新など、さまざまな場面で活用されます。
Sample 2
画面の幅に応じて星をランダムに配置するシンプルなゲームの背景を生成する例を示します。このコードは、画面サイズに関わらず適切に動作するように設計されています。
HTML
<canvas id="gameCanvas"></canvas>
<script>
// ここに JavaScript のコードを書く
// または外部の JSファイル内に配置する
</script>
JavaScript
// Canvasを取得し、コンテキストを設定
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
// Canvasのサイズを画面のサイズに合わせる
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// Canvasの背景を黒に設定
ctx.fillStyle = 'black';
ctx.fillRect(0, 0, canvas.width, canvas.height);
// 画面に星を描画する関数
function drawStar(x, y) {
ctx.beginPath();
ctx.arc(x, y, 5, 0, Math.PI * 2);
ctx.fillStyle = 'white';
ctx.fill();
}
// 画面の幅に応じて星をランダムに50個配置する
for (let i = 0; i < 50; i++) {
const x = Math.random() * canvas.width;
const y = Math.random() * canvas.height;
drawStar(x, y);
}
// リサイズ時にキャンバスのサイズを更新し、星を再描画
window.addEventListener('resize', function() {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// 背景を再設定
ctx.fillStyle = 'black';
ctx.fillRect(0, 0, canvas.width, canvas.height);
// 星を再描画
for (let i = 0; i < 50; i++) {
const x = Math.random() * canvas.width;
const y = Math.random() * canvas.height;
drawStar(x, y);
}
});
このサンプルコードでは、forループを使用して、画面上に 50個の星をランダムな位置に描画しています。さらに、画面のサイズが変わったときには、resizeイベントリスナーがキャンバスのサイズを更新し、星を再描画することで、レスポンシブデザインに対応しています。