アプリ紹介
← アプリ一覧へ
ブラウザ

GraphCoaster

数式でグラフを描き、球を落として通過点をすべて通すパズルゲーム

GraphCoaster のスクリーンショット

名前は「グラフ」+「コースター(ジェットコースター)」から。数式で作ったコースを球が滑り落ちることより。

どんなゲーム?

  • 数式(y=f(x) の陽関数 や F(x,y)=0 の陰関数)を入力してグラフを描き、球を落として通過点をすべて通すパズルゲーム。
  • 画面左がグラフの描画エリア、右が数式の入力欄とステージ情報。
  • 「落とす」を押すと球が数式の曲線に沿って落ち、通過点をすべて通せばステージクリア。

操作

  • 数式欄に y=f(x) や F(x,y)=0 の形で式を入力する(複数の式を追加して組み合わせ可能)。
  • 「落とす」で球をシミュレーション、「リセット」でやり直し、「次の問題」で次のステージへ。
  • ステージはプルダウンから選び直すこともできる。

技術情報

  • Svelte 5(runes)+ Vite 7 + TypeScript で構築。UI は Flowbite Svelte + Tailwind CSS 4。バックエンドの無い静的サイト。
  • 数式は mathjs で構文解析し、使える関数・記号を許可リストで検査してから評価します(eval は使いません)。
  • 陰関数 F(x,y)=0 は式から y を解けないため、マーチングスクエア法で曲線を求めて描画と当たり判定に使います。
  • 物理演算は requestAnimationFrame 上の固定タイムステップ。着地時は曲線に垂直な速度だけを捨てて接線方向を残すことで「跳ねないが勢いは保つ」動きにしています。
  • 曲線から離れるかどうかは、必要な向心力と重力の法線成分を比べて判定。
  • GitHub Actions で main への push ごとに GitHub Pages へ配信。ライセンスは MIT。