From fbfb41f5fa6d5932ac294ccd29d490543c537fd9 Mon Sep 17 00:00:00 2001 From: nanochess Date: Mon, 1 Mar 2021 22:16:39 -0600 Subject: [PATCH] Ported ONE CHECK to Javascript --- 67 One Check/javascript/onecheck.html | 9 ++ 67 One Check/javascript/onecheck.js | 151 ++++++++++++++++++++++++++ 2 files changed, 160 insertions(+) create mode 100644 67 One Check/javascript/onecheck.html create mode 100644 67 One Check/javascript/onecheck.js diff --git a/67 One Check/javascript/onecheck.html b/67 One Check/javascript/onecheck.html new file mode 100644 index 00000000..ffdb77e5 --- /dev/null +++ b/67 One Check/javascript/onecheck.html @@ -0,0 +1,9 @@ + + +ONE CHECK + + +

+
+
+
diff --git a/67 One Check/javascript/onecheck.js b/67 One Check/javascript/onecheck.js
new file mode 100644
index 00000000..a9633b46
--- /dev/null
+++ b/67 One Check/javascript/onecheck.js	
@@ -0,0 +1,151 @@
+// ONE CHECK
+//
+// Converted from BASIC to Javascript by Oscar Toledo G. (nanochess)
+//
+
+function print(str)
+{
+    document.getElementById("output").appendChild(document.createTextNode(str));
+}
+
+function input()
+{
+    var input_element;
+    var input_str;
+    
+    return new Promise(function (resolve) {
+                       input_element = document.createElement("INPUT");
+                       
+                       print("? ");
+                       input_element.setAttribute("type", "text");
+                       input_element.setAttribute("length", "50");
+                       document.getElementById("output").appendChild(input_element);
+                       input_element.focus();
+                       input_str = undefined;
+                       input_element.addEventListener("keydown", function (event) {
+                                                      if (event.keyCode == 13) {
+                                                      input_str = input_element.value;
+                                                      document.getElementById("output").removeChild(input_element);
+                                                      print(input_str);
+                                                      print("\n");
+                                                      resolve(input_str);
+                                                      }
+                                                      });
+                       });
+}
+
+function tab(space)
+{
+    var str = "";
+    while (space-- > 0)
+        str += " ";
+    return str;
+}
+
+var a = [];
+
+// Main program
+async function main()
+{
+    print(tab(30) + "ONE CHECK\n");
+    print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+    print("\n");
+    print("\n");
+    print("\n");
+    for (i = 0; i <= 64; i++)
+        a[i] = 0;
+    print("SOLITAIRE CHECKER PUZZLE BY DAVID AHL\n");
+    print("\n");
+    print("48 CHECKERS ARE PLACED ON THE 2 OUTSIDE SPACES OF A\n");
+    print("STANDARD 64-SQUARE CHECKERBOARD.  THE OBJECT IS TO\n");
+    print("REMOVE AS MANY CHECKERS AS POSSIBLE BY DIAGONAL JUMPS\n");
+    print("(AS IN STANDARD CHECKERS).  USE THE NUMBERED BOARD TO\n");
+    print("INDICATE THE SQUARE YOU WISH TO JUMP FROM AND TO.  ON\n");
+    print("THE BOARD PRINTED OUT ON EACH TURN '1' INDICATES A\n");
+    print("CHECKER AND '0' AN EMPTY SQUARE.  WHEN YOU HAVE NO\n");
+    print("POSSIBLE JUMPS REMAINING, INPUT A '0' IN RESPONSE TO\n");
+    print("QUESTION 'JUMP FROM ?'\n");
+    print("\n");
+    print("HERE IS THE NUMERICAL BOARD:\n");
+    print("\n");
+    while (1) {
+        for (j = 1; j <= 57; j += 8) {
+            str = "";
+            for (i = 0; i <= 7; i++) {
+                while (str.length < 4 * i)
+                    str += " ";
+                str += " " + (j + i);
+            }
+            print(str + "\n");
+        }
+        print("\n");
+        print("AND HERE IS THE OPENING POSITION OF THE CHECKERS.\n");
+        print("\n");
+        for (j = 1; j <= 64; j++)
+            a[j] = 1;
+        for (j = 19; j <= 43; j += 8)
+            for (i = j; i <= j + 3; i++)
+                a[i] = 0;
+        m = 0;
+        while (1) {
+            // Print board
+            for (j = 1; j <= 57; j += 8) {
+                str = "";
+                for (i = j; i <= j + 7; i++) {
+                    str += " " + a[i] + " ";
+                }
+                print(str + "\n");
+            }
+            print("\n");
+            while (1) {
+                print("JUMP FROM");
+                f = parseInt(await input());
+                if (f == 0)
+                    break;
+                print("TO");
+                t = parseInt(await input());
+                print("\n");
+                // Check legality of move
+                f1 = Math.floor((f - 1) / 8);
+                f2 = f - 8 * f1;
+                t1 = Math.floor((t - 1) / 8);
+                t2 = t - 8 * t1;
+                if (f1 > 7 || t1 > 7 || f2 > 8 || t2 > 8 || Math.abs(f1 - t1) != 2 || Math.abs(f2 - t2) != 2 || a[(t + f) / 2] == 0 || a[f] == 0 || a[t] == 1) {
+                    print("ILLEGAL MOVE.  TRY AGAIN...\n");
+                    continue;
+                }
+                break;
+            }
+            if (f == 0)
+                break;
+            // Update board
+            a[t] = 1;
+            a[f] = 0;
+            a[(t + f) / 2] = 0;
+            m++;
+        }
+        // End game summary
+        s = 0;
+        for (i = 1; i <= 64; i++)
+            s += a[i];
+        print("\n");
+        print("YOU MADE " + m + " JUMPS AND HAD " + s + " PIECES\n");
+        print("REMAINING ON THE BOARD.\n");
+        print("\n");
+        while (1) {
+            print("TRY AGAIN");
+            str = await input();
+            if (str == "YES")
+                break;
+            if (str == "NO")
+                break;
+            print("PLEASE ANSWER 'YES' OR 'NO'.\n");
+        }
+        if (str == "NO")
+            break;
+    }
+    print("\n");
+    print("O.K.  HOPE YOU HAD FUN!!\n");
+}
+
+main();