Skip to content

dsuz/algorithm-data-structure-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

このプロジェクトではアルゴリズム・データ構造を活用したゲームプログラミングの例を、Unity を使ったサンプルで説明している。

プロジェクトのセットアップ

  1. リポジトリをクローンするか、zip をダウンロードして展開する
  2. プロジェクトを Unity で開く
  3. Asset Store から Space Robot Kyle をプロジェクトにインポートする
  4. Asset Store から DOTween をプロジェクトにインポートし、指示に従って Setup する

サンプル

サンプルは /Assets/Examples 以下にあります。

各サンプルの説明

Stack

ウインドウシステムをスタックを使って作っている。新しいウインドウを開く時、それをスタックに Push する。ウインドウを消す時にはスタックから Pop してウインドウを破棄している。この時、スタックの一番上にいるウインドウが次にアクティブウインドウになる。

Queue

格闘ゲームでよくある「コマンド入力で技を出す」機能をキューを使って作っている。方向キーの入力があると、それを入力キューに保存しておき、攻撃ボタンを押した時にコマンドが入力できているか判定する。技を出すコマンドが入力できていると判定されたら、技が出る。

このようなやり方を「リングバッファ (circular buffer) を入力バッファとして使い、バッファの入力がコマンド定義と一致していたらコマンドを実行する」ということがある。

DFS/BFS(Depth-first search = 深さ優先探索, Breadth-first search = 幅優先探索)

深さ優先探索/幅優先探索はグラフ(※)の探索に使われる。これを利用して拠点をクリックして移動可能ならばそこに移動する機能を作っている。グラフのデータは Resources フォルダにテキストとして定義している。

深さ優先探索の場合は、探索して(最初に)得られた経路は必ずしも最短経路ではない。

幅優先探索に成功してから経路を復元する方法は「意外と解説がない!動的計画法で得た最適解を「復元」する一般的な方法」の「動的計画法の最適解を復元する 2 つの方法」> 「方法 2: 汎用的に使える良い方法」のやり方を参考にした。

(※)拠点(ノード)を辺で連結したもの

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published