OSDN Git Service

[add] : 判定を別のファイルに移動
authorhayao <hayao@fascode.net>
Tue, 3 Aug 2021 23:58:24 +0000 (08:58 +0900)
committerhayao <hayao@fascode.net>
Tue, 3 Aug 2021 23:58:24 +0000 (08:58 +0900)
sanmoku/index.html
sanmoku/script/judgement.js [new file with mode: 0644]
sanmoku/script/main.js

index cdc1273..3804e9a 100644 (file)
@@ -44,6 +44,7 @@
     <script src="script/define.js"></script>\r
     <script src="script/init.js"></script>\r
     <script src="script/main.js"></script>\r
+    <script src="script/judgement.js"></script>\r
 \r
 </body>\r
 </html>\r
diff --git a/sanmoku/script/judgement.js b/sanmoku/script/judgement.js
new file mode 100644 (file)
index 0000000..8b5fad5
--- /dev/null
@@ -0,0 +1,96 @@
+// 配列の重複した値が指定回数以上ならTrueを返す
+// 使い方: CountArrayValue(配列, 回数)
+// 参考: https://teratail.com/questions/98451
+//      https://teratail.com/questions/352619
+const CountArrayValue = (array, number) => {
+    let count = {};
+    for (let i of array) {
+        count[i] = (count[i] || 0) + 1;
+        if (count[i] == number) return true;
+    }
+    return false;
+}
+
+// 勝敗の判定 ジャッジメントですの!
+const Judgement = () => {
+    // プレーヤーごとに判定
+    // プレーヤーIDでループし、変数pに今チェック対象のプレーヤーIDが代入される
+    for (p=0; p < PlayerNumer; p++){
+        // チェックしたプレーヤーのIDが書き込まれたボックスの一覧を取得
+        const elements = Array.from(MainTable.querySelectorAll("[data-player]"));
+
+        // 今チェック中のプレーヤーのチェックしたボックスの座標
+        CheckedByCurrentPlayerX = []; // X軸方向のチェックしたボックスのリスト
+        CheckedByCurrentPlayerY = []; // Y軸方向のチェックしたボックスのリスト
+        CheckedbyCurrentPlayerD = []; // 斜め方向のチェックしたボックスのリスト
+
+        // 上で取得したボックスの一覧1つ1つで確認処理を行う
+        elements.forEach((e) => {
+
+            if (e.dataset.player == p){ // もしいま確認しているボックスが今確認しているプレーヤーIDと一致したら
+
+                // チェックされているボックスの座標を座標リストに追加する
+                CheckedByCurrentPlayerX.push(e.dataset.x);
+                CheckedByCurrentPlayerY.push(e.dataset.y);
+            }
+        });
+
+        // X軸方向の確認
+        if (CountArrayValue(CheckedByCurrentPlayerX, TableXNumber)){
+            Msg.innerText = p + "がX軸方向で勝ちました";
+            GameEnded = true;
+        }
+
+        // Y軸方向の確認
+        if (CountArrayValue(CheckedByCurrentPlayerY, TableYNumber)){
+            Msg.innerText = p + "がY軸方向で勝ちました"
+            GameEnded = true;
+        }
+
+
+        // 斜め方向の判定
+        if (TableXNumber == TableYNumber){ // 正方形の場合のみ (X軸とY軸の大きさが一致)
+
+            // 左上からの斜め方向の判定
+            {
+                for (i=0; i<TableXNumber; i++){
+                    let e = document.getElementById(`${i},${i}`)
+                    if (e.dataset.clicked == "true" && e.dataset.player == p){
+                        CheckedbyCurrentPlayerD.push(`${i},${i}`);
+                    }
+                }
+
+                if(CheckedbyCurrentPlayerD.length == TableXNumber){
+                    Msg.innerText = PlayerMarks[p] + "が左上からの斜め方向で勝ちました"
+                    GameEnded = true;
+                }
+            }
+
+            // 斜め方向の判定を初期化
+            CheckedbyCurrentPlayerD.splice(0)
+
+            // 右上からの斜め方向の判定
+            {
+                for(x=TableXNumber-1; x > -1; x--){
+                    let y = TableXNumber - x - 1;
+                    let e = document.getElementById(`${x},${y}`);
+                    if (e.dataset.clicked == "true" && e.dataset.player == p){
+                        CheckedbyCurrentPlayerD.push(`${x},${y}`);
+                    }
+                }
+                if(CheckedbyCurrentPlayerD.length == TableXNumber){
+                    Msg.innerText = PlayerMarks[p] + "が右上からの斜め方向で勝ちました"
+                    GameEnded = true;
+                }
+            }
+        } 
+
+        
+
+        // ログ表示
+        //console.log(p + "のチェック済みのX座標")
+        //console.log(CheckedByCurrentPlayerX)
+        //console.log(p + "のチェック済みのY座標")
+        //console.log(CheckedByCurrentPlayerY)
+    }
+}
index 26fd439..7b0a52c 100644 (file)
@@ -1,3 +1,8 @@
+// 最初にのみログを表示する
+window.addEventListener("load", ()=>{
+    console.log(CurrentPlayer + "でゲームをスタートします")
+})
+
 // ボックスがクリックされたときの処理
 // init.jsでボタンがクリックされた場合にClickedBox関数を実行するように指示している
 const ClickedBox = (e) => {
@@ -39,104 +44,4 @@ const ChangePlayer = () => {
     console.log("現在のプレイヤーは" + CurrentPlayer + "です") //ログを表示する
 }
 
-// 最初にのみログを表示する
-window.addEventListener("load", ()=>{
-    console.log(CurrentPlayer + "でゲームをスタートします")
-})
 
-// 配列の重複した値が指定回数以上ならTrueを返す
-// 使い方: CountArrayValue(配列, 回数)
-// 参考: https://teratail.com/questions/98451
-//      https://teratail.com/questions/352619
-const CountArrayValue = (array, number) => {
-    let count = {};
-    for (let i of array) {
-        count[i] = (count[i] || 0) + 1;
-        if (count[i] == number) return true;
-    }
-    return false;
-}
-
-// 勝敗の判定 ジャッジメントですの!
-const Judgement = () => {
-    // プレーヤーごとに判定
-    // プレーヤーIDでループし、変数pに今チェック対象のプレーヤーIDが代入される
-    for (p=0; p < PlayerNumer; p++){
-        // チェックしたプレーヤーのIDが書き込まれたボックスの一覧を取得
-        const elements = Array.from(MainTable.querySelectorAll("[data-player]"));
-
-        // 今チェック中のプレーヤーのチェックしたボックスの座標
-        CheckedByCurrentPlayerX = []; // X軸方向のチェックしたボックスのリスト
-        CheckedByCurrentPlayerY = []; // Y軸方向のチェックしたボックスのリスト
-        CheckedbyCurrentPlayerD = []; // 斜め方向のチェックしたボックスのリスト
-
-        // 上で取得したボックスの一覧1つ1つで確認処理を行う
-        elements.forEach((e) => {
-
-            if (e.dataset.player == p){ // もしいま確認しているボックスが今確認しているプレーヤーIDと一致したら
-
-                // チェックされているボックスの座標を座標リストに追加する
-                CheckedByCurrentPlayerX.push(e.dataset.x);
-                CheckedByCurrentPlayerY.push(e.dataset.y);
-            }
-        });
-
-        // X軸方向の確認
-        if (CountArrayValue(CheckedByCurrentPlayerX, TableXNumber)){
-            Msg.innerText = p + "がX軸方向で勝ちました";
-            GameEnded = true;
-        }
-
-        // Y軸方向の確認
-        if (CountArrayValue(CheckedByCurrentPlayerY, TableYNumber)){
-            Msg.innerText = p + "がY軸方向で勝ちました"
-            GameEnded = true;
-        }
-
-
-        // 斜め方向の判定
-        if (TableXNumber == TableYNumber){ // 正方形の場合のみ (X軸とY軸の大きさが一致)
-
-            // 左上からの斜め方向の判定
-            {
-                for (i=0; i<TableXNumber; i++){
-                    let e = document.getElementById(`${i},${i}`)
-                    if (e.dataset.clicked == "true" && e.dataset.player == p){
-                        CheckedbyCurrentPlayerD.push(`${i},${i}`);
-                    }
-                }
-
-                if(CheckedbyCurrentPlayerD.length == TableXNumber){
-                    Msg.innerText = PlayerMarks[p] + "が左上からの斜め方向で勝ちました"
-                    GameEnded = true;
-                }
-            }
-
-            // 斜め方向の判定を初期化
-            CheckedbyCurrentPlayerD.splice(0)
-
-            // 右上からの斜め方向の判定
-            {
-                for(x=TableXNumber-1; x > -1; x--){
-                    let y = TableXNumber - x - 1;
-                    let e = document.getElementById(`${x},${y}`);
-                    if (e.dataset.clicked == "true" && e.dataset.player == p){
-                        CheckedbyCurrentPlayerD.push(`${x},${y}`);
-                    }
-                }
-                if(CheckedbyCurrentPlayerD.length == TableXNumber){
-                    Msg.innerText = PlayerMarks[p] + "が右上からの斜め方向で勝ちました"
-                    GameEnded = true;
-                }
-            }
-        } 
-
-        
-
-        // ログ表示
-        //console.log(p + "のチェック済みのX座標")
-        //console.log(CheckedByCurrentPlayerX)
-        //console.log(p + "のチェック済みのY座標")
-        //console.log(CheckedByCurrentPlayerY)
-    }
-}