mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-22 07:10:42 -08:00
Removed spaces from top-level directory names.
Spaces tend to cause annoyances in a Unix-style shell environment. This change fixes that.
This commit is contained in:
209
56_Life_for_Two/javascript/lifefortwo.js
Normal file
209
56_Life_for_Two/javascript/lifefortwo.js
Normal file
@@ -0,0 +1,209 @@
|
||||
// LIFE FOR TWO
|
||||
//
|
||||
// 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 na = [];
|
||||
var ka = [, 3,102,103,120,130,121,112,111,12,
|
||||
21,30,1020,1030,1011,1021,1003,1002,1012];
|
||||
var aa = [,-1,0,1,0,0,-1,0,1,-1,-1,1,-1,-1,1,1,1];
|
||||
var xa = [];
|
||||
var ya = [];
|
||||
var j;
|
||||
var k;
|
||||
var m2;
|
||||
var m3;
|
||||
|
||||
function show_data()
|
||||
{
|
||||
k = 0;
|
||||
m2 = 0;
|
||||
m3 = 0;
|
||||
for (j = 0; j <= 6; j++) {
|
||||
print("\n");
|
||||
for (k = 0; k <= 6; k++) {
|
||||
if (j == 0 || j == 6) {
|
||||
if (k == 6)
|
||||
print(" 0 ");
|
||||
else
|
||||
print(" " + k + " ");
|
||||
} else if (k == 0 || k == 6) {
|
||||
if (j == 6)
|
||||
print(" 0\n");
|
||||
else
|
||||
print(" " + j + " ");
|
||||
} else {
|
||||
if (na[j][k] >= 3) {
|
||||
for (o1 = 1; o1 <= 18; o1++) {
|
||||
if (na[j][k] == ka[o1])
|
||||
break;
|
||||
}
|
||||
if (o1 <= 18) {
|
||||
if (o1 <= 9) {
|
||||
na[j][k] = 100;
|
||||
m2++;
|
||||
print(" * ");
|
||||
} else {
|
||||
na[j][k] = 1000;
|
||||
m3++;
|
||||
print(" # ");
|
||||
}
|
||||
} else {
|
||||
na[j][k] = 0;
|
||||
print(" ");
|
||||
}
|
||||
} else {
|
||||
na[j][k] = 0;
|
||||
print(" ");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function process_board()
|
||||
{
|
||||
for (j = 1; j <= 5; j++) {
|
||||
for (k = 1; k <= 5; k++) {
|
||||
if (na[j][k] > 99) {
|
||||
b = 1;
|
||||
if (na[j][k] > 999)
|
||||
b = 10;
|
||||
for (o1 = 1; o1 <= 15; o1 += 2) {
|
||||
na[j + aa[o1]][k + aa[o1 + 1]] = na[j + aa[o1]][k + aa[o1 + 1]] + b;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
show_data();
|
||||
}
|
||||
|
||||
// Main program
|
||||
async function main()
|
||||
{
|
||||
print(tab(33) + "LIFE2\n");
|
||||
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
|
||||
print("\n");
|
||||
print("\n");
|
||||
print("\n");
|
||||
print(tab(10) + "U.B. LIFE GAME\n");
|
||||
m2 = 0;
|
||||
m3 = 0;
|
||||
for (j = 0; j <= 6; j++) {
|
||||
na[j] = [];
|
||||
for (k = 0; k <= 6; k++)
|
||||
na[j][k] = 0;
|
||||
}
|
||||
for (b = 1; b <= 2; b++) {
|
||||
p1 = (b == 2) ? 30 : 3;
|
||||
print("\n");
|
||||
print("PLAYER " + b + " - 3 LIVE PIECES.\n");
|
||||
for (k1 = 1; k1 <= 3; k1++) {
|
||||
while (1) {
|
||||
print("X,Y\n");
|
||||
str = await input();
|
||||
ya[b] = parseInt(str);
|
||||
xa[b] = parseInt(str.substr(str.indexOf(",") + 1));
|
||||
if (xa[b] > 0 && xa[b] < 6 && ya[b] > 0 && ya[b] < 5 && na[xa[b]][ya[b]] == 0)
|
||||
break;
|
||||
print("ILLEGAL COORDS. RETYPE\n");
|
||||
}
|
||||
if (b != 1) {
|
||||
if (xa[1] == xa[2] && ya[1] == ya[2]) {
|
||||
print("SAME COORD. SET TO 0\n");
|
||||
na[xa[b] + 1][ya[b] + 1] = 0;
|
||||
b = 99;
|
||||
}
|
||||
}
|
||||
na[xa[b]][ya[b]] = p1;
|
||||
}
|
||||
}
|
||||
show_data();
|
||||
while (1) {
|
||||
print("\n");
|
||||
process_board();
|
||||
if (m2 == 0 && m3 == 0) {
|
||||
print("\n");
|
||||
print("A DRAW\n");
|
||||
break;
|
||||
}
|
||||
if (m3 == 0) {
|
||||
print("\n");
|
||||
print("PLAYER 1 IS THE WINNER\n");
|
||||
break;
|
||||
}
|
||||
if (m2 == 0) {
|
||||
print("\n");
|
||||
print("PLAYER 2 IS THE WINNER\n");
|
||||
break;
|
||||
}
|
||||
for (b = 1; b <= 2; b++) {
|
||||
print("\n");
|
||||
print("\n");
|
||||
print("PLAYER " + b + " ");
|
||||
while (1) {
|
||||
print("X,Y\n");
|
||||
str = await input();
|
||||
ya[b] = parseInt(str);
|
||||
xa[b] = parseInt(str.substr(str.indexOf(",") + 1));
|
||||
if (xa[b] > 0 && xa[b] < 6 && ya[b] > 0 && ya[b] < 5 && na[xa[b]][ya[b]] == 0)
|
||||
break;
|
||||
print("ILLEGAL COORDS. RETYPE\n");
|
||||
}
|
||||
if (b != 1) {
|
||||
if (xa[1] == xa[2] && ya[1] == ya[2]) {
|
||||
print("SAME COORD. SET TO 0\n");
|
||||
na[xa[b] + 1][ya[b] + 1] = 0;
|
||||
b = 99;
|
||||
}
|
||||
}
|
||||
if (b == 99)
|
||||
break;
|
||||
}
|
||||
if (b <= 2) {
|
||||
na[x[1]][y[1]] = 100;
|
||||
na[x[2]][y[2]] = 1000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
main();
|
||||
Reference in New Issue
Block a user