diff --git a/02 Amazing/amazing.bas b/02 Amazing/amazing.bas index c140f86f..63255319 100644 --- a/02 Amazing/amazing.bas +++ b/02 Amazing/amazing.bas @@ -80,7 +80,7 @@ 680 IF W(R+1,S)<>0 THEN 740 685 IF S<>V THEN 700 690 IF Z=1 THEN 730 -695 Q=1:GOTO 830 +695 Q=1:GOTO 710 700 IF W(R,S+1)<>0 THEN 730 710 X=INT(RND(1)*2+1) 720 ON X GOTO 860,910 diff --git a/02 Amazing/javascript/amazing.html b/02 Amazing/javascript/amazing.html new file mode 100644 index 00000000..c066a3e9 --- /dev/null +++ b/02 Amazing/javascript/amazing.html @@ -0,0 +1,9 @@ + + +AMAZING + + +

+
+
+
diff --git a/02 Amazing/javascript/amazing.js b/02 Amazing/javascript/amazing.js
new file mode 100644
index 00000000..427e0793
--- /dev/null
+++ b/02 Amazing/javascript/amazing.js	
@@ -0,0 +1,319 @@
+// AMAZING
+//
+// 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(28) + "AMAZING PROGRAM\n");
+print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+print("\n");
+print("\n");
+print("\n");
+print("FOR EXAMPLE TYPE 10,10 AND PRESS ENTER\n");
+print("\n");
+
+// Main program
+async function main()
+{
+    while (1) {
+        print("WHAT ARE YOUR WIDTH AND LENGTH");
+        a = await input();
+        h = parseInt(a);
+        v2 = parseInt(a.substr(a.indexOf(",") + 1));
+        if (h > 1 && v2 > 1)
+            break;
+        print("MEANINGLESS DIMENSIONS.  TRY AGAIN.\n");
+    }
+    w = [];
+    v = [];
+    for (i = 1; i <= h; i++) {
+        w[i] = [];
+        v[i] = [];
+        for (j = 1; j <= v2; j++) {
+            w[i][j] = 0;
+            v[i][j] = 0;
+        }
+    }
+    print("\n");
+    print("\n");
+    print("\n");
+    print("\n");
+    q = 0;
+    z = 0;
+    x = Math.floor(Math.random() * h + 1);
+    for (i = 1; i <= h; i++) {
+        if (i == x)
+            print(".  ");
+        else
+            print(".--");
+    }
+    print(".\n");
+    c = 1;
+    w[x][1] = c;
+    c++;
+    r = x;
+    s = 1;
+    entry = 0;
+    while (1) {
+        if (entry == 2) {	// Search for a non-explored cell
+            do {
+                if (r < h) {
+                    r++;
+                } else if (s < v2) {
+                    r = 1;
+                    s++;
+                } else {
+                    r = 1;
+                    s = 1;
+                }
+            } while (w[r][s] == 0) ;
+        }
+        if (entry == 0 && r - 1 > 0 && w[r - 1][s] == 0) {	// Can go left?
+            if (s - 1 > 0 && w[r][s - 1] == 0) {	// Can go up?
+                if (r < h && w[r + 1][s] == 0) {	// Can go right?
+                    // Choose left/up/right
+                    x = Math.floor(Math.random() * 3 + 1);
+                } else if (s < v2) {
+                    if (w[r][s + 1] == 0) {	// Can go down?
+                        // Choose left/up/down
+                        x = Math.floor(Math.random() * 3 + 1);
+                        if (x == 3)
+                            x = 4;
+                    } else {
+                        x = Math.floor(Math.random() * 2 + 1);
+                    }
+                } else if (z == 1) {
+                    x = Math.floor(Math.random() * 2 + 1);
+                } else {
+                    q = 1;
+                    x = Math.floor(Math.random() * 3 + 1);
+                    if (x == 3)
+                        x = 4;
+                }
+            } else if (r < h && w[r + 1][s] == 0) {	// Can go right?
+                if (s < v2) {
+                    if (w[r][s + 1] == 0) {	// Can go down?
+                        // Choose left/right/down
+                        x = Math.floor(Math.random() * 3 + 1);
+                    } else {
+                        x = Math.floor(Math.random() * 2 + 1);
+                    }
+                    if (x >= 2)
+                        x++;
+                } else if (z == 1) {
+                    x = Math.floor(Math.random() * 2 + 1);
+                    if (x >= 2)
+                        x++;
+                } else {
+                    q = 1;
+                    x = Math.floor(Math.random() * 3 + 1);
+                    if (x >= 2)
+                        x++;
+                }
+            } else if (s < v2) {
+                if (w[r][s + 1] == 0) {	// Can go down?
+                    // Choose left/down
+                    x = Math.floor(Math.random() * 2 + 1);
+                    if (x == 2)
+                        x = 4;
+                } else {
+                    x = 1;
+                }
+            } else if (z == 1) {
+                x = 1;
+            } else {
+                q = 1;
+                x = Math.floor(Math.random() * 2 + 1);
+                if (x == 2)
+                    x = 4;
+            }
+        } else if (s - 1 > 0 && w[r][s - 1] == 0) {	// Can go up?
+            if (r < h && w[r + 1][s] == 0) {
+                if (s < v2) {
+                    if (w[r][s + 1] == 0)
+                        x = Math.floor(Math.random() * 3 + 2);
+                    else
+                        x = Math.floor(Math.random() * 2 + 2);
+                } else if (z == 1) {
+                    x = Math.floor(Math.random() * 2 + 2);
+                } else {
+                    q = 1;
+                    x = Math.floor(Math.random() * 3 + 2);
+                }
+            } else if (s < v2) {
+                if (w[r][s + 1] == 0) {
+                    x = Math.floor(Math.random() * 2 + 2);
+                    if (x == 3)
+                        x = 4;
+                } else {
+                    x = 2;
+                }
+            } else if (z == 1) {
+                x = 2;
+            } else {
+                q = 1;
+                x = Math.floor(Math.random() * 2 + 2);
+                if (x == 3)
+                    x = 4;
+            }
+        } else if (r < h && w[r + 1][s] == 0) {	// Can go right?
+            if (s < v2) {
+                if (w[r][s + 1] == 0)
+                    x = Math.floor(Math.random() * 2 + 3);
+                else
+                    x = 3;
+            } else if (z == 1) {
+                x = 3;
+            } else {
+                q = 1;
+                x = Math.floor(Math.random() * 2 + 3);
+            }
+        } else if (s < v2) {
+            if (w[r][s + 1] == 0) 	// Can go down?
+                x = 4;
+            else {
+                entry = 2;	// Blocked!
+                continue;
+            }
+        } else if (z == 1) {
+            entry = 2;	// Blocked!
+            continue;
+        } else {
+            q = 1;
+            x = 4;
+        }
+        if (x == 1) {	// Left
+            w[r - 1][s] = c;
+            c++;
+            v[r - 1][s] = 2;
+            r--;
+            if (c == h * v2 + 1)
+                break;
+            q = 0;
+            entry = 0;
+        } else if (x == 2) {	// Up
+            w[r][s - 1] = c;
+            c++;
+            v[r][s - 1] = 1;
+            s--;
+            if (c == h * v2 + 1)
+                break;
+            q = 0;
+            entry = 0;
+        } else if (x == 3) {	// Right
+            w[r + 1][s] = c;
+            c++;
+            if (v[r][s] == 0)
+                v[r][s] = 2;
+            else
+                v[r][s] = 3;
+            r++;
+            if (c == h * v2 + 1)
+                break;
+            entry = 1;
+        } else if (x == 4) {	// Down
+            if (q != 1) {	// Only if not blocked
+                w[r][s + 1] = c;
+                c++;
+                if (v[r][s] == 0)
+                    v[r][s] = 1;
+                else
+                    v[r][s] = 3;
+                s++;
+                if (c == h * v2 + 1)
+                    break;
+                entry = 0;
+            } else {
+                z = 1;
+                if (v[r][s] == 0) {
+                    v[r][s] = 1;
+                    q = 0;
+                    r = 1;
+                    s = 1;
+                    while (w[r][s] == 0) {
+                        if (r < h) {
+                            r++;
+                        } else if (s < v2) {
+                            r = 1;
+                            s++;
+                        } else {
+                            r = 1;
+                            s = 1;
+                        }
+                    }
+                    entry = 0;
+                } else {
+                    v[r][s] = 3;
+                    q = 0;
+                    entry = 2;
+                }
+            }
+        }
+    }
+    for (j = 1; j <= v2; j++) {
+        str = "I";
+        for (i = 1; i <= h; i++) {
+            if (v[i][j] < 2)
+                str += "  I";
+            else
+                str += "   ";
+        }
+        print(str + "\n");
+        str = "";
+        for (i = 1; i <= h; i++) {
+            if (v[i][j] == 0 || v[i][j] == 2)
+                str += ":--";
+            else
+                str += ":  ";
+        }
+        print(str + ".\n");
+    }
+// If you want to see the order of visited cells
+//    for (j = 1; j <= v2; j++) {
+//        str = "I";
+//        for (i = 1; i <= h; i++) {
+//            str += w[i][j] + " ";
+//        }
+//        print(str + "\n");
+//    }
+}
+
+main();