この記事では、写真と詩を組み合わせたオリジナルゲーム
「フォトポエムアドベンチャー」 を題材にして、
JavaScriptでゲームを作る基本の考え方を丁寧に解説します。
ただ遊ぶだけではなく、
インタラクティブ表現・状態管理・ユーザーの選択を活かす方法
まで押さえられる内容です。
実際に遊べるアートゲーム
このゲームは、表示された写真から連想される言葉を選び、
自分だけのポエムを完成させる体験型ゲームです。
- 写真を見ながら直感で言葉を選ぶ
- 選択によって詩が変化する
- ゆったりとした癒しの時間を演出
単なるクリックゲームではなく、
選択肢によって物語が変わる体験ができるのが特徴です。
なぜこのゲームは学習向きか?
このタイプのゲームは、下記のような
プログラミングの基本+表現力 を同時に学べます:
✔ 選択肢による結果分岐
✔ 状態管理(どの言葉を選んだか)
✔ UIの動的変更(写真と詩の切り替え)
✔ イベント制御(クリック・タップの応答)
こうした仕組みは、
ゲーム・インタラクティブサイト・Webアプリ全般 に応用できます。
ゲーム制作の基本構造
以下では、フォトポエムアドベンチャーで使われている
主要な仕組みを初心者向けに分かりやすく説明します。
① 状態管理(選択結果を記録する)
このゲームでは、ユーザーが選んだ言葉を
変数やオブジェクトで管理してシーンを進めます。
let choices = [];
function selectWord(word) {
choices.push(word);
updatePoem();
}
選択された言葉を配列などで貯めておき、
あとからまとめて詩として表示するのが基本です。
② イベント処理(クリックで選択)
ユーザーが言葉を選んだとき、クリックイベントで処理を受け取ります。
document.querySelectorAll('.word').forEach(el => {
el.addEventListener('click', () => {
selectWord(el.textContent);
});
});
ここでは
.wordの要素を全て取得- クリックされた単語の文字列を取得
して処理しています。
③ 表示の切り替え(写真と詩の更新)
ユーザーが言葉を選ぶたびに、
写真・詩・UIを入れ替える必要があります。
function updateDisplay() {
photoElement.src = getNextPhoto();
poemElement.textContent = makePoemText(choices);
}
動的にコンテンツを変えるのが
インタラクティブ表現の基本です。
初心者がつまずきやすいポイントと対策
❗ 写真が切り替わらない
原因の多くは
👉 画像パスの管理や条件分岐ミスです。
画像リストを配列で用意し、
次の写真を返す関数にすると安定します。
❗ 選んだ言葉が反映されない
これは選択イベントが
正しく取得できていないケースが多いです。
- class名/ID名のスペルチェック
- イベントリスナーが登録されている位置
を確認しましょう。
改造アイデア
このゲームをさらに学習用として進化させるには、
以下のような機能を追加してみることをおすすめします:
- 最終ポエムを保存して共有できるようにする
- 選択結果によってBGMを変える
- 写真ごとに効果音やアニメーション追加
- スマホ向けUIに最適化する
こうした改造をすることで、
より高度なUI制御・メディア制御のスキルも身に付きます。
ユーザー体験を高める工夫
このゲームは「選択」と「表現」を楽しむタイプなので、
画面デザインやBGMなどの要素も大事です。例えば:
- 写真にフェードイン・フェードアウトのアニメーション
- 選択肢ボタンにホバーエフェクト
- 詩をタイプライター風に演出
こうした体験デザインは、
ゲームの完成度と読者満足度を大きく引き上げます。
まとめ:直感 × 物語を生むゲーム制作
写真×言葉のゲームは、
プログラミング × 表現力 × ユーザーインタラクションが一度に学べる
とても良い題材です。
今回解説した考え方を押さえることで、
次のような発展的なコンテンツにも挑戦できます:
- フォトストーリーの制作
- 選択肢に応じたAI生成文章の組み込み
- 音楽付きインタラクティブ作品の制作
ぜひこの記事をベースに、
自分だけのインタラクティブ表現を作ってみましょう!


