Ported HURKLE, KINEMA, LETTER, LITQUIZ, LOVE, and MATHDICE to Javascript

This commit is contained in:
nanochess
2021-03-01 16:30:23 -06:00
parent 3a1f61737c
commit 8727dfff29
13 changed files with 680 additions and 1 deletions

View File

@@ -0,0 +1,9 @@
<html>
<head>
<title>HURKLE</title>
</head>
<body>
<pre id="output" style="font-size: 12pt;"></pre>
<script src="hurkle.js"></script>
</body>
</html>

View File

@@ -0,0 +1,102 @@
// BATNUM
//
// 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) + "HURKLE\n");
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
print("\n");
print("\n");
print("\n");
n = 5;
g = 10;
print("\n");
print("A HURKLE IS HIDING ON A " + g + " BY " + g + " GRID. HOMEBASE\n");
print("ON THE GRID IS POINT 0,0 IN THE SOUTHWEST CORNER,\n");
print("AND ANY POINT ON THE GRID IS DESIGNATED BY A\n");
print("PAIR OF WHOLE NUMBERS SEPERATED BY A COMMA. THE FIRST\n");
print("NUMBER IS THE HORIZONTAL POSITION AND THE SECOND NUMBER\n");
print("IS THE VERTICAL POSITION. YOU MUST TRY TO\n");
print("GUESS THE HURKLE'S GRIDPOINT. YOU GET " + n + " TRIES.\n");
print("AFTER EACH TRY, I WILL TELL YOU THE APPROXIMATE\n");
print("DIRECTION TO GO TO LOOK FOR THE HURKLE.\n");
print("\n");
while (1) {
a = Math.floor(g * Math.random());
b = Math.floor(g * Math.random());
for (k = 1; k <= n; k++) {
print("GUESS #" + k + " ");
str = await input();
x = parseInt(str);
y = parseInt(str.substr(str.indexOf(",") + 1));
if (x == a && y == b) {
print("\n");
print("YOU FOUND HIM IN " + k + " GUESSES!\n");
break;
}
print("GO ");
if (y < b) {
print("NORTH");
} else if (y > b) {
print("SOUTH");
}
if (x < a) {
print("EAST\n");
} else {
print("WEST\n");
}
}
if (k > n) {
print("\n");
print("SORRY, THAT'S " + n + " GUESSES.\n");
print("THE HURKLE IS AT " + a + "," + b + "\n");
}
print("\n");
print("LET'S PLAY AGAIN, HURKLE IS HIDING.\n");
print("\n");
}
}
main();

View File

@@ -0,0 +1,9 @@
<html>
<head>
<title>KINEMA</title>
</head>
<body>
<pre id="output" style="font-size: 12pt;"></pre>
<script src="kinema.js"></script>
</body>
</html>

View File

@@ -0,0 +1,95 @@
// KINEMA
//
// 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 q;
function evaluate_answer(str, a)
{
g = parseFloat(str);
if (Math.abs((g - a) / a) < 0.15) {
print("CLOSE ENOUGH.\n");
q++;
} else {
print("NOT EVEN CLOSE....\n");
}
print("CORRECT ANSWER IS " + a + "\n\n");
}
// Main program
async function main()
{
print(tab(33) + "KINEMA\n");
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
print("\n");
print("\n");
print("\n");
while (1) {
print("\n");
print("\n");
q = 0;
v = 5 + Math.floor(35 * Math.random());
print("A BALL IS THROWN UPWARDS AT " + v + " METERS PER SECOND.\n");
print("\n");
a = 0.5 * Math.pow(v, 2);
print("HOW HIGH WILL IT GO (IN METERS)");
str = await input();
evaluate_answer(str, a);
a = v / 5;
print("HOW LONG UNTIL IT RETURNS (IN SECONDS)");
str = await input();
evaluate_answer(str, a);
t = 1 + Math.floor(2 * v * Math.random()) / 10;
a = v - 10 * t;
print("WHAT WILL ITS VELOCITY BE AFTER " + t + " SECONDS");
str = await input();
evaluate_answer(str, a);
print("\n");
print(q + " RIGHT OUT OF 3.");
if (q < 2)
continue;
print(" NOT BAD.\n");
}
}
main();

View File

@@ -0,0 +1,9 @@
<html>
<head>
<title>LETTER</title>
</head>
<body>
<pre id="output" style="font-size: 12pt;"></pre>
<script src="letter.js"></script>
</body>
</html>

View File

@@ -0,0 +1,91 @@
// LETTER
//
// 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) + "LETTER\n");
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
print("\n");
print("\n");
print("\n");
print("LETTER GUESSING GAME\n");
print("\n");
print("I'LL THINK OF A LETTER OF THE ALPHABET, A TO Z.\n");
print("TRY TO GUESS MY LETTER AND I'LL GIVE YOU CLUES\n");
print("AS TO HOW CLOSE YOU'RE GETTING TO MY LETTER.\n");
while (1) {
l = 65 + Math.floor(26 * Math.random());
g = 0;
print("\n");
print("O.K., I HAVE A LETTER. START GUESSING.\n");
while (1) {
print("\n");
print("WHAT IS YOUR GUESS");
g++;
str = await input();
a = str.charCodeAt(0);
print("\n");
if (a == l)
break;
if (a < l) {
print("TOO LOW. TRY A HIGHER LETTER.\n");
} else {
print("TOO HIGH. TRY A LOWER LETTER.\n");
}
}
print("\n");
print("YOU GOT IT IN " + g + " GUESSES!!\n");
if (g > 5) {
print("BUT IT SHOULDN'T TAKE MORE THAN 5 GUESSES!\n");
} else {
print("GOOD JOB !!!!!\n");
}
print("\n");
print("LET'S PLAY AGAIN.....");
}
}
main();

View File

@@ -0,0 +1,9 @@
<html>
<head>
<title>LITERATURE QUIZ</title>
</head>
<body>
<pre id="output" style="font-size: 12pt;"></pre>
<script src="litquiz.js"></script>
</body>
</html>

View File

@@ -0,0 +1,119 @@
// LITQUIZ
//
// 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(25) + "LITERATURE QUIZ\n");
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
print("\n");
print("\n");
print("\n");
r = 0;
print("TEST YOUR KNOWLEDGE OF CHILDREN'S LITERATURE.\n");
print("\n");
print("THIS IS A MULTIPLE-CHOICE QUIZ.\n");
print("TYPE A 1, 2, 3, OR 4 AFTER THE QUESTION MARK.\n");
print("\n");
print("GOOD LUCK!\n");
print("\n");
print("\n");
print("IN PINOCCHIO, WHAT WAS THE NAME OF THE CAT\n");
print("1)TIGGER, 2)CICERO, 3)FIGARO, 4)GUIPETTO\n");
a = parseInt(await input());
if (a == 3) {
print("VERY GOOD! HERE'S ANOTHER.\n");
r++;
} else {
print("SORRY...FIGARO WAS HIS NAME.\n");
}
print("\n");
print("\n");
print("FROM WHOSE GARDEN DID BUGS BUNNY STEAL THE CARROTS?\n");
print("1)MR. NIXON'S, 2)ELMER FUDD'S, 3)CLEM JUDD'S, 4)STROMBOLI'S\n");
a = parseInt(await input());
if (a == 2) {
print("PRETTY GOOD!\n");
r++;
} else {
print("TOO BAD...IT WAS ELMER FUDD'S GARDEN.\n");
}
print("\n");
print("\n");
print("IN THE WIZARD OF OS, DOROTHY'S DOG WAS NAMED\n");
print("1)CICERO, 2)TRIXIA, 3)KING, 4)TOTO\n");
a = parseInt(await input());
if (a == 4) {
print("YEA! YOU'RE A REAL LITERATURE GIANT.\n");
r++;
} else {
print("BACK TO THE BOOKS,...TOTO WAS HIS NAME.\n");
}
print("\n");
print("\n");
print("WHO WAS THE FAIR MAIDEN WHO ATE THE POISON APPLE\n");
print("1)SLEEPING BEAUTY, 2)CINDERELLA, 3)SNOW WHITE, 4)WENDY\n");
a = parseInt(await input());
if (a == 3) {
print("GOOD MEMORY!\n");
r++;
} else {
print("OH, COME ON NOW...IT WAS SNOW WHITE.\n");
}
print("\n");
print("\n");
if (r == 4) {
print("WOW! THAT'S SUPER! YOU REALLY KNOW YOUR NURSERY\n");
print("YOUR NEXT QUIZ WILL BE ON 2ND CENTURY CHINESE\n");
print("LITERATURE (HA, HA, HA)\n");
} else if (r < 2) {
print("UGH. THAT WAS DEFINITELY NOT TOO SWIFT. BACK TO\n");
print("NURSERY SCHOOL FOR YOU, MY FRIEND.\n");
} else {
print("NOT BAD, BUT YOU MIGHT SPEND A LITTLE MORE TIME\n");
print("READING THE NURSERY GREATS.\n");
}
}
main();

View File

@@ -0,0 +1,9 @@
<html>
<head>
<title>LOVE</title>
</head>
<body>
<pre id="output" style="font-size: 12pt;"></pre>
<script src="love.js"></script>
</body>
</html>

105
58 Love/javascript/love.js Normal file
View File

@@ -0,0 +1,105 @@
// LOVE
//
// 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 data = [60,1,12,26,9,12,3,8,24,17,8,4,6,23,21,6,4,6,22,12,5,6,5,
4,6,21,11,8,6,4,4,6,21,10,10,5,4,4,6,21,9,11,5,4,
4,6,21,8,11,6,4,4,6,21,7,11,7,4,4,6,21,6,11,8,4,
4,6,19,1,1,5,11,9,4,4,6,19,1,1,5,10,10,4,4,6,18,2,1,6,8,11,4,
4,6,17,3,1,7,5,13,4,4,6,15,5,2,23,5,1,29,5,17,8,
1,29,9,9,12,1,13,5,40,1,1,13,5,40,1,4,6,13,3,10,6,12,5,1,
5,6,11,3,11,6,14,3,1,5,6,11,3,11,6,15,2,1,
6,6,9,3,12,6,16,1,1,6,6,9,3,12,6,7,1,10,
7,6,7,3,13,6,6,2,10,7,6,7,3,13,14,10,8,6,5,3,14,6,6,2,10,
8,6,5,3,14,6,7,1,10,9,6,3,3,15,6,16,1,1,
9,6,3,3,15,6,15,2,1,10,6,1,3,16,6,14,3,1,10,10,16,6,12,5,1,
11,8,13,27,1,11,8,13,27,1,60];
// Main program
async function main()
{
print(tab(33) + "LOVE\n");
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
print("\n");
print("\n");
print("\n");
print("A TRIBUTE TO THE GREAT AMERICAN ARTIST, ROBERT INDIANA.\n");
print("HIS GREATEST WORK WILL BE REPRODUCED WITH A MESSAGE OF\n");
print("YOUR CHOICE UP TO 60 CHARACTERS. IF YOU CAN'T THINK OF\n");
print("A MESSAGE, SIMPLE TYPE THE WORD 'LOVE'\n");
print("\n");
print("YOUR MESSAGE, PLEASE");
str = await input();
l = str.length;
ts = [];
for (i = 1; i <= 10; i++)
print("\n");
ts = "";
do {
ts += str;
} while (ts.length < 60) ;
pos = 0;
c = 0;
while (++c < 37) {
a1 = 1;
p = 1;
print("\n");
do {
a = data[pos++];
a1 += a;
if (p != 1) {
for (i = 1; i <= a; i++)
print(" ");
p = 1;
} else {
for (i = a1 - a; i <= a1 - 1; i++)
print(ts[i]);
p = 0;
}
} while (a1 <= 60) ;
}
for (i = 1; i <= 10; i++)
print("\n");
}
main();

View File

@@ -0,0 +1,9 @@
<html>
<head>
<title>MATH DICE</title>
</head>
<body>
<pre id="output" style="font-size: 12pt;"></pre>
<script src="mathdice.js"></script>
</body>
</html>

View File

@@ -0,0 +1,113 @@
// MATH DICE
//
// 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(31) + "MATH DICE\n");
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
print("\n");
print("\n");
print("\n");
print("THIS PROGRAM GENERATES SUCCESSIVE PICTURES OF TWO DICE.\n");
print("WHEN TWO DICE AND AN EQUAL SIGN FOLLOWED BY A QUESTION\n");
print("MARK HAVE BEEN PRINTED, TYPE YOUR ANSWER AND THE RETURN KEY.\n"),
print("TO CONCLUDE THE LESSON, TYPE ZERO AS YOUR ANSWER.\n");
print("\n");
print("\n");
n = 0;
while (1) {
n++;
d = Math.floor(6 * Math.random() + 1);
print(" ----- \n");
if (d == 1)
print("I I\n");
else if (d == 2 || d == 3)
print("I * I\n");
else
print("I * * I\n");
if (d == 2 || d == 4)
print("I I\n");
else if (d == 6)
print("I * * I\n");
else
print("I * I\n");
if (d == 1)
print("I I\n");
else if (d == 2 || d == 3)
print("I * I\n");
else
print("I * * I\n");
print(" ----- \n");
print("\n");
if (n != 2) {
print(" +\n");
print("\n");
a = d;
continue;
}
t = d + a;
print(" =");
t1 = parseInt(await input());
if (t1 == 0)
break;
if (t1 != t) {
print("NO, COUNT THE SPOTS AND GIVE ANOTHER ANSWER.\n");
print(" =");
t1 = parseInt(await input());
if (t1 != t) {
print("NO, THE ANSWER IS " + t + "\n");
}
}
if (t1 == t) {
print("RIGHT!\n");
}
print("\n");
print("THE DICE ROLL AGAIN...\n");
print("\n");
n = 0;
}
}
main();

View File

@@ -1,7 +1,7 @@
10 PRINT TAB(31);"MATH DICE"
20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
30 PRINT:PRINT:PRINT
40 PRINT "THIS PROGRAM GENERATES SUCCESIVE PICTURES OF TWO DICE."
40 PRINT "THIS PROGRAM GENERATES SUCCESSIVE PICTURES OF TWO DICE."
50 PRINT "WHEN TWO DICE AND AN EQUAL SIGN FOLLOWED BY A QUESTION"
60 PRINT "MARK HAVE BEEN PRINTED, TYPE YOUR ANSWER AND THE RETURN KEY."
70 PRINT "TO CONCLUDE THE LESSON, TYPE CONTROL-C AS YOUR ANSWER."