From ea93a0779441ceaa5fc7ae9445f7a1fde7525e29 Mon Sep 17 00:00:00 2001 From: nanochess Date: Wed, 3 Mar 2021 17:11:09 -0600 Subject: [PATCH] Ported CUBE to Javascript --- 30 Cube/cube.bas | 4 +- 30 Cube/javascript/cube.html | 9 ++ 30 Cube/javascript/cube.js | 207 +++++++++++++++++++++++++++++++++++ 3 files changed, 218 insertions(+), 2 deletions(-) create mode 100644 30 Cube/javascript/cube.html create mode 100644 30 Cube/javascript/cube.js diff --git a/30 Cube/cube.bas b/30 Cube/cube.bas index e661ab66..1e4462f6 100644 --- a/30 Cube/cube.bas +++ b/30 Cube/cube.bas @@ -76,7 +76,7 @@ 820 LET O=3 830 PRINT "WANT TO MAKE A WAGER?" 840 INPUT Z -850 IF Z=0 THEN 920 +850 IF Z=0 THEN 880 860 PRINT "HOW MUCH "; 870 INPUT Z1 876 IF A1 + +CUBE + + +

+
+
+
diff --git a/30 Cube/javascript/cube.js b/30 Cube/javascript/cube.js
new file mode 100644
index 00000000..edbaaedc
--- /dev/null
+++ b/30 Cube/javascript/cube.js	
@@ -0,0 +1,207 @@
+// CUBE
+//
+// 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;
+}
+
+// Main program
+async function main()
+{
+    print(tab(33) + "CUBE\n");
+    print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+    print("\n");
+    print("\n");
+    print("\n");
+    print("DO YOU WANT TO SEE THE INSTRUCTIONS? (YES--1,NO--0)");
+    b7 = parseInt(await input());
+    if (b7 != 0) {
+        print("THIS IS A GAME IN WHICH YOU WILL BE PLAYING AGAINST THE\n");
+        print("RANDOM DECISION OF THE COMPUTER. THE FIELD OF PLAY IS A\n");
+        print("CUBE OF SIDE 3. ANY OF THE 27 LOCATIONS CAN BE DESIGNATED\n");
+        print("BY INPUTING THREE NUMBERS SUCH AS 2,3,1. AT THE START,\n");
+        print("YOU ARE AUTOMATICALLY AT LOCATION 1,1,1. THE OBJECT OF\n");
+        print("THE GAME IS TO GET TO LOCATION 3,3,3. ONE MINOR DETAIL:\n");
+        print("THE COMPUTER WILL PICK, AT RANDOM, 5 LOCATIONS AT WHICH\n");
+        print("IT WILL PLANT LAND MINES. IF YOU HIT ONE OF THESE LOCATIONS\n");
+        print("YOU LOSE. ONE OTHER DETAIL: YOU MAY MOVE ONLY ONE SPACE \n");
+        print("IN ONE DIRECTION EACH MOVE. FOR  EXAMPLE: FROM 1,1,2 YOU\n");
+        print("MAY MOVE TO 2,1,2 OR 1,1,3. YOU MAY NOT CHANGE\n");
+        print("TWO OF THE NUMBERS ON THE SAME MOVE. IF YOU MAKE AN ILLEGAL\n");
+        print("MOVE, YOU LOSE AND THE COMPUTER TAKES THE MONEY YOU MAY\n");
+        print("HAVE BET ON THAT ROUND.\n");
+        print("\n");
+        print("\n");
+        print("ALL YES OR NO QUESTIONS WILL BE ANSWERED BY A 1 FOR YES\n");
+        print("OR A 0 (ZERO) FOR NO.\n");
+        print("\n");
+        print("WHEN STATING THE AMOUNT OF A WAGER, PRINT ONLY THE NUMBER\n");
+        print("OF DOLLARS (EXAMPLE: 250)  YOU ARE AUTOMATICALLY STARTED WITH\n");
+        print("500 DOLLARS IN YOUR ACCOUNT.\n");
+        print("\n");
+        print("GOOD LUCK!\n");
+    }
+    a1 = 500;
+    while (1) {
+        a = Math.floor(3 * Math.random());
+        if (a == 0)
+            a = 3;
+        b = Math.floor(3 * Math.random());
+        if (b == 0)
+            b = 2;
+        c = Math.floor(3 * Math.random());
+        if (c == 0)
+            c = 3;
+        d = Math.floor(3 * Math.random());
+        if (d == 0)
+            d = 1;
+        e = Math.floor(3 * Math.random());
+        if (e == 0)
+            e = 3;
+        f = Math.floor(3 * Math.random());
+        if (f == 0)
+            f = 3;
+        g = Math.floor(3 * Math.random());
+        if (g == 0)
+            g = 3;
+        h = Math.floor(3 * Math.random());
+        if (h == 0)
+            h = 3;
+        i = Math.floor(3 * Math.random());
+        if (i == 0)
+            i = 2;
+        j = Math.floor(3 * Math.random());
+        if (j == 0)
+            j = 3;
+        k = Math.floor(3 * Math.random());
+        if (k == 0)
+            k = 2;
+        l = Math.floor(3 * Math.random());
+        if (l == 0)
+            l = 3;
+        m = Math.floor(3 * Math.random());
+        if (m == 0)
+            m = 3;
+        n = Math.floor(3 * Math.random());
+        if (n == 0)
+            n = 1;
+        o = Math.floor(3 * Math.random());
+        if (o == 0)
+            o = 3;
+        print("WANT TO MAKE A WAGER?");
+        z = parseInt(await input());
+        if (z != 0) {
+            print("HOW MUCH ");
+            while (1) {
+                z1 = parseInt(await input());
+                if (a1 < z1) {
+                    print("TRIED TO FOOL ME; BET AGAIN");
+                } else {
+                    break;
+                }
+            }
+        }
+        w = 1;
+        x = 1;
+        y = 1;
+        print("\n");
+        print("IT'S YOUR MOVE:  ");
+        while (1) {
+            str = await input();
+            p = parseInt(str);
+            q = parseInt(str.substr(str.indexOf(",") + 1));
+            r = parseInt(str.substr(str.lastIndexOf(",") + 1));
+            if (p > w + 1 || q > x + 1 || r > y + 1 || (p == w + 1 && (q >= x + 1 || r >= y + 1)) || (q == x + 1 && r >= y + 1)) {
+                print("\n");
+                print("ILLEGAL MOVE, YOU LOSE.\n");
+                break;
+            }
+            w = p;
+            x = q;
+            y = r;
+            if (p == 3 && q == 3 && r == 3) {
+                won = true;
+                break;
+            }
+            if (p == a && q == b && r == c
+             || p == d && q == e && r == f
+             || p == g && q == h && r == i
+             || p == j && q == k && r == l
+             || p == m && q == n && r == o) {
+                print("******BANG******");
+                print("YOU LOSE!");
+                print("\n");
+                print("\n");
+                won = false;
+                break;
+            }
+            print("NEXT MOVE: ");
+        }
+        if (won) {
+            print("CONGRATULATIONS!\n");
+            if (z != 0) {
+                z2 = a1 + z1;
+                print("YOU NOW HAVE " + z2 + " DOLLARS.\n");
+                a1 = z2;
+            }
+        } else {
+            if (z != 0) {
+                print("\n");
+                z2 = a1 - z1;
+                if (z2 <= 0) {
+                    print("YOU BUST.\n");
+                    break;
+                } else {
+                    print(" YOU NOW HAVE " + z2 + " DOLLARS.\n");
+                    a1 = z2;
+                }
+            }
+        }
+        print("DO YOU WANT TO TRY AGAIN ");
+        s = parseInt(await input());
+        if (s != 1)
+            break;
+    }
+    print("TOUGH LUCK!\n");
+    print("\n");
+    print("GOODBYE.\n");
+}
+
+main();