// CHOMP // // 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 r; var c; function init_board() { for (i = 1; i <= r; i++) for (j = 1; j <= c; j++) a[i][j] = 1; a[1][1] = -1; } function show_board() { print("\n"); print(tab(7) + "1 2 3 4 5 6 7 8 9\n"); for (i = 1; i <= r; i++) { str = i + tab(6); for (j = 1; j <= c; j++) { if (a[i][j] == -1) str += "P "; else if (a[i][j] == 0) break; else str += "* "; } print(str + "\n"); } print("\n"); } // Main program async function main() { print(tab(33) + "CHOMP\n"); print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n"); print("\n"); print("\n"); print("\n"); for (i = 1; i <= 10; i++) a[i] = []; // *** THE GAME OF CHOMP *** COPYRIGHT PCC 1973 *** print("\n"); print("THIS IS THE GAME OF CHOMP (SCIENTIFIC AMERICAN, JAN 1973)\n"); print("DO YOU WANT THE RULES (1=YES, 0=NO!)"); r = parseInt(await input()); if (r != 0) { f = 1; r = 5; c = 7; print("CHOMP IS FOR 1 OR MORE PLAYERS (HUMANS ONLY).\n"); print("\n"); print("HERE'S HOW A BOARD LOOKS (THIS ONE IS 5 BY 7):\n"); init_board(); show_board(); print("\n"); print("THE BOARD IS A BIG COOKIE - R ROWS HIGH AND C COLUMNS\n"); print("WIDE. YOU INPUT R AND C AT THE START. IN THE UPPER LEFT\n"); print("CORNER OF THE COOKIE IS A POISON SQUARE (P). THE ONE WHO\n"); print("CHOMPS THE POISON SQUARE LOSES. TO TAKE A CHOMP, TYPE THE\n"); print("ROW AND COLUMN OF ONE OF THE SQUARES ON THE COOKIE.\n"); print("ALL OF THE SQUARES BELOW AND TO THE RIGHT OF THAT SQUARE\n"); print("INCLUDING THAT SQUARE, TOO) DISAPPEAR -- CHOMP!!\n"); print("NO FAIR CHOMPING SQUARES THAT HAVE ALREADY BEEN CHOMPED,\n"); print("OR THAT ARE OUTSIDE THE ORIGINAL DIMENSIONS OF THE COOKIE.\n"); print("\n"); } while (1) { print("HERE WE GO...\n"); f = 0; for (i = 1; i <= 10; i++) { a[i] = []; for (j = 1; j <= 10; j++) { a[i][j] = 0; } } print("\n"); print("HOW MANY PLAYERS"); p = parseInt(await input()); i1 = 0; while (1) { print("HOW MANY ROWS"); r = parseInt(await input()); if (r <= 9) break; print("TOO MANY ROWS (9 IS MAXIMUM). NOW "); } while (1) { print("HOW MANY COLUMNS"); c = parseInt(await input()); if (c <= 9) break; print("TOO MANY COLUMNS (9 IS MAXIMUM). NOW "); } print("\n"); init_board(); while (1) { // Print the board show_board(); // Get chomps for each player in turn i1++; p1 = i1 - Math.floor(i1 / p) * p; if (p1 == 0) p1 = p; while (1) { print("PLAYER " + p1 + "\n"); print("COORDINATES OF CHOMP (ROW,COLUMN)"); str = await input(); r1 = parseInt(str); c1 = parseInt(str.substr(str.indexOf(",") + 1)); if (r1 >= 1 && r1 <= r && c1 >= 1 && c1 <= c && a[r1][c1] != 0) break; print("NO FAIR. YOU'RE TRYING TO CHOMP ON EMPTY SPACE!\n"); } if (a[r1][c1] == -1) break; for (i = r1; i <= r; i++) for (j = c1; j <= c; j++) a[i][j] = 0; } // End of game detected print("YOU LOSE, PLAYER " + p1 + "\n"); print("\n"); print("AGAIN (1=YES, 0=NO!)"); r = parseInt(await input()); if (r != 1) break; } } main();