Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

状態遷移図 #27

Merged
merged 9 commits into from
Aug 29, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
67 changes: 67 additions & 0 deletions docs/01.Frontend/01.ScreenStateTransition/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# 01.Screen State Transition

# ゲームプレイ画面

```mermaid
graph TD;
subgraph 手番のルーチン
TEBAN["手番の処理"]
AITEBAN["相手番(ゲーム続行)"]
MY_WIN["勝利"]
MY_LOSE["敗北"]
MY_DRAW["引き分け"]
TEBAN --> stone["石を打つ"]
stone --> stone_cnt{"石の個数の確認"}
stone_cnt --> |Ok| obs{"観測を行う"}
obs --> |Yes| check{"勝敗判定を行う"}
check --> |Unresolved| obs_cnt{"観測回数の確認"}
obs_cnt --> |Ok| AITEBAN
obs --> |No| AITEBAN
obs_cnt --> |両者ともに観測回数消費済み| MY_DRAW
stone_cnt --> |盤面が埋まった| MY_DRAW
check --> |自色が5連| MY_WIN
check --> |自色が4連以下 ∧ 相手色が5連| MY_LOSE
end
subgraph ゲームの流れ
A("訪れる") --> B["ゲーム開始ボタンを押す"]
B --> C["先手と後手を決める"]
C --> SENTE
SENTE["先手番"]
GOTE["後手番"]
SENTE --> sente_process{"先手番の処理"}
sente_process --> |ゲーム続行| GOTE
GOTE --> gote_process{"後手番の処理"}
gote_process --> |ゲーム続行| SENTE
DRAW["引き分け"]
FIN["結果の表示"]
END("ゲーム終了")
sente_process & gote_process --> |観測回数消費済み or 盤面が埋まった| DRAW
gote_process & sente_process --> |勝敗確定| Win_or_Lose["勝敗決定"]
DRAW & Win_or_Lose --> FIN
FIN --> END
end
```

## ゲーム仕様についての補足
### 観測時の勝敗条件について
このゲームでは1回の観測で、両者同時に勝利条件を満たすことがある。
その場合、この仕様では観測者が有利になるように、観測者勝利としている。
本家量子五目並べ(QuizKnock)でも、両者が同時に勝利条件を満たした時は観測者勝利となっている。
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これ、めちゃめちゃいい補足だと思います!!!!!
裏どりはめんどくさいけど、とっても大事!!!!

### 観測回数を消費した時
観測回数を消費したときは引き分け扱いにしている。
引き分けにならないようにする実装としては、両者が観測回数を全て消費した時に両者に観測を配布することが考えられる。
### 盤面が埋まった時
現状盤面サイズは決まっていないが、最終的に石を打ち尽くして盤面が埋まる可能性がある。
このとき、この仕様では引き分け扱いとしている。
本家五目並べ(連珠)でも引き分けとなっている。
将来的には観測が余っている場合の実装として
・1度だけ観測を行い、決着がつかなかった場合は引き分けにする
・残っている観測を次手番の人の分から消費する
・残りの観測回数に関係なく次手番の人から交互に観測を行う
・(元々先手が不利になると思うので)観測者を先手と考えて決着がつくまで観測を行う
などが考えられる。可能性は低いが、複数回観測を行っても決着がつかなかった時の実装まで考える必要がある。
### ルールについて
・先手後手の有利不利
本家五目並べでは、先手(黒)に禁じ手が存在する。量子五目並べでも最初に使用できる石を制限するなどの実装が考えられる。
### その他
ユーザー毎に勝敗数などを記録するのであれば、引き分けの有無で記録の基準が変わるので、勝敗に関して実装を変える際は慎重な検討が必要になる。
1 change: 0 additions & 1 deletion docs/01.Frontend/01.UserExperience/README.md

This file was deleted.