diff --git a/37 Football/javascript/football.html b/37 Football/javascript/football.html new file mode 100644 index 00000000..10e1acc1 --- /dev/null +++ b/37 Football/javascript/football.html @@ -0,0 +1,9 @@ + + +FOOTBALL + + +

+
+
+
diff --git a/37 Football/javascript/football.js b/37 Football/javascript/football.js
new file mode 100644
index 00000000..ca990f92
--- /dev/null
+++ b/37 Football/javascript/football.js	
@@ -0,0 +1,504 @@
+// FOOTBALL
+//
+// 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 player_data = [17,8,4,14,19,3,10,1,7,11,15,9,5,20,13,18,16,2,12,6,
+                   20,2,17,5,8,18,12,11,1,4,19,14,10,7,9,15,6,13,16,3];
+var aa = [];
+var ba = [];
+var ca = [];
+var ha = [];
+var ta = [];
+var wa = [];
+var xa = [];
+var ya = [];
+var za = [];
+var ms = [];
+var da = [];
+var ps = [, "PITCHOUT","TRIPLE REVERSE","DRAW","QB SNEAK","END AROUND",
+          "DOUBLE REVERSE","LEFT SWEEP","RIGHT SWEEP","OFF TACKLE",
+          "WISHBONE OPTION","FLARE PASS","SCREEN PASS",
+          "ROLL OUT OPTION","RIGHT CURL","LEFT CURL","WISHBONE OPTION",
+          "SIDELINE PASS","HALF-BACK OPTION","RAZZLE-DAZZLE","BOMB!!!!"];
+var p;
+var t;
+
+function field_headers()
+{
+    print("TEAM 1 [0   10   20   30   40   50   60   70   80   90");
+    print("   100] TEAM 2\n");
+    print("\n");
+}
+
+function separator()
+{
+    str = "";
+    for (x = 1; x <= 72; x++)
+        str += "+";
+    print(str + "\n");
+}
+
+function show_ball()
+{
+    print(tab(da[t] + 5 + p / 2) + ms[t] + "\n");
+    field_headers();
+}
+
+function show_scores()
+{
+    print("\n");
+    print("TEAM 1 SCORE IS " + ha[1] + "\n");
+    print("TEAM 2 SCORE IS " + ha[2] + "\n");
+    print("\n");
+    if (ha[t] >= e) {
+        print("TEAM " + t + " WINS*******************");
+        return true;
+    }
+    return false;
+}
+
+function loss_posession() {
+    print("\n");
+    print("** LOSS OF POSSESSION FROM TEAM " + t + " TO TEAM " + ta[t] + "\n");
+    print("\n");
+    separator();
+    print("\n");
+    t = ta[t];
+}
+
+function touchdown() {
+    print("\n");
+    print("TOUCHDOWN BY TEAM " + t + " *********************YEA TEAM\n");
+    q = 7;
+    g = Math.random();
+    if (g <= 0.1) {
+        q = 6;
+        print("EXTRA POINT NO GOOD\n");
+    } else {
+        print("EXTRA POINT GOOD\n");
+    }
+    ha[t] = ha[t] + q;
+}
+
+// Main program
+async function main()
+{
+    print(tab(32) + "FOOTBALL\n");
+    print(tab(15) + "CREATIVE COMPUTING  MORRISTOWN, NEW JERSEY\n");
+    print("\n");
+    print("\n");
+    print("\n");
+    print("PRESENTING N.F.U. FOOTBALL (NO FORTRAN USED)\n");
+    print("\n");
+    print("\n");
+    while (1) {
+        print("DO YOU WANT INSTRUCTIONS");
+        str = await input();
+        if (str == "YES" || str == "NO")
+            break;
+    }
+    if (str == "YES") {
+        print("THIS IS A FOOTBALL GAME FOR TWO TEAMS IN WHICH PLAYERS MUST\n");
+        print("PREPARE A TAPE WITH A DATA STATEMENT (1770 FOR TEAM 1,\n");
+        print( "1780 FOR TEAM 2) IN WHICH EACH TEAM SCRAMBLES NOS. 1-20\n");
+        print("THESE NUMBERS ARE THEN ASSIGNED TO TWENTY GIVEN PLAYS.\n");
+        print("A LIST OF NOS. AND THEIR PLAYS IS PROVIDED WITH\n");
+        print("BOTH TEAMS HAVING THE SAME PLAYS. THE MORE SIMILAR THE\n");
+        print("PLAYS THE LESS YARDAGE GAINED.  SCORES ARE GIVEN\n");
+        print("WHENEVER SCORES ARE MADE. SCORES MAY ALSO BE OBTAINED\n");
+        print("BY INPUTTING 99,99 FOR PLAY NOS. TO PUNT OR ATTEMPT A\n");
+        print("FIELD GOAL, INPUT 77,77 FOR PLAY NUMBERS. QUESTIONS WILL BE\n");
+        print("ASKED THEN. ON 4TH DOWN, YOU WILL ALSO BE ASKED WHETHER\n");
+        print("YOU WANT TO PUNT OR ATTEMPT A FIELD GOAL. IF THE ANSWER TO\n");
+        print("BOTH QUESTIONS IS NO IT WILL BE ASSUMED YOU WANT TO\n");
+        print("TRY AND GAIN YARDAGE. ANSWER ALL QUESTIONS YES OR NO.\n");
+        print("THE GAME IS PLAYED UNTIL PLAYERS TERMINATE (CONTROL-C).\n");
+        print("PLEASE PREPARE A TAPE AND RUN.\n");
+    }
+    print("\n");
+    print("PLEASE INPUT SCORE LIMIT ON GAME");
+    e = parseInt(await input());
+    for (i = 1; i <= 40; i++) {
+        if (i <= 20) {
+            aa[player_data[i - 1]] = i;
+        } else {
+            ba[player_data[i - 1]] = i - 20;
+        }
+        ca[i] = player_data[i - 1];
+    }
+    l = 0;
+    t = 1;
+    do {
+        print("TEAM " + t + " PLAY CHART\n");
+        print("NO.      PLAY\n");
+        for (i = 1; i <= 20; i++) {
+            str = "" + ca[i + l];
+            while (str.length < 6)
+                str += " ";
+            str += ps[i];
+            print(str + "\n");
+        }
+        l += 20;
+        t = 2;
+        print("\n");
+        print("TEAR OFF HERE----------------------------------------------\n");
+        for (x = 1; x <= 11; x++)
+            print("\n");
+    } while (l == 20) ;
+    da[1] = 0;
+    da[2] = 3;
+    ms[1] = "--->";
+    ms[2] = "<---";
+    ha[1] = 0;
+    ha[2] = 0;
+    ta[1] = 2;
+    ta[2] = 1;
+    wa[1] = -1;
+    wa[2] = 1;
+    xa[1] = 100;
+    xa[2] = 0;
+    ya[1] = 1;
+    ya[2] = -1;
+    za[1] = 0;
+    za[2] = 100;
+    p = 0;
+    field_headers();
+    print("TEAM 1 DEFEND 0 YD GOAL -- TEAM 2 DEFENDS 100 YD GOAL.\n");
+    t = Math.floor(2 * Math.random() + 1);
+    print("\n");
+    print("THE COIN IS FLIPPED\n");
+    routine = 1;
+    while (1) {
+        if (routine <= 1) {
+            p = xa[t] - ya[t] * 40;
+            separator();
+            print("\n");
+            print("TEAM " + t + " RECEIVES KICK-OFF\n");
+            k = Math.floor(26 * Math.random() + 40);
+        }
+        if (routine <= 2) {
+            p = p - ya[t] * k;
+        }
+        if (routine <= 3) {
+            if (wa[t] * p >= za[t] + 10) {
+                print("\n");
+                print("BALL WENT OUT OF ENDZONE --AUTOMATIC TOUCHBACK--\n");
+                p = za[t] - wa[t] * 20;
+                if (routine <= 4)
+                    routine = 5;
+            } else {
+                print("BALL WENT " + k + " YARDS.  NOW ON " + p + "\n");
+                show_ball();
+            }
+        }
+        if (routine <= 4) {
+            while (1) {
+                print("TEAM " + t + " DO YOU WANT TO RUNBACK");
+                str = await input();
+                if (str == "YES" || str == "NO")
+                    break;
+            }
+            if (str == "YES") {
+                k = Math.floor(9 * Math.random() + 1);
+                r = Math.floor(((xa[t] - ya[t] * p + 25) * Math.random() - 15) / k);
+                p = p - wa[t] * r;
+                print("\n");
+                print("RUNBACK TEAM " + t + " " + r + " YARDS\n");
+                g = Math.random();
+                if (g < 0.25) {
+                    loss_posession();
+                    routine = 4;
+                    continue;
+                } else if (ya[t] * p >= xa[t]) {
+                    touchdown();
+                    if (show_scores())
+                        return;
+                    t = ta[t];
+                    routine = 1;
+                    continue;
+                } else if (wa[t] * p >= za[t]) {
+                    print("\n");
+                    print("SAFETY AGAINST TEAM " + t + " **********************OH-OH\n");
+                    ha[ta[t]] = ha[ta[t]] + 2;
+                    if (show_scores())
+                        return;
+                    print("TEAM " + t + " DO YOU WANT TO PUNT INSTEAD OF A KICKOFF");
+                    str = await input();
+                    p = za[t] - wa[t] * 20;
+                    if (str == "YES") {
+                        print("\n");
+                        print("TEAM " + t + " WILL PUNT\n");
+                        g = Math.random();
+                        if (g < 0.25) {
+                            loss_posession();
+                            routine = 4;
+                            continue;
+                        }
+                        print("\n");
+                        separator();
+                        k = Math.floor(25 * Math.random() + 35);
+                        t = ta[t];
+                        routine = 2;
+                        continue;
+                    }
+                    touchdown();
+                    if (show_scores())
+                        return;
+                    t = ta[t];
+                    routine = 1;
+                    continue;
+                } else {
+                    routine = 5;
+                    continue;
+                }
+            } else if (str == "NO") {
+                if (wa[t] * p >= za[t])
+                    p = za[t] - wa[t] * 20;
+            }
+        }
+        if (routine <= 5) {
+            d = 1;
+            s = p;
+        }
+        if (routine <= 6) {
+            str = "";
+            for (i = 1; i <= 72; i++)
+                str += "=";
+            print(str + "\n");
+            print("TEAM " + t + " DOWN " + d + " ON " + p + "\n");
+            if (d == 1) {
+                if (ya[t] * (p + ya[t] * 10) >= xa[t])
+                    c = 8;
+                else
+                    c = 4;
+            }
+            if (c != 8) {
+                print(tab(27) + (10 - (ya[t] * p - ya[t] * s)) + " YARDS TO 1ST DOWN\n");
+            } else {
+                print(tab(27) + (xa[t] - ya[t] * p) + " YARDS\n");
+            }
+            show_ball();
+            if (d == 4)
+                routine = 8;
+        }
+        if (routine <= 7) {
+            u = Math.floor(3 * Math.random() - 1);
+            while (1) {
+                print("INPUT OFFENSIVE PLAY, DEFENSIVE PLAY");
+                str = await input();
+                if (t == 1) {
+                    p1 = parseInt(str);
+                    p2 = parseInt(str.substr(str.indexOf(",") + 1));
+                } else {
+                    p2 = parseInt(str);
+                    p1 = parseInt(str.substr(str.indexOf(",") + 1));
+                }
+                if (p1 == 99) {
+                    if (show_scores())
+                        return;
+                    if (p1 == 99)
+                        continue;
+                }
+                if (p1 < 1 || p1 > 20 || p2 < 1 || p2 > 20) {
+                    print("ILLEGAL PLAY NUMBER, CHECK AND\n");
+                    continue;
+                }
+                break;
+            }
+        }
+        if (d == 4 || p1 == 77) {
+            while (1) {
+                print("DOES TEAM " + t + " WANT TO PUNT");
+                str = await input();
+                if (str == "YES" || str == "NO")
+                    break;
+            }
+            if (str == "YES") {
+                print("\n");
+                print("TEAM " + t + " WILL PUNT\n");
+                g = Math.random();
+                if (g < 0.25) {
+                    loss_posession();
+                    routine = 4;
+                    continue;
+                }
+                print("\n");
+                separator();
+                k = Math.floor(25 * Math.random() + 35);
+                t = ta[t];
+                routine = 2;
+                continue;
+            }
+            while (1) {
+                print("DOES TEAM " + t + " WANT TO ATTEMPT A FIELD GOAL");
+                str = await input();
+                if (str == "YES" || str == "NO")
+                    break;
+            }
+            if (str == "YES") {
+                print("\n");
+                print("TEAM " + t + " WILL ATTEMPT A FIELD GOAL\n");
+                g = Math.random();
+                if (g < 0.025) {
+                    loss_posession();
+                    routine = 4;
+                    continue;
+                } else {
+                    f = Math.floor(35 * Math.random() + 20);
+                    print("\n");
+                    print("KICK IS " + f + " YARDS LONG\n");
+                    p = p - wa[t] * f;
+                    g = Math.random();
+                    if (g < 0.35) {
+                        print("BALL WENT WIDE\n");
+                    } else if (ya[t] * p >= xa[t]) {
+                        print("FIELD GOLD GOOD FOR TEAM " + t + " *********************YEA");
+                        q = 3;
+                        ha[t] = ha[t] + q;
+                        if (show_scores())
+                            return;
+                        t = ta[t];
+                        routine = 1;
+                        continue;
+                    }
+                    print("FIELD GOAL UNSUCCESFUL TEAM " + t + "-----------------TOO BAD\n");
+                    print("\n");
+                    separator();
+                    if (ya[t] * p < xa[t] + 10) {
+                        print("\n");
+                        print("BALL NOW ON " + p + "\n");
+                        t = ta[t];
+                        show_ball();
+                        routine = 4;
+                        continue;
+                    } else {
+                        t = ta[t];
+                        routine = 3;
+                        continue;
+                    }
+                }
+            } else {
+                routine = 7;
+                continue;
+            }
+        }
+        y = Math.floor(Math.abs(aa[p1] - ba[p2]) / 19 * ((xa[t] - ya[t] * p + 25) * Math.random() - 15));
+        print("\n");
+        if (t == 1 && aa[p1] < 11 || t == 2 && ba[p2] < 11) {
+            print("THE BALL WAS RUN\n");
+        } else if (u == 0) {
+            print("PASS INCOMPLETE TEAM " + t + "\n");
+            y = 0;
+        } else {
+            g = Math.random();
+            if (g <= 0.025 && y > 2) {
+                print("PASS COMPLETED\n");
+            } else {
+                print("QUARTERBACK SCRAMBLED\n");
+            }
+        }
+        p = p - wa[t] * y;
+        print("\n");
+        print("NET YARDS GAINED ON DOWN " + d + " ARE " + y + "\n");
+        
+        g = Math.random();
+        if (g <= 0.025) {
+            loss_posession();
+            routine = 4;
+            continue;
+        } else if (ya[t] * p >= xa[t]) {
+            touchdown();
+            if (show_scores())
+                return;
+            t = ta[t];
+            routine = 1;
+            continue;
+        } else if (wa[t] * p >= za[t]) {
+            print("\n");
+            print("SAFETY AGAINST TEAM " + t + " **********************OH-OH\n");
+            ha[ta[t]] = ha[ta[t]] + 2;
+            if (show_scores())
+                return;
+            print("TEAM " + t + " DO YOU WANT TO PUNT INSTEAD OF A KICKOFF");
+            str = await input();
+            p = za[t] - wa[t] * 20;
+            if (str == "YES") {
+                print("\n");
+                print("TEAM " + t + " WILL PUNT\n");
+                g = Math.random();
+                if (g < 0.25) {
+                    loss_posession();
+                    routine = 4;
+                    continue;
+                }
+                print("\n");
+                separator();
+                k = Math.floor(25 * Math.random() + 35);
+                t = ta[t];
+                routine = 2;
+                continue;
+            }
+            touchdown();
+            if (show_scores())
+                return;
+            t = ta[t];
+            routine = 1;
+        } else if (ya[t] * p - ya[t] * s >= 10) {
+            routine = 5;
+        } else {
+            d++;
+            if (d != 5) {
+                routine = 6;
+            } else {
+                print("\n");
+                print("CONVERSION UNSUCCESSFUL TEAM " + t + "\n");
+                t = ta[t];
+                print("\n");
+                separator();
+                routine = 5;
+            }
+        }
+    }
+}
+
+main();