上から降ってくる青いブロックをキャッチする、シンプルな2Dアクションゲームです。
このゲームはすべてAI(LLM)との対話を通して作られました。
最初はごくシンプルな指示から始めました。
これだけで、基本的な落下プログラムと当たり判定のコードが生成されます。
その後、「スコアの追加」「落下速度の調整」「ゲームオーバー処理」「ランキングAPIへの送信機能」などをAIに順番にお願いし、継ぎ足していく形で完成させました。
以下のコードすべてをコピーし、index.html という名前で保存すれば、誰でもあなたのパソコンで(ローカル環境で)このゲームを動かすことができます!ぜひ改造して遊んでみてください。
※ランキングAPI送信部分は、実際のサーバーが動いている環境でのみ機能します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>キャッチ・ザ・ボックス!</title>
<!-- (省略) スタイル部分などの詳細設計 -->
<style>
#gameCanvas {
background-color: #fff;
border: 4px solid #333;
}
</style>
</head>
<body>
<div id="uiContainer">
<div id="scoreBoard">スコア: 0</div>
<div id="livesBoard">❤️❤️❤️</div>
</div>
<canvas id="gameCanvas" width="400" height="400"></canvas>
<script>
const canvas = document.getElementById('gameCanvas');
const ctx = canvas.getContext('2d');
// 自機の位置とサイズ
let pX = canvas.width / 2;
const pSize = 40;
// 落ちてくるアイテム配列
let items = [];
let score = 0;
let lives = 3;
// マウスの動きに合わせて自機を移動
canvas.addEventListener('mousemove', (e) => {
const rect = canvas.getBoundingClientRect();
pX = e.clientX - rect.left - pSize / 2;
});
function update() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
// 自機(赤)の描画
ctx.fillStyle = '#ff4d4d';
ctx.fillRect(pX, canvas.height - pSize - 10, pSize, pSize);
// アイテムの落下処理・当たり判定
// (ここに当たり判定とスコア加算のロジックが書かれています)
requestAnimationFrame(update);
}
</script>
</body>
</html>
コードを手に入れたら、少しだけ書き換えてみましょう。例えば以下のように変更すると、ゲームの難易度やルールを変えることができます。
pSize = 40; を 80 にする → 自機が大きくなってキャッチしやすくなる!item.speed = 2.5 + ... の数字を大きくする → アイテムの落下速度が上がり、鬼難易度になる!ctx.fillStyle = '#ff4d4d'; の色コードを #FF00FF に変える → 自機がマゼンタ色になる!まずは小さな変更から、自分だけのオリジナルゲームに育ててみてください!