From 4cd772a6d7536aba127aac368cd7826bbacf4d14 Mon Sep 17 00:00:00 2001 From: nanochess Date: Mon, 8 Mar 2021 22:31:10 -0600 Subject: [PATCH 1/3] Ported SLALOM to Javascript --- 79 Slalom/javascript/slalom.html | 9 ++ 79 Slalom/javascript/slalom.js | 260 +++++++++++++++++++++++++++++++ 2 files changed, 269 insertions(+) create mode 100644 79 Slalom/javascript/slalom.html create mode 100644 79 Slalom/javascript/slalom.js diff --git a/79 Slalom/javascript/slalom.html b/79 Slalom/javascript/slalom.html new file mode 100644 index 00000000..d91f71ad --- /dev/null +++ b/79 Slalom/javascript/slalom.html @@ -0,0 +1,9 @@ + + +SLALOM + + +

+
+
+
diff --git a/79 Slalom/javascript/slalom.js b/79 Slalom/javascript/slalom.js
new file mode 100644
index 00000000..7944e62e
--- /dev/null
+++ b/79 Slalom/javascript/slalom.js	
@@ -0,0 +1,260 @@
+// SLALOM
+//
+// 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 speed = [,14,18,26,29,18,
+             25,28,32,29,20,
+             29,29,25,21,26,
+             29,20,21,20,18,
+             26,25,33,31,22];
+
+function show_instructions()
+{
+    print("\n");
+    print("*** SLALOM: THIS IS THE 1976 WINTER OLYMPIC GIANT SLALOM.  YOU ARE\n");
+    print("            THE AMERICAN TEAM'S ONLY HOPE OF A GOLD MEDAL.\n");
+    print("\n");
+    print("     0 -- TYPE THIS IS YOU WANT TO SEE HOW LONG YOU'VE TAKEN.\n");
+    print("     1 -- TYPE THIS IF YOU WANT TO SPEED UP A LOT.\n");
+    print("     2 -- TYPE THIS IF YOU WANT TO SPEED UP A LITTLE.\n");
+    print("     3 -- TYPE THIS IF YOU WANT TO SPEED UP A TEENSY.\n");
+    print("     4 -- TYPE THIS IF YOU WANT TO KEEP GOING THE SAME SPEED.\n");
+    print("     5 -- TYPE THIS IF YOU WANT TO CHECK A TEENSY.\n");
+    print("     6 -- TYPE THIS IF YOU WANT TO CHECK A LITTLE.\n");
+    print("     7 -- TYPE THIS IF YOU WANT TO CHECK A LOT.\n");
+    print("     8 -- TYPE THIS IF YOU WANT TO CHEAT AND TRY TO SKIP A GATE.\n");
+    print("\n");
+    print(" THE PLACE TO USE THESE OPTIONS IS WHEN THE COMPUTER ASKS:\n");
+    print("\n");
+    print("OPTION?\n");
+    print("\n");
+    print("                GOOD LUCK!\n");
+    print("\n");
+}
+
+function show_speeds()
+{
+    print("GATE MAX\n");
+    print(" #  M.P.H.\n");
+    print("----------\n");
+    for (var b = 1; b <= v; b++) {
+        print(" " + b + "  " + speed[b] + "\n");
+    }
+}
+
+// Main program
+async function main()
+{
+    var gold = 0;
+    var silver = 0;
+    var bronze = 0;
+    
+    print(tab(33) + "SLALOM\n");
+    print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+    print("\n");
+    print("\n");
+    print("\n");
+    while (1) {
+        print("HOW MANY GATES DOES THIS COURSE HAVE (1 TO 25)");
+        v = parseInt(await input());
+        if (v >= 25) {
+            print("25 IS THE LIMIT\n");
+            v = 25;
+        } else if (v < 1) {
+            print("TRY AGAIN.\n");
+        } else {
+            break;
+        }
+    }
+    print("\n");
+    print("TYPE \"INS\" FOR INSTRUCTIONS\n");
+    print("TYPE \"MAX\" FOR APPROXIMATE MAXIMUM SPEEDS\n");
+    print("TYPE \"RUN\" FOR THE BEGINNING OF THE RACE\n");
+    while (1) {
+        print("COMMAND--");
+        str = await input();
+        if (str == "INS") {
+            show_instructions();
+        } else if (str == "MAX") {
+            show_speeds();
+        } else if (str == "RUN") {
+            break;
+        } else {
+            print("\"" + str + "\" IS AN ILLEGAL COMMAND--RETRY");
+        }
+    }
+    while (1) {
+        print("RATE YOURSELF AS A SKIER, (1=WORST, 3=BEST)");
+        a = parseInt(await input());
+        if (a < 1 || a > 3)
+            print("THE BOUNDS ARE 1-3\n");
+        else
+            break;
+    }
+    while (1) {
+        print("THE STARTER COUNTS DOWN...5...4...3...2...1...GO!");
+        t = 0;
+        s = Math.floor(Math.random(1) * (18 - 9) + 9);
+        print("\n");
+        print("YOU'RE OFF!\n");
+        for (o = 1; o <= v; o++) {
+            q = speed[o];
+            print("\n");
+            print("HERE COMES GATE #" + o + " :\n");
+            print(s + " M.P.H.\n");
+            s1 = s;
+            while (1) {
+                print("OPTION");
+                o1 = parseInt(await input());
+                if (o1 < 0 || o1 > 8)
+                    print("WHAT?\n");
+                else if (o1 == 0)
+                    print("YOU'VE TAKEN " + (t + Math.random()) + " SECONDS.\n");
+                else
+                    break;
+            }
+            finish = false;
+            switch (o1) {
+                case 1:
+                    s += Math.floor(Math.random() * (10 - 5) + 5);
+                    break;
+                case 2:
+                    s += Math.floor(Math.random() * (5 - 3) + 3);
+                    break;
+                case 3:
+                    s += Math.floor(Math.random() * (4 - 1) + 1);
+                    break;
+                case 4:
+                    break;
+                case 5:
+                    s -= Math.floor(Math.random() * (4 - 1) + 1);
+                    break;
+                case 6:
+                    s -= Math.floor(Math.random() * (5 - 3) + 3);
+                    break;
+                case 7:
+                    s -= Math.floor(Math.random() * (10 - 5) + 5);
+                    break;
+                case 8:
+                    print("***CHEAT\n");
+                    if (Math.random() >= 0.7) {
+                        print("YOU MADE IT!\n");
+                        t += 1.5;
+                    } else {
+                        print("AN OFFICIAL CAUGHT YOU!\n");
+                        print("YOU TOOK " + (t + Math.random()) + " SECONDS.\n");
+                        finish = true;
+                    }
+                    break;
+            }
+            if (!finish) {
+                if (o1 != 4)
+                    print(s + " M.P.H.\n");
+                if (s > q) {
+                    if (Math.random() < ((s - q) * 0.1) + 0.2) {
+                        print("YOU WENT OVER THE MAXIMUM SPEED AND ");
+                        if (Math.random() < 0.5) {
+                            print("SNAGGED A FLAG!\n");
+                        } else {
+                            print("WIPED OUT!\n");
+                        }
+                        print("YOU TOOK " + (t + Math.random()) + " SECONDS.\n");
+                        finish = true;
+                    } else {
+                        print("YOU WENT OVER THE MAXIMUM SPEED AND MADE IT!\n");
+                    }
+                } else if (s > q - 1) {
+                    print("CLOSE ONE!\n");
+                }
+            }
+            if (finish)
+                break;
+            if (s < 7) {
+                print("LET'S BE REALISTIC, OK?  LET'S GO BACK AND TRY AGAIN...\n");
+                s = s1;
+                o--;
+                continue;
+            }
+            t += q - s + 1;
+            if (s > q) {
+                t += 0.5;
+            }
+        }
+        if (!finish) {
+            print("\n");
+            print("YOU TOOK " + (t + Math.random()) + " SECONDS.\n");
+            m = t;
+            m /= v;
+            if (m < 1.5 - (a * 0.1)) {
+                print("YOU WON A GOLD MEDAL!\n");
+                gold++;
+            } else if (m < 2.9 - (a * 0.1)) {
+                print("YOU WON A SILVER MEDAL\n");
+                silver++;
+            } else if (m < 4.4 - (a * 0.1)) {
+                print("YOU WON A BRONZE MEDAL\n");
+                bronze++;
+            }
+        }
+        while (1) {
+            print("\n");
+            print("DO YOU WANT TO RACE AGAIN");
+            str = await input();
+            if (str != "YES" && str != "NO")
+                print("PLEASE TYPE 'YES' OR 'NO'\n");
+            else
+                break;
+        }
+        if (str != "YES")
+            break;
+    }
+    print("THANKS FOR THE RACE\n");
+    if (gold >= 1)
+        print("GOLD MEDALS: " + gold + "\n");
+    if (silver >= 1)
+        print("SILVER MEDALS: " + silver + "\n");
+    if (bronze >= 1)
+        print("BRONZE MEDALS: " + bronze + "\n");
+}
+
+main();

From ba70ff65346b4f38da3a2e3da82593a35c7d7d26 Mon Sep 17 00:00:00 2001
From: nanochess 
Date: Mon, 8 Mar 2021 23:12:04 -0600
Subject: [PATCH 2/3] Ported ROULETTE to Javascript

---
 75 Roulette/javascript/roulette.html |   9 +
 75 Roulette/javascript/roulette.js   | 339 +++++++++++++++++++++++++++
 2 files changed, 348 insertions(+)
 create mode 100644 75 Roulette/javascript/roulette.html
 create mode 100644 75 Roulette/javascript/roulette.js

diff --git a/75 Roulette/javascript/roulette.html b/75 Roulette/javascript/roulette.html
new file mode 100644
index 00000000..02495892
--- /dev/null
+++ b/75 Roulette/javascript/roulette.html	
@@ -0,0 +1,9 @@
+
+
+ROULETTE
+
+
+

+
+
+
diff --git a/75 Roulette/javascript/roulette.js b/75 Roulette/javascript/roulette.js
new file mode 100644
index 00000000..7c3399bd
--- /dev/null
+++ b/75 Roulette/javascript/roulette.js	
@@ -0,0 +1,339 @@
+// ROULETTE
+//
+// 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 ba = [];
+var ca = [];
+var ta = [];
+var xa = [];
+var aa = [];
+
+var numbers = [1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36];
+
+// Main program
+async function main()
+{
+    print(tab(32) + "ROULETTE\n");
+    print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+    print("\n");
+    print("\n");
+    print("\n");
+    // Roulette
+    // David Joslin
+    print("WELCOME TO THE ROULETTE TABLE\n");
+    print("\n");
+    print("DO YOU WANT INSTRUCTIONS");
+    str = await input();
+    if (str.substr(0, 1) != "N") {
+        print("\n");
+        print("THIS IS THE BETTING LAYOUT\n");
+        print("  (*=RED)\n");
+        print("\n");
+        print(" 1*    2     3*\n");
+        print(" 4     5*    6 \n");
+        print(" 7*    8     9*\n");
+        print("10    11    12*\n");
+        print("---------------\n");
+        print("13    14*   15 \n");
+        print("16*   17    18*\n");
+        print("19*   20    21*\n");
+        print("22    23*   24 \n");
+        print("---------------\n");
+        print("25*   26    27*\n");
+        print("28    29    30*\n");
+        print("31    32*   33 \n");
+        print("34*   35    36*\n");
+        print("---------------\n");
+        print("    00    0    \n");
+        print("\n");
+        print("TYPES OF BETS\n");
+        print("\n");
+        print("THE NUMBERS 1 TO 36 SIGNIFY A STRAIGHT BET\n");
+        print("ON THAT NUMBER.\n");
+        print("THESE PAY OFF 35:1\n");
+        print("\n");
+        print("THE 2:1 BETS ARE:\n");
+        print(" 37) 1-12     40) FIRST COLUMN\n");
+        print(" 38) 13-24    41) SECOND COLUMN\n");
+        print(" 39) 25-36    42) THIRD COLUMN\n");
+        print("\n");
+        print("THE EVEN MONEY BETS ARE:\n");
+        print(" 43) 1-18     46) ODD\n");
+        print(" 44) 19-36    47) RED\n");
+        print(" 45) EVEN     48) BLACK\n");
+        print("\n");
+        print(" 49)0 AND 50)00 PAY OFF 35:1\n");
+        print(" NOTE: 0 AND 00 DO NOT COUNT UNDER ANY\n");
+        print("       BETS EXCEPT THEIR OWN.\n");
+        print("\n");
+        print("WHEN I ASK FOR EACH BET, TYPE THE NUMBER\n");
+        print("AND THE AMOUNT, SEPARATED BY A COMMA.\n");
+        print("FOR EXAMPLE: TO BET $500 ON BLACK, TYPE 48,500\n");
+        print("WHEN I ASK FOR A BET.\n");
+        print("\n");
+        print("THE MINIMUM BET IS $5, THE MAXIMUM IS $500.\n");
+        print("\n");
+    }
+    // Program begins here
+    // Type of bet(number) odds
+    for (i = 1; i <= 100; i++) {
+        ba[i] = 0;
+        ca[i] = 0;
+        ta[i] = 0;
+    }
+    for (i = 1; i <= 38; i++)
+        xa[i] = 0;
+    p = 1000;
+    d = 100000;
+    while (1) {
+        do {
+            print("HOW MANY BETS");
+            y = parseInt(await input());
+        } while (y < 1) ;
+        for (i = 1; i <= 50; i++) {
+            aa[i] = 0;
+        }
+        for (c = 1; c <= y; c++) {
+            while (1) {
+                print("NUMBER " + c + " ");
+                str = await input();
+                x = parseInt(str);
+                z = parseInt(str.substr(str.indexOf(",") + 1));
+                ba[c] = z;
+                ta[c] = x;
+                if (x < 1 || x > 50)
+                    continue;
+                if (z < 1)
+                    continue;
+                if (z < 5 || z > 500)
+                    continue;
+                if (aa[x] != 0) {
+                    print("YOU MADE THAT BET ONCE ALREADY,DUM-DUM\n");
+                    continue;
+                }
+                aa[x] = 1;
+                break;
+            }
+        }
+        print("SPINNING\n");
+        print("\n");
+        print("\n");
+        do {
+            s = Math.floor(Math.random() * 100);
+        } while (s == 0 || s > 38) ;
+        xa[s]++;    // Not used
+        if (s > 37) {
+            print("00\n");
+        } else if (s == 37) {
+            print("0\n");
+        } else {
+            for (i1 = 1; i1 <= 18; i1++) {
+                if (s == numbers[i1 - 1])
+                    break;
+            }
+            if (i1 <= 18)
+                print(s + " RED\n");
+            else
+                print(s + " BLACK\n");
+        }
+        print("\n");
+        for (c = 1; c <= y; c++) {
+            won = 0;
+            switch (ta[c]) {
+                case 37:    // 1-12 (37) 2:1
+                    if (s > 12) {
+                        won = -ba[c];
+                    } else {
+                        won = ba[c] * 2;
+                    }
+                    break;
+                case 38:    // 13-24 (38) 2:1
+                    if (s > 12 && s < 25) {
+                        won = ba[c] * 2;
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+                case 39:    // 25-36 (39) 2:1
+                    if (s > 24 && s < 37) {
+                        won = ba[c] * 2;
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+                case 40:    // First column (40) 2:1
+                    if (s < 37 && s % 3 == 1) {
+                        won = ba[c] * 2;
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+                case 41:    // Second column (41) 2:1
+                    if (s < 37 && s % 3 == 2) {
+                        won = ba[c] * 2;
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+                case 42:    // Third column (42) 2:1
+                    if (s < 37 && s % 3 == 0) {
+                        won = ba[c] * 2;
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+                case 43:    // 1-18 (43) 1:1
+                    if (s < 19) {
+                        won = ba[c];
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+                case 44:    // 19-36 (44) 1:1
+                    if (s > 18 && s < 37) {
+                        won = ba[c];
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+                case 45:    // Even (45) 1:1
+                    if (s < 37 && s % 2 == 0) {
+                        won = ba[c];
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+                case 46:    // Odd (46) 1:1
+                    if (s < 37 && s % 2 != 0) {
+                        won = ba[c];
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+                case 47:    // Red (47) 1:1
+                    for (i = 1; i <= 18; i++) {
+                        if (s == numbers[i - 1])
+                            break;
+                    }
+                    if (i <= 18) {
+                        won = ba[c];
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+                case 48:    // Black (48) 1:1
+                    for (i = 1; i <= 18; i++) {
+                        if (s == numbers[i - 1])
+                            break;
+                    }
+                    if (i <= 18 || s > 36) {
+                        won = -ba[c];
+                    } else {
+                        won = ba[c];
+                    }
+                    break;
+                default:    // 1-36,0,00 (1-36,49,50) 35:1
+                    if (ta[c] < 49 && ta[c] == s
+                        || ta[c] == 49 && s == 37
+                        || ta[c] == 50 && s == 38) {
+                        won = ba[c] * 35;
+                    } else {
+                        won = -ba[c];
+                    }
+                    break;
+            }
+            d -= won;
+            p += won;
+            if (won < 0) {
+                print("YOU LOSE " + -won + " DOLLARS ON BET " + c + "\n");
+            } else {
+                print("YOU WIN " + won + " DOLLARS ON BET " + c + "\n");
+            }
+        }
+        print("\n");
+        print("TOTALS:\tME\tYOU\n");
+        print(" \t" + d + "\t" + p + "\n");
+        if (p <= 0) {
+            print("OOPS! YOU JUST SPENT YOUR LAST DOLLAR!\n");
+            break;
+        } else if (d <= 0) {
+            print("YOU BROKE THE HOUSE!\n");
+            p = 101000;
+        }
+        print("AGAIN");
+        str = await input();
+        if (str.substr(0, 1) != "Y")
+            break;
+    }
+    if (p < 1) {
+        print("THANKS FOR YOUR MONEY.\n");
+        print("I'LL USE IT TO BUY A SOLID GOLD ROULETTE WHEEL\n");
+    } else {
+        print("TO WHOM SHALL I MAKE THE CHECK");
+        str = await input();
+        print("\n");
+        for (i = 1; i <= 72; i++)
+            print("-");
+        print("\n");
+        print(tab(50) + "CHECK NO. " + Math.floor(Math.random() * 100) + "\n");
+        print("\n");
+        print(tab(40) + new Date().toDateString());
+        print("\n");
+        print("\n");
+        print("PAY TO THE ORDER OF-----" + str + "-----$ " + p + "\n");
+        print("\n");
+        print("\n");
+        print(tab(10) + "\tTHE MEMORY BANK OF NEW YORK\n");
+        print("\n");
+        print(tab(40) + "\tTHE COMPUTER\n");
+        print(tab(40) + "----------X-----\n");
+        print("\n");
+        for (i = 1; i <= 72; i++)
+            print("-");
+        print("\n");
+        print("COME BACK SOON!\n");
+    }
+    print("\n");
+}
+
+main();

From 14944781b8fd790aeaaa715073bf67d31ea2754b Mon Sep 17 00:00:00 2001
From: nanochess 
Date: Tue, 9 Mar 2021 20:56:10 -0600
Subject: [PATCH 3/3] 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();