mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-22 07:10:42 -08:00
340 lines
11 KiB
JavaScript
340 lines
11 KiB
JavaScript
// ROULETTE
|
|
//
|
|
// 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 ba = [];
|
|
var ca = [];
|
|
var ta = [];
|
|
var xa = [];
|
|
var aa = [];
|
|
|
|
var numbers = [1, 3, 5, 7, 9, 12, 14, 16, 18, 19, 21, 23, 25, 27, 30, 32, 34, 36];
|
|
|
|
// Main program
|
|
async function main()
|
|
{
|
|
print(tab(32) + "ROULETTE\n");
|
|
print(tab(15) + "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY\n");
|
|
print("\n");
|
|
print("\n");
|
|
print("\n");
|
|
// Roulette
|
|
// David Joslin
|
|
print("WELCOME TO THE ROULETTE TABLE\n");
|
|
print("\n");
|
|
print("DO YOU WANT INSTRUCTIONS");
|
|
str = await input();
|
|
if (str.substr(0, 1) != "N") {
|
|
print("\n");
|
|
print("THIS IS THE BETTING LAYOUT\n");
|
|
print(" (*=RED)\n");
|
|
print("\n");
|
|
print(" 1* 2 3*\n");
|
|
print(" 4 5* 6 \n");
|
|
print(" 7* 8 9*\n");
|
|
print("10 11 12*\n");
|
|
print("---------------\n");
|
|
print("13 14* 15 \n");
|
|
print("16* 17 18*\n");
|
|
print("19* 20 21*\n");
|
|
print("22 23* 24 \n");
|
|
print("---------------\n");
|
|
print("25* 26 27*\n");
|
|
print("28 29 30*\n");
|
|
print("31 32* 33 \n");
|
|
print("34* 35 36*\n");
|
|
print("---------------\n");
|
|
print(" 00 0 \n");
|
|
print("\n");
|
|
print("TYPES OF BETS\n");
|
|
print("\n");
|
|
print("THE NUMBERS 1 TO 36 SIGNIFY A STRAIGHT BET\n");
|
|
print("ON THAT NUMBER.\n");
|
|
print("THESE PAY OFF 35:1\n");
|
|
print("\n");
|
|
print("THE 2:1 BETS ARE:\n");
|
|
print(" 37) 1-12 40) FIRST COLUMN\n");
|
|
print(" 38) 13-24 41) SECOND COLUMN\n");
|
|
print(" 39) 25-36 42) THIRD COLUMN\n");
|
|
print("\n");
|
|
print("THE EVEN MONEY BETS ARE:\n");
|
|
print(" 43) 1-18 46) ODD\n");
|
|
print(" 44) 19-36 47) RED\n");
|
|
print(" 45) EVEN 48) BLACK\n");
|
|
print("\n");
|
|
print(" 49)0 AND 50)00 PAY OFF 35:1\n");
|
|
print(" NOTE: 0 AND 00 DO NOT COUNT UNDER ANY\n");
|
|
print(" BETS EXCEPT THEIR OWN.\n");
|
|
print("\n");
|
|
print("WHEN I ASK FOR EACH BET, TYPE THE NUMBER\n");
|
|
print("AND THE AMOUNT, SEPARATED BY A COMMA.\n");
|
|
print("FOR EXAMPLE: TO BET $500 ON BLACK, TYPE 48,500\n");
|
|
print("WHEN I ASK FOR A BET.\n");
|
|
print("\n");
|
|
print("THE MINIMUM BET IS $5, THE MAXIMUM IS $500.\n");
|
|
print("\n");
|
|
}
|
|
// Program begins here
|
|
// Type of bet(number) odds
|
|
for (i = 1; i <= 100; i++) {
|
|
ba[i] = 0;
|
|
ca[i] = 0;
|
|
ta[i] = 0;
|
|
}
|
|
for (i = 1; i <= 38; i++)
|
|
xa[i] = 0;
|
|
p = 1000;
|
|
d = 100000;
|
|
while (1) {
|
|
do {
|
|
print("HOW MANY BETS");
|
|
y = parseInt(await input());
|
|
} while (y < 1) ;
|
|
for (i = 1; i <= 50; i++) {
|
|
aa[i] = 0;
|
|
}
|
|
for (c = 1; c <= y; c++) {
|
|
while (1) {
|
|
print("NUMBER " + c + " ");
|
|
str = await input();
|
|
x = parseInt(str);
|
|
z = parseInt(str.substr(str.indexOf(",") + 1));
|
|
ba[c] = z;
|
|
ta[c] = x;
|
|
if (x < 1 || x > 50)
|
|
continue;
|
|
if (z < 1)
|
|
continue;
|
|
if (z < 5 || z > 500)
|
|
continue;
|
|
if (aa[x] != 0) {
|
|
print("YOU MADE THAT BET ONCE ALREADY,DUM-DUM\n");
|
|
continue;
|
|
}
|
|
aa[x] = 1;
|
|
break;
|
|
}
|
|
}
|
|
print("SPINNING\n");
|
|
print("\n");
|
|
print("\n");
|
|
do {
|
|
s = Math.floor(Math.random() * 100);
|
|
} while (s == 0 || s > 38) ;
|
|
xa[s]++; // Not used
|
|
if (s > 37) {
|
|
print("00\n");
|
|
} else if (s == 37) {
|
|
print("0\n");
|
|
} else {
|
|
for (i1 = 1; i1 <= 18; i1++) {
|
|
if (s == numbers[i1 - 1])
|
|
break;
|
|
}
|
|
if (i1 <= 18)
|
|
print(s + " RED\n");
|
|
else
|
|
print(s + " BLACK\n");
|
|
}
|
|
print("\n");
|
|
for (c = 1; c <= y; c++) {
|
|
won = 0;
|
|
switch (ta[c]) {
|
|
case 37: // 1-12 (37) 2:1
|
|
if (s > 12) {
|
|
won = -ba[c];
|
|
} else {
|
|
won = ba[c] * 2;
|
|
}
|
|
break;
|
|
case 38: // 13-24 (38) 2:1
|
|
if (s > 12 && s < 25) {
|
|
won = ba[c] * 2;
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
case 39: // 25-36 (39) 2:1
|
|
if (s > 24 && s < 37) {
|
|
won = ba[c] * 2;
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
case 40: // First column (40) 2:1
|
|
if (s < 37 && s % 3 == 1) {
|
|
won = ba[c] * 2;
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
case 41: // Second column (41) 2:1
|
|
if (s < 37 && s % 3 == 2) {
|
|
won = ba[c] * 2;
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
case 42: // Third column (42) 2:1
|
|
if (s < 37 && s % 3 == 0) {
|
|
won = ba[c] * 2;
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
case 43: // 1-18 (43) 1:1
|
|
if (s < 19) {
|
|
won = ba[c];
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
case 44: // 19-36 (44) 1:1
|
|
if (s > 18 && s < 37) {
|
|
won = ba[c];
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
case 45: // Even (45) 1:1
|
|
if (s < 37 && s % 2 == 0) {
|
|
won = ba[c];
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
case 46: // Odd (46) 1:1
|
|
if (s < 37 && s % 2 != 0) {
|
|
won = ba[c];
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
case 47: // Red (47) 1:1
|
|
for (i = 1; i <= 18; i++) {
|
|
if (s == numbers[i - 1])
|
|
break;
|
|
}
|
|
if (i <= 18) {
|
|
won = ba[c];
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
case 48: // Black (48) 1:1
|
|
for (i = 1; i <= 18; i++) {
|
|
if (s == numbers[i - 1])
|
|
break;
|
|
}
|
|
if (i <= 18 || s > 36) {
|
|
won = -ba[c];
|
|
} else {
|
|
won = ba[c];
|
|
}
|
|
break;
|
|
default: // 1-36,0,00 (1-36,49,50) 35:1
|
|
if (ta[c] < 49 && ta[c] == s
|
|
|| ta[c] == 49 && s == 37
|
|
|| ta[c] == 50 && s == 38) {
|
|
won = ba[c] * 35;
|
|
} else {
|
|
won = -ba[c];
|
|
}
|
|
break;
|
|
}
|
|
d -= won;
|
|
p += won;
|
|
if (won < 0) {
|
|
print("YOU LOSE " + -won + " DOLLARS ON BET " + c + "\n");
|
|
} else {
|
|
print("YOU WIN " + won + " DOLLARS ON BET " + c + "\n");
|
|
}
|
|
}
|
|
print("\n");
|
|
print("TOTALS:\tME\tYOU\n");
|
|
print(" \t" + d + "\t" + p + "\n");
|
|
if (p <= 0) {
|
|
print("OOPS! YOU JUST SPENT YOUR LAST DOLLAR!\n");
|
|
break;
|
|
} else if (d <= 0) {
|
|
print("YOU BROKE THE HOUSE!\n");
|
|
p = 101000;
|
|
}
|
|
print("AGAIN");
|
|
str = await input();
|
|
if (str.substr(0, 1) != "Y")
|
|
break;
|
|
}
|
|
if (p < 1) {
|
|
print("THANKS FOR YOUR MONEY.\n");
|
|
print("I'LL USE IT TO BUY A SOLID GOLD ROULETTE WHEEL\n");
|
|
} else {
|
|
print("TO WHOM SHALL I MAKE THE CHECK");
|
|
str = await input();
|
|
print("\n");
|
|
for (i = 1; i <= 72; i++)
|
|
print("-");
|
|
print("\n");
|
|
print(tab(50) + "CHECK NO. " + Math.floor(Math.random() * 100) + "\n");
|
|
print("\n");
|
|
print(tab(40) + new Date().toDateString());
|
|
print("\n");
|
|
print("\n");
|
|
print("PAY TO THE ORDER OF-----" + str + "-----$ " + p + "\n");
|
|
print("\n");
|
|
print("\n");
|
|
print(tab(10) + "\tTHE MEMORY BANK OF NEW YORK\n");
|
|
print("\n");
|
|
print(tab(40) + "\tTHE COMPUTER\n");
|
|
print(tab(40) + "----------X-----\n");
|
|
print("\n");
|
|
for (i = 1; i <= 72; i++)
|
|
print("-");
|
|
print("\n");
|
|
print("COME BACK SOON!\n");
|
|
}
|
|
print("\n");
|
|
}
|
|
|
|
main();
|