summaryrefslogtreecommitdiff
path: root/src/games/reversi/core.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/games/reversi/core.ts')
-rw-r--r--src/games/reversi/core.ts19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/games/reversi/core.ts b/src/games/reversi/core.ts
index 34eb03becb..9199efa092 100644
--- a/src/games/reversi/core.ts
+++ b/src/games/reversi/core.ts
@@ -1,4 +1,4 @@
-import { count } from "../../prelude/array";
+import { count, countIf } from "../../prelude/array";
// MISSKEY REVERSI ENGINE
@@ -90,8 +90,8 @@ export default class Reversi {
//#endregion
// ゲームが始まった時点で片方の色の石しかないか、始まった時点で勝敗が決定するようなマップの場合がある
- if (this.canPutSomewhere(BLACK).length == 0) {
- if (this.canPutSomewhere(WHITE).length == 0) {
+ if (!this.canPutSomewhere(BLACK)) {
+ if (!this.canPutSomewhere(WHITE)) {
this.turn = null;
} else {
this.turn = WHITE;
@@ -172,9 +172,9 @@ export default class Reversi {
private calcTurn() {
// ターン計算
- if (this.canPutSomewhere(!this.prevColor).length > 0) {
+ if (this.canPutSomewhere(!this.prevColor)) {
this.turn = !this.prevColor;
- } else if (this.canPutSomewhere(this.prevColor).length > 0) {
+ } else if (this.canPutSomewhere(this.prevColor)) {
this.turn = this.prevColor;
} else {
this.turn = null;
@@ -206,11 +206,18 @@ export default class Reversi {
/**
* 打つことができる場所を取得します
*/
- public canPutSomewhere(color: Color): number[] {
+ public puttablePlaces(color: Color): number[] {
return Array.from(this.board.keys()).filter(i => this.canPut(color, i));
}
/**
+ * 打つことができる場所があるかどうかを取得します
+ */
+ public canPutSomewhere(color: Color): boolean {
+ return this.puttablePlaces(color).length > 0;
+ }
+
+ /**
* 指定のマスに石を打つことができるかどうかを取得します
* @param color 自分の色
* @param pos 位置