Files
basic-computer-games/44 Hangman/javascript/hangman.js
2021-02-27 21:48:52 -06:00

267 lines
8.6 KiB
JavaScript

// HANGMAN
//
// 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(32) + "HANGMAN\n");
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
print("\n");
print("\n");
print("\n");
var pa = [];
var la = [];
var da = [];
var na = [];
var ua = [];
var words = ["GUM","SIN","FOR","CRY","LUG","BYE","FLY",
"UGLY","EACH","FROM","WORK","TALK","WITH","SELF",
"PIZZA","THING","FEIGN","FIEND","ELBOW","FAULT","DIRTY",
"BUDGET","SPIRIT","QUAINT","MAIDEN","ESCORT","PICKAX",
"EXAMPLE","TENSION","QUININE","KIDNEY","REPLICA","SLEEPER",
"TRIANGLE","KANGAROO","MAHOGANY","SERGEANT","SEQUENCE",
"MOUSTACHE","DANGEROUS","SCIENTIST","DIFFERENT","QUIESCENT",
"MAGISTRATE","ERRONEOUSLY","LOUDSPEAKER","PHYTOTOXIC",
"MATRIMONIAL","PARASYMPATHOMIMETIC","THIGMOTROPISM"];
// Main control section
async function main()
{
c = 1;
n = 50;
while (1) {
for (i = 1; i <= 20; i++)
da[i] = "-";
for (i = 1; i <= n; i++)
ua[i] = 0;
m = 0;
ns = "";
for (i = 1; i <= 12; i++) {
pa[i] = [];
for (j = 1; j <= 12; j++) {
pa[i][j] = " ";
}
}
for (i = 1; i <= 12; i++) {
pa[i][1] = "X";
}
for (i = 1; i <= 7; i++) {
pa[1][i] = "X";
}
pa[2][7] = "X";
if (c >= n) {
print("YOU DID ALL THE WORDS!!\n");
break;
}
do {
q = Math.floor(n * Math.random()) + 1;
} while (ua[q] == 1) ;
ua[q] = 1;
c++;
t1 = 0;
as = words[q - 1];
l = as.length;
for (i = 1; i <= as.length; i++)
la[i] = as[i - 1];
while (1) {
while (1) {
print("HERE ARE THE LETTERS YOU USED:\n");
print(ns + "\n");
print("\n");
for (i = 1; i <= l; i++) {
print(da[i]);
}
print("\n");
print("\n");
print("WHAT IS YOUR GUESS");
str = await input();
if (ns.indexOf(str) != -1) {
print("YOU GUESSED THAT LETTER BEFORE!\n");
} else {
break;
}
}
ns += str;
t1++;
r = 0;
for (i = 1; i <= l; i++) {
if (la[i] == str) {
da[i] = str;
r++;
}
}
if (r == 0) {
m++;
print("\n");
print("\n");
print("SORRY, THAT LETTER ISN'T IN THE WORD.\n");
switch (m) {
case 1:
print("FIRST, WE DRAW A HEAD\n");
break;
case 2:
print("NOW WE DRAW A BODY.\n");
break;
case 3:
print("NEXT WE DRAW AN ARM.\n");
break;
case 4:
print("THIS TIME IT'S THE OTHER ARM.\n");
break;
case 5:
print("NOW, LET'S DRAW THE RIGHT LEG.\n");
break;
case 6:
print("THIS TIME WE DRAW THE LEFT LEG.\n");
break;
case 7:
print("NOW WE PUT UP A HAND.\n");
break;
case 8:
print("NEXT THE OTHER HAND.\n");
break;
case 9:
print("NOW WE DRAW ONE FOOT.\n");
break;
case 10:
print("HERE'S THE OTHER FOOT -- YOU'RE HUNG!!\n");
break;
}
switch (m) {
case 1:
pa[3][6] = "-";
pa[3][7] = "-";
pa[3][8] = "-";
pa[4][5] = "(";
pa[4][6] = ".";
pa[4][8] = ".";
pa[4][9] = ")";
pa[5][6] = "-";
pa[5][7] = "-";
pa[5][8] = "-";
break;
case 2:
for (i = 6; i <= 9; i++)
pa[i][7] = "X";
break;
case 3:
for (i = 4; i <= 7; i++)
pa[i][i - 1] = "\\";
break;
case 4:
pa[4][11] = "/";
pa[5][10] = "/";
pa[6][9] = "/";
pa[7][8] = "/";
break;
case 5:
pa[10][6] = "/";
pa[11][5] = "/";
break;
case 6:
pa[10][8] = "\\";
pa[11][9] = "\\";
break;
case 7:
pa[3][11] = "\\";
break;
case 8:
pa[3][3] = "/";
break;
case 9:
pa[12][10] = "\\";
pa[12][11] = "-";
break;
case 10:
pa[12][3] = "-";
pa[12][4] = "/";
break;
}
for (i = 1; i <= 12; i++) {
str = "";
for (j = 1; j <= 12; j++)
str += pa[i][j];
print(str + "\n");
}
print("\n");
print("\n");
if (m == 10) {
print("SORRY, YOU LOSE. THE WORD WAS " + as + "\n");
print("YOU MISSED THAT ONE. DO YOU ");
break;
}
} else {
for (i = 1; i <= l; i++)
if (da[i] == "-")
break;
if (i > l) {
print("YOU FOUND THE WORD!\n");
break;
}
print("\n");
for (i = 1; i <= l; i++)
print(da[i]);
print("\n");
print("\n");
print("WHAT IS YOUR GUESS FOR THE WORD");
bs = await input();
if (as == bs) {
print("RIGHT!! IT TOOK YOU " + t1 + " GUESSES!\n");
break;
}
print("WRONG. TRY ANOTHER LETTER.\n");
print("\n");
}
}
print("WANT ANOTHER WORD");
str = await input();
if (str != "YES")
break;
}
print("\n");
print("IT'S BEEN FUN! BYE FOR NOW.\n");
// Lines 620 and 990 unused in original
}
main();