diff --git a/41 Guess/javascript/guess.html b/41 Guess/javascript/guess.html new file mode 100644 index 00000000..22a1bee0 --- /dev/null +++ b/41 Guess/javascript/guess.html @@ -0,0 +1,9 @@ + + +GUESS + + +

+
+
+
diff --git a/41 Guess/javascript/guess.js b/41 Guess/javascript/guess.js
new file mode 100644
index 00000000..e313169c
--- /dev/null
+++ b/41 Guess/javascript/guess.js	
@@ -0,0 +1,104 @@
+// GUESS
+//
+// 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;
+}
+
+function make_space()
+{
+    for (h = 1; h <= 5; h++)
+        print("\n");
+}
+
+// Main control section
+async function main()
+{
+    while (1) {
+        print(tab(33) + "GUESS\n");
+        print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+        print("\n");
+        print("\n");
+        print("\n");
+        print("THIS IS A NUMBER GUESSING GAME. I'LL THINK\n");
+        print("OF A NUMBER BETWEEN 1 AND ANY LIMIT YOU WANT.\n");
+        print("THEN YOU HAVE TO GUESS WHAT IT IS.\n");
+        print("\n");
+        
+        print("WHAT LIMIT DO YOU WANT");
+        l = parseInt(await input());
+        print("\n");
+        l1 = Math.floor(Math.log(l) / Math.log(2)) + 1;
+        while (1) {
+            print("I'M THINKING OF A NUMBER BETWEEN 1 AND " + l + "\n");
+            g = 1;
+            print("NOW YOU TRY TO GUESS WHAT IT IS.\n");
+            m = Math.floor(l * Math.random() + 1);
+            while (1) {
+                n = parseInt(await input());
+                if (n <= 0) {
+                    make_space();
+                    break;
+                }
+                if (n == m) {
+                    print("THAT'S IT! YOU GOT IT IN " + g + " TRIES.\n");
+                    if (g == l1) {
+                        print("GOOD.\n");
+                    } else if (g < l1) {
+                        print("VERY GOOD.\n");
+                    } else {
+                        print("YOU SHOULD HAVE BEEN TO GET IT IN ONLY " + l1 + "\n");
+                    }
+                    make_space();
+                    break;
+                }
+                g++;
+                if (n > m)
+                    print("TOO HIGH. TRY A SMALLER ANSWER.\n");
+                else
+                    print("TOO LOW. TRY A BIGGER ANSWER.\n");
+            }
+            if (n <= 0)
+                break;
+        }
+    }
+}
+
+main();
diff --git a/42 Gunner/javascript/gunner.html b/42 Gunner/javascript/gunner.html
new file mode 100644
index 00000000..431c9064
--- /dev/null
+++ b/42 Gunner/javascript/gunner.html	
@@ -0,0 +1,9 @@
+
+
+GUNNER
+
+
+

+
+
+
diff --git a/42 Gunner/javascript/gunner.js b/42 Gunner/javascript/gunner.js
new file mode 100644
index 00000000..64a427a1
--- /dev/null
+++ b/42 Gunner/javascript/gunner.js	
@@ -0,0 +1,139 @@
+// GUNNER
+//
+// 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;
+}
+
+print(tab(30) + "GUNNER\n");
+print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+print("\n");
+print("\n");
+print("\n");
+print("YOU ARE THE OFFICER-IN-CHARGE, GIVING ORDERS TO A GUN\n");
+print("CREW, TELLING THEM THE DEGREES OF ELEVATION YOU ESTIMATE\n");
+print("WILL PLACE A PROJECTILE ON TARGET.  A HIT WITHIN 100 YARDS\n");
+print("OF THE TARGET WILL DESTROY IT.\n");
+print("\n");
+
+// Main control section
+async function main()
+{
+    while (1) {
+        r = Math.floor(40000 * Math.random() + 20000);
+        print("MAXIMUM RANGE OF YOUR GUN IS " + r + " YARDS.\n");
+        z = 0;
+        print("\n");
+        s1 = 0;
+        while (1) {
+            t = Math.floor(r * (0.1 + 0.8 * Math.random()));
+            s = 0;
+            print("DISTANCE TO THE TARGET IS " + t + " YARDS.\n");
+            print("\n");
+            
+            while (1) {
+                print("\n");
+                print("ELEVATION");
+                b = parseFloat(await input());
+                if (b > 89) {
+                    print("MAXIMUM ELEVATION IS 89 DEGREES.\n");
+                    continue;
+                }
+                if (b < 1) {
+                    print("MINIMUM ELEVATION IS ONE DEGREE.\n");
+                    continue;
+                }
+                if (++s >= 6) {
+                    print("\n");
+                    print("BOOM !!!!   YOU HAVE JUST BEEN DESTROYED BY THE ENEMY.\n");
+                    print("\n");
+                    print("\n");
+                    print("\n");
+                    e = 0;
+                    break;
+                }
+                b2 = 2 * b / 57.3;
+                i = r * Math.sin(b2);
+                x = t - i;
+                e = Math.floor(x);
+                if (true) { //Math.abs(e) < 100) {
+                    e = 1;
+                    break;
+                }
+                if (e > 100) {
+                    print("SHORT OF TARGET BY " + Math.abs(e) + " YARDS.\n");
+                } else {
+                    print("OVER TARGET BY " + Math.abs(e) + " YARDS.\n");
+                }
+            }
+            if (e == 1) {
+                print("*** TARGET DESTROYED *** " + s + " ROUNDS OF AMMUNITION EXPENDED.\n");
+                s1 += s;
+                if (z == 4) {
+                    print("\n");
+                    print("\n");
+                    print("TOTAL ROUND EXPENDED WERE: " + s1 + "\n");
+                    break;
+                } else {
+                    z++;
+                    print("\n");
+                    print("THE FORWARD OBSERVER HAS SIGHTED MORE ENEMY ACTIVITY...\n");
+                }
+            } else {
+                s1 = 19;
+                break;
+            }
+        }
+        if (s1 > 18) {
+            print("BETTER GO BACK TO FORT SILL FOR REFRESHER TRAINING!\n");
+        } else {
+            print("NICE SHOOTING !!");
+        }
+        print("\n");
+        print("TRY AGAIN (Y OR N)");
+        str = await input();
+        if (str.substr(0, 1) != "Y")
+            break;
+    }
+    print("\n");
+    print("OK.  RETURN TO BASE CAMP.\n");
+}
+
+main();
diff --git a/43 Hammurabi/javascript/hammurabi.html b/43 Hammurabi/javascript/hammurabi.html
new file mode 100644
index 00000000..2facdcb4
--- /dev/null
+++ b/43 Hammurabi/javascript/hammurabi.html	
@@ -0,0 +1,9 @@
+
+
+HAMMURABI
+
+
+

+
+
+
diff --git a/43 Hammurabi/javascript/hammurabi.js b/43 Hammurabi/javascript/hammurabi.js
new file mode 100644
index 00000000..285753c7
--- /dev/null
+++ b/43 Hammurabi/javascript/hammurabi.js	
@@ -0,0 +1,253 @@
+// HAMMURABI
+//
+// 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;
+var s;
+
+function exceeded_grain()
+{
+    print("HAMURABI: THINK AGAIN.  YOU HAVE ONLY\n");
+    print(s + " BUSHELS OF GRAIN.  NOW THEN,\n");
+    
+}
+
+function exceeded_acres()
+{
+    print("HAMURABI: THINK AGAIN.  YOU OWN ONLY " + a + " ACRES.  NOW THEN,\n");
+}
+
+// Main control section
+async function main()
+{
+    print(tab(32) + "HAMURABI\n");
+    print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+    print("\n");
+    print("\n");
+    print("\n");
+    print("TRY YOUR HAND AT GOVERNING ANCIENT SUMERIA\n");
+    print("FOR A TEN-YEAR TERM OF OFFICE.\n");
+    print("\n");
+    
+    d1 = 0;
+    p1 = 0;
+    z = 0;
+    p = 95;
+    s = 2800;
+    h = 3000;
+    e = h - s;
+    y = 3;
+    a = h / y;
+    i = 5;
+    q = 1;
+    d = 0;
+    while (1) {
+        print("\n");
+        print("\n");
+        print("\n");
+        print("HAMURABI:  I BEG TO REPORT TO YOU,\n");
+        z++;
+        print("IN YEAR " + z + ", " + d + " PEOPLE STARVED, " + i + " CAME TO THE CITY,\n");
+        p += i;
+        if (q <= 0) {
+            p = Math.floor(p / 2);
+            print("A HORRIBLE PLAGUE STRUCK!  HALF THE PEOPLE DIED.\n");
+        }
+        print("POPULATION IS NOW " + p + "\n");
+        print("THE CITY NOW OWNS " + a + " ACRES.\n");
+        print("YOU HARVESTED " + y + " BUSHELS PER ACRE.\n");
+        print("THE RATS ATE " + e + " BUSHELS.\n");
+        print("YOU NOW HAVE " + s + " BUSHELS IN STORE.\n");
+        print("\n");
+        if (z == 11) {
+            q = 0;
+            break;
+        }
+        c = Math.floor(10 * Math.random());
+        y = c + 17;
+        print("LAND IS TRADING AT " + y + " BUSHELS PER ACRE.\n");
+        while (1) {
+            print("HOW MANY ACRES DO YOU WISH TO BUY");
+            q = parseInt(await input());
+            if (q < 0)
+                break;
+            if (y * q > s) {
+                exceeded_grain();
+            } else
+                break;
+        }
+        if (q < 0)
+            break;
+        if (q != 0) {
+            a += q;
+            s -= y * q;
+            c = 0;
+        } else {
+            while (1) {
+                print("HOW MANY ACRES DO YOU WISH TO SELL");
+                q = parseInt(await input());
+                if (q < 0)
+                    break;
+                if (q >= a) {
+                    exceeded_acres();
+                } else {
+                    break;
+                }
+            }
+            if (q < 0)
+                break;
+            a -= q;
+            s += y * q;
+            c = 0;
+        }
+        print("\n");
+        while (1) {
+            print("HOW MANY BUSHELS DO YOU WISH TO FEED YOUR PEOPLE");
+            q = parseInt(await input());
+            if (q < 0)
+                break;
+            if (q > s)  // Trying to use more grain than is in silos?
+                exceeded_grain();
+            else
+                break;
+        }
+        if (q < 0)
+            break;
+        s -= q;
+        c = 1;
+        print("\n");
+        while (1) {
+            print("HOW MANY ACRES DO YOU WISH TO PLANT WITH SEED");
+            d = parseInt(await input());
+            if (d != 0) {
+                if (d < 0)
+                    break;
+                if (d > a) {    // Trying to plant more acres than you own?
+                    exceeded_acres();
+                } else {
+                    if (Math.floor(d / 2) > s)  // Enough grain for seed?
+                        exceeded_grain();
+                    else {
+                        if (d >= 10 * p) {
+                            print("BUT YOU HAVE ONLY " + p + " PEOPLE TO TEND THE FIELDS!  NOW THEN,\n");
+                        } else {
+                            break;
+                        }
+                    }
+                }
+            }
+        }
+        if (d < 0) {
+            q = -1;
+            break;
+        }
+        s -= Math.floor(d / 2);
+        c = Math.floor(Math.random() * 5) + 1;
+        // A bountiful harvest!
+        if (c % 2 == 0) {
+            // Rats are running wild!!
+            e = Math.floor(s / c);
+        }
+        s = s - e + h;
+        c = Math.floor(Math.random() * 5) + 1;
+        // Let's have some babies
+        i = Math.floor(c * (20 * a + s) / p / 100 + 1);
+        // How many people had full tummies?
+        c = Math.floor(q / 20);
+        // Horros, a 15% chance of plague
+        q = Math.floor(10 * (2 * Math.random() - 0.3));
+        if (p < c) {
+            d = 0;
+            continue;
+        }
+        // Starve enough for impeachment?
+        d = p - c;
+        if (d <= 0.45 * p) {
+            p1 = ((z - 1) * p1 + d * 100 / p) / z;
+            p = c;
+            d1 += d;
+            continue;
+        }
+        print("\n");
+        print("YOU STARVED " + d + " PEOPLE IN ONE YEAR!!!\n");
+        q = 0;
+        p1 = 34;
+        p = 1;
+        break;
+    }
+    if (q < 0) {
+        print("\n");
+        print("HAMURABI:  I CANNOT DO WHAT YOU WISH.\n");
+        print("GET YOURSELF ANOTHER STEWARD!!!!!\n");
+    } else {
+        print("IN YOUR 10-YEAR TERM OF OFFICE, " + p1 + " PERCENT OF THE\n");
+        print("POPULATION STARVED PER YEAR ON THE AVERAGE, I.E. A TOTAL OF\n");
+        print(d1 + " PEOPLE DIED!!\n");
+        l = a / p;
+        print("YOU STARTED WITH 10 ACRES PER PERSON AND ENDED WITH\n");
+        print(l + " ACRES PER PERSON.\n");
+        print("\n");
+        if (p1 > 33 || l < 7) {
+            print("DUE TO THIS EXTREME MISMANAGEMENT YOU HAVE NOT ONLY\n");
+            print("BEEN IMPEACHED AND THROWN OUT OF OFFICE BUT YOU HAVE\n");
+            print("ALSO BEEN DECLARED NATIONAL FINK!!!!\n");
+        } else if (p1 > 10 || l < 9) {
+            print("YOUR HEAVY-HANDED PERFORMANCE SMACKS OF NERO AND IVAN IV.\n");
+            print("THE PEOPLE (REMIANING) FIND YOU AN UNPLEASANT RULER, AND,\n");
+            print("FRANKLY, HATE YOUR GUTS!!\n");
+        } else if (p1 > 3 || l < 10) {
+            print("YOUR PERFORMANCE COULD HAVE BEEN SOMEWHAT BETTER, BUT\n");
+            print("REALLY WASN'T TOO BAD AT ALL. " + Math.floor(p * 0.8 * Math.random()) + " PEOPLE\n");
+            print("WOULD DEARLY LIKE TO SEE YOU ASSASSINATED BUT WE ALL HAVE OUR\n");
+            print("TRIVIAL PROBLEMS.\n");
+        } else {
+            print("A FANTASTIC PERFORMANCE!!!  CHARLEMANGE, DISRAELI, AND\n");
+            print("JEFFERSON COMBINED COULD NOT HAVE DONE BETTER!\n");
+        }
+    }
+    print("\n");
+    print("SO LONG FOR NOW.\n");
+    print("\n");
+}
+
+main();