ぬるーむ

Unity初心者が誰もが知っているゲームの模倣をしています。個人的な備忘録ですが、入門書を読み終えたばかりの初心者の方は「こんなへなちょこでもいいのか!」「俺の方がうまく作れる」と作成意欲がわいたりするかもしれません。

リバーシ

Unityでリバーシを作ってみた 8

完成 完成したものがこちら nullsuke.github.io ソースコードはこちら github.com まとめ AIの強さについては私自身が弱いので何とも言えない(Lv1にすら勝てない)。 速度については、下記の状態からの処理時間がそれぞれ Lv1(3手読み):24(ms) Lv2(5手読み)…

Unityでリバーシを作ってみた 7

AIの作成 2 合法手の数、確定石(4隅とそれに隣接する石)の数、C打ち・X打ちの数で評価する。 探索と同様、主に下記の本を参考にした。 リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS) | Seal Software |本…

Unityでリバーシを作ってみた 6

AIの作成 1 NegaScout法で探索。局面数に関わらず3手~7手先まで探索。 主に下記の本を参考にした。 リバーシのアルゴリズム C++&Java対応―「探索アルゴリズム」「評価関数」の設計と実装 (I・O BOOKS) | Seal Software |本 | 通販 | Amazon NegaScout法 αβ…

Unityでリバーシを作ってみた 5

Anchor、Pivotの設定 一般的にリバーシの盤は左上が原点のようである。クリックイベントで座標を管理しやすくする為、セルや石などもそれに合わせる。 一般的なリバーシ盤 セルなどのAnchor、Pivot設定 セルの画像のPivot設定 石などの画像のPivot設定 Cell…

Unityでリバーシを作ってみた 4

ViewBoardクラス Cell、Stone 、Markクラスを用いて石、合法手、相手の最後の手の描画を行う。 public class ViewBoard : MonoBehaviour { [SerializeField] Cell cellPrefabs = default; private readonly int size = 8; private readonly List<Cell> cells = new</cell>…

Unityでリバーシを作ってみた 3

LogicBoardクラス ビットボードを用いて盤の状態の更新、合法手の取得を行う。 主に下記サイトを参考にした。 オセロをビットボードで実装する - Qiita public class LogicBoard { private readonly Stack<ulong[]> log = new Stack<ulong[]>(); private ulong[] bitBoards = n</ulong[]></ulong[]>…

Unityでリバーシを作ってみた 2

Boardクラス 主に以下のことを行う。 LogicBoardを用いて盤の状態の更新、合法手の取得。 ViewBoardを用いて石、合法手の表示。 プレイヤー、ターンの管理。 public class Board : MonoBehaviour { private Player[] players; private LogicBoard logicBoard…

Unityでリバーシを作ってみた 1

基本構成 大まかなクラスの関係は以下の通り(クラス図なんて立派なものじゃないよ) 大まかなイメージ GameManagerクラス コルーチンを用いてゲーム流れを管理する。 public class GameManager : MonoBehaviour { [SerializeField] Board boardPrefab = defau…