From 14944781b8fd790aeaaa715073bf67d31ea2754b Mon Sep 17 00:00:00 2001 From: nanochess Date: Tue, 9 Mar 2021 20:56:10 -0600 Subject: [PATCH] Ported EVENWINS to Javascript --- 35 Even Wins/javascript/evenwins.html | 9 + 35 Even Wins/javascript/evenwins.js | 197 ++++++++++++++++++++ 35 Even Wins/javascript/gameofevenwins.html | 9 + 35 Even Wins/javascript/gameofevenwins.js | 152 +++++++++++++++ 4 files changed, 367 insertions(+) create mode 100644 35 Even Wins/javascript/evenwins.html create mode 100644 35 Even Wins/javascript/evenwins.js create mode 100644 35 Even Wins/javascript/gameofevenwins.html create mode 100644 35 Even Wins/javascript/gameofevenwins.js diff --git a/35 Even Wins/javascript/evenwins.html b/35 Even Wins/javascript/evenwins.html new file mode 100644 index 00000000..c39d09ba --- /dev/null +++ b/35 Even Wins/javascript/evenwins.html @@ -0,0 +1,9 @@ + + +EVEN WINS + + +

+
+
+
diff --git a/35 Even Wins/javascript/evenwins.js b/35 Even Wins/javascript/evenwins.js
new file mode 100644
index 00000000..90f273f1
--- /dev/null
+++ b/35 Even Wins/javascript/evenwins.js	
@@ -0,0 +1,197 @@
+// EVEN WINS
+//
+// 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 ma = [];
+var ya = [];
+
+// Main program
+async function main()
+{
+    print(tab(31) + "EVEN WINS\n");
+    print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+    print("\n");
+    print("\n");
+    y1 = 0;
+    m1 = 0;
+    print("     THIS IS A TWO PERSON GAME CALLED 'EVEN WINS.'\n");
+    print("TO PLAY THE GAME, THE PLAYERS NEED 27 MARBLES OR\n");
+    print("OTHER OBJECTS ON A TABLE.\n");
+    print("\n");
+    print("\n");
+    print("     THE 2 PLAYERS ALTERNATE TURNS, WITH EACH PLAYER\n");
+    print("REMOVING FROM 1 TO 4 MARBLES ON EACH MOVE.  THE GAME\n");
+    print("ENDS WHEN THERE ARE NO MARBLES LEFT, AND THE WINNER\n");
+    print("IS THE ONE WITH AN EVEN NUMBER OF MARBLES.\n");
+    print("\n");
+    print("\n");
+    print("     THE ONLY RULES ARE THAT (1) YOU MUST ALTERNATE TURNS,\n");
+    print("(2) YOU MUST TAKE BETWEEN 1 AND 4 MARBLES EACH TURN,\n");
+    print("AND (3) YOU CANNOT SKIP A TURN.\n");
+    print("\n");
+    print("\n");
+    print("\n");
+    while (1) {
+        print("     TYPE A '1' IF YOU WANT TO GO FIRST, AND TYPE\n");
+        print("A '0' IF YOU WANT ME TO GO FIRST.\n");
+        c = parseInt(await input());
+        print("\n");
+        if (c != 0) {
+            t = 27;
+            print("\n");
+            print("\n");
+            print("\n");
+            print("TOTAL= " + t + "\n");
+            print("\n");
+            print("\n");
+            print("WHAT IS YOUR FIRST MOVE");
+            m = 0;
+        } else {
+            t = 27;
+            m = 2;
+            print("\n");
+            print("TOTAL= " + t + "\n");
+            print("\n");
+            m1 += m;
+            t -= m;
+        }
+        while (1) {
+            if (m) {
+                print("I PICK UP " + m + " MARBLES.\n");
+                if (t == 0)
+                    break;
+                print("\n");
+                print("TOTAL= " + t + "\n");
+                print("\n");
+                print("     AND WHAT IS YOUR NEXT MOVE, MY TOTAL IS " + m1 + "\n");
+            }
+            while (1) {
+                y = parseInt(await input());
+                print("\n");
+                if (y < 1 || y > 4) {
+                    print("\n");
+                    print("THE NUMBER OF MARBLES YOU MUST TAKE BE A POSITIVE\n");
+                    print("INTEGER BETWEEN 1 AND 4.\n");
+                    print("\n");
+                    print("     WHAT IS YOUR NEXT MOVE?\n");
+                    print("\n");
+                } else if (y > t) {
+                    print("     YOU HAVE TRIED TO TAKE MORE MARBLES THAN THERE ARE\n");
+                    print("LEFT.  TRY AGAIN.\n");
+                } else {
+                    break;
+                }
+            }
+            
+            y1 += y;
+            t -= y;
+            if (t == 0)
+                break;
+            print("TOTAL= " + t + "\n");
+            print("\n");
+            print("YOUR TOTAL IS " + y1 + "\n");
+            if (t < 0.5)
+                break;
+            r = t % 6;
+            if (y1 % 2 != 0) {
+                if (t >= 4.2) {
+                    if (r <= 3.4) {
+                        m = r + 1;
+                        m1 += m;
+                        t -= m;
+                    } else if (r < 4.7 || r > 3.5) {
+                        m = 4;
+                        m1 += m;
+                        t -= m;
+                    } else {
+                        m = 1;
+                        m1 += m;
+                        t -= m;
+                    }
+                } else {
+                    m = t;
+                    t -= m;
+                    print("I PICK UP " + m + " MARBLES.\n");
+                    print("\n");
+                    print("TOTAL = 0\n");
+                    m1 += m;
+                    break;
+                }
+            } else {
+                if (r < 1.5 || r > 5.3) {
+                    m = 1;
+                    m1 += m;
+                    t -= m;
+                } else {
+                    m = r - 1;
+                    m1 += m;
+                    t -= m;
+                    if (t < 0.2) {
+                        print("I PICK UP " + m + " MARBLES.\n");
+                        print("\n");
+                        break;
+                    }
+                }
+            }
+        }
+        print("THAT IS ALL OF THE MARBLES.\n");
+        print("\n");
+        print(" MY TOTAL IS " + m1 + ", YOUR TOTAL IS " + y1 +"\n");
+        print("\n");
+        if (m1 % 2 != 0) {
+            print("     YOU WON.  DO YOU WANT TO PLAY\n");
+        } else {
+            print("     I WON.  DO YOU WANT TO PLAY\n");
+        }
+        print("AGAIN?  TYPE 1 FOR YES AND 0 FOR NO.\n");
+        a1 = parseInt(await input());
+        if (a1 == 0)
+            break;
+        m1 = 0;
+        y1 = 0;
+    }
+    print("\n");
+    print("OK.  SEE YOU LATER\n");
+}
+
+main();
diff --git a/35 Even Wins/javascript/gameofevenwins.html b/35 Even Wins/javascript/gameofevenwins.html
new file mode 100644
index 00000000..9359f077
--- /dev/null
+++ b/35 Even Wins/javascript/gameofevenwins.html	
@@ -0,0 +1,9 @@
+
+
+GAME OF EVEN WINS
+
+
+

+
+
+
diff --git a/35 Even Wins/javascript/gameofevenwins.js b/35 Even Wins/javascript/gameofevenwins.js
new file mode 100644
index 00000000..945bc0ba
--- /dev/null
+++ b/35 Even Wins/javascript/gameofevenwins.js	
@@ -0,0 +1,152 @@
+// GAME OF EVEN WINS
+//
+// 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 r = [[], []];
+
+// Main program
+async function main()
+{
+    print(tab(28) + "GAME OF EVEN WINS\n");
+    print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+    print("\n");
+    print("\n");
+    print("DO YOU WANT INSTRUCTIONS (YES OR NO)");
+    str = await input();
+    print("\n");
+    if (str != "NO") {
+        print("THE GAME IS PLAYED AS FOLLOWS:\n");
+        print("\n");
+        print("AT THE BEGINNING OF THE GAME, A RANDOM NUMBER OF CHIPS ARE\n");
+        print("PLACED ON THE BOARD.  THE NUMBER OF CHIPS ALWAYS STARTS\n");
+        print("AS AN ODD NUMBER.  ON EACH TURN, A PLAYER MUST TAKE ONE,\n");
+        print("TWO, THREE, OR FOUR CHIPS.  THE WINNER IS THE PLAYER WHO\n");
+        print("FINISHES WITH A TOTAL NUMBER OF CHIPS THAT IS EVEN.\n");
+        print("THE COMPUTER STARTS OUT KNOWING ONLY THE RULES OF THE\n");
+        print("GAME.  IT GRADUALLY LEARNS TO PLAY WELL.  IT SHOULD BE\n");
+        print("DIFFICULT TO BEAT THE COMPUTER AFTER TWENTY GAMES IN A ROW.\n");
+        print("TRY IT!!!!\n");
+        print("\n");
+        print("TO QUIT AT ANY TIME, TYPE A '0' AS YOUR MOVE.\n");
+        print("\n");
+    }
+    l = 0;
+    b = 0;
+    for (i = 0; i <= 5; i++) {
+        r[1][i] = 4;
+        r[0][i] = 4;
+    }
+    while (1) {
+        a = 0;
+        b = 0;
+        e = 0;
+        l = 0;
+        p = Math.floor((13 * Math.random() + 9) / 2) * 2 + 1;
+        while (1) {
+            if (p == 1) {
+                print("THERE IS 1 CHIP ON THE BOARD.\n");
+            } else {
+                print("THERE ARE " + p + " CHIPS ON THE BOARD.\n");
+            }
+            e1 = e;
+            l1 = l;
+            e = a % 2;
+            l = p % 6;
+            if (r[e][l] < p) {
+                m = r[e][l];
+                if (m <= 0) {
+                    m = 1;
+                    b = 1;
+                    break;
+                }
+                p -= m;
+                if (m == 1)
+                    print("COMPUTER TAKES 1 CHIP LEAVING " + p + "... YOUR MOVE");
+                else
+                    print("COMPUTER TAKES " + m + " CHIPS LEAVING " + p + "... YOUR MOVE");
+                b += m;
+                while (1) {
+                    m = parseInt(await input());
+                    if (m == 0)
+                        break;
+                    if (m < 1 || m > 4 || m > p) {
+                        print(m + " IS AN ILLEGAL MOVE ... YOUR MOVE");
+                    } else {
+                        break;
+                    }
+                }
+                if (m == 0)
+                    break;
+                if (m == p)
+                    break;
+                p -= m;
+                a += m;
+            } else {
+                if (p == 1) {
+                    print("COMPUTER TAKES 1 CHIP.\n");
+                } else {
+                    print("COMPUTER TAKES " + p + " CHIPS.\n");
+                }
+                r[e][l] = p;
+                b += p;
+                break;
+            }
+        }
+        if (m == 0)
+            break;
+        if (b % 2 != 0) {
+            print("GAME OVER ... YOU WIN!!!\n");
+            print("\n");
+            if (r[e][l] != 1) {
+                r[e][l]--;
+            } else if (r[e1][l1] != 1) {
+                r[e1][l1]--;
+            }
+        } else {
+            print("GAME OVER ... I WIN!!!\n");
+            print("\n");
+        }
+    }
+}
+
+main();