|
|
@ -19,10 +19,12 @@ Click nbfs://nbhost/SystemFileSystem/Templates/Other/html.html to edit this temp
|
|
|
|
<label id="playerPoints"></label><br>
|
|
|
|
<label id="playerPoints"></label><br>
|
|
|
|
<label id="playerCards"></label><br>
|
|
|
|
<label id="playerCards"></label><br>
|
|
|
|
<label id="cardsInPlay"></label>
|
|
|
|
<label id="cardsInPlay"></label>
|
|
|
|
|
|
|
|
<label id="winAnnounce"></label><br>
|
|
|
|
<input type="button" id="startButton" onclick="startGame()" value="Start Game">
|
|
|
|
<input type="button" id="startButton" onclick="startGame()" value="Start Game">
|
|
|
|
<input type="button" id="continueButton" onclick="draw()" value="Continue Round">
|
|
|
|
<input type="button" id="continueButton" onclick="draw()" value="Continue Round">
|
|
|
|
<input type="button" id="endButton" onclick="endRound()" value="End Round">
|
|
|
|
<input type="button" id="endButton" onclick="endRound()" value="End Round">
|
|
|
|
<script>
|
|
|
|
<script>
|
|
|
|
|
|
|
|
var timesLooped = 0;
|
|
|
|
var cpuPoints = 0, playerPoints = 0;
|
|
|
|
var cpuPoints = 0, playerPoints = 0;
|
|
|
|
var cpuCards = 0, playerCards = 0;
|
|
|
|
var cpuCards = 0, playerCards = 0;
|
|
|
|
var totalCpuPoints = 0, totalPlayerPoints = 0;
|
|
|
|
var totalCpuPoints = 0, totalPlayerPoints = 0;
|
|
|
@ -30,48 +32,50 @@ Click nbfs://nbhost/SystemFileSystem/Templates/Other/html.html to edit this temp
|
|
|
|
playerTimesWon = 0;
|
|
|
|
playerTimesWon = 0;
|
|
|
|
var isStarted = false;
|
|
|
|
var isStarted = false;
|
|
|
|
// Card array. This will allow us to remember if a card is in play.
|
|
|
|
// Card array. This will allow us to remember if a card is in play.
|
|
|
|
var rows = 12;
|
|
|
|
var rows = 13;
|
|
|
|
var cols = 3;
|
|
|
|
var cols = 3;
|
|
|
|
var cardArray = Array.from({length: rows}, () =>
|
|
|
|
var cardArray = Array.from({length: rows}, () =>
|
|
|
|
Array.from({length: cols}, () => false)
|
|
|
|
Array.from({length: cols}, () => [0, 0, false])
|
|
|
|
);
|
|
|
|
);
|
|
|
|
hiddenCard.hidden = true;
|
|
|
|
hiddenCard.hidden = true;
|
|
|
|
continueButton.hidden = true;
|
|
|
|
continueButton.hidden = true;
|
|
|
|
endButton.hidden = true;
|
|
|
|
endButton.hidden = true;
|
|
|
|
|
|
|
|
cardsInPlay.hidden = true;
|
|
|
|
function checkEntireArray() {
|
|
|
|
function checkEntireArray() {
|
|
|
|
var numOfBools = (cardArray.length * cardArray[0].length);
|
|
|
|
var numOfBools = (cardArray.length * cardArray[0].length);
|
|
|
|
console.log("Number of bools: " + numOfBools);
|
|
|
|
//console.log("Number of bools: " + numOfBools);
|
|
|
|
var trueCount = 0;
|
|
|
|
var trueCount = 0;
|
|
|
|
var returnBool = false;
|
|
|
|
var returnBool = false;
|
|
|
|
for (let i = 0; i < cardArray.length; i++) {
|
|
|
|
for (let i = 0; i < cardArray.length; i++) {
|
|
|
|
for (let j = 0; j < cardArray[i].length; j++) {
|
|
|
|
for (let j = 0; j < cardArray[i].length; j++) {
|
|
|
|
if (cardArray[i][j]) {
|
|
|
|
if (cardArray[i][j][2]) {
|
|
|
|
trueCount++;
|
|
|
|
trueCount++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
console.log("Number of bools set to true: " + trueCount);
|
|
|
|
//console.log("Number of bools set to true: " + trueCount);
|
|
|
|
if (trueCount == numOfBools) {
|
|
|
|
if (trueCount == numOfBools) {
|
|
|
|
returnBool = true;
|
|
|
|
returnBool = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return returnBool;
|
|
|
|
return returnBool;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function getCardNumber() {
|
|
|
|
function getCardNumber() {
|
|
|
|
|
|
|
|
console.log("Times looped " + ++timesLooped);
|
|
|
|
let exitLoop = false;
|
|
|
|
let exitLoop = false;
|
|
|
|
let cardNumber = 0; //prompt("Card Number:");
|
|
|
|
let cardNumber = 0; //prompt("Card Number:");
|
|
|
|
let cardType = 0; //prompt("Card Type: ");
|
|
|
|
let cardType = 0; //prompt("Card Type: ");
|
|
|
|
do {
|
|
|
|
do {
|
|
|
|
console.log(cardType + " " + cardNumber);
|
|
|
|
//console.log(cardType + " " + cardNumber);
|
|
|
|
if (checkEntireArray()) {
|
|
|
|
if (checkEntireArray()) {
|
|
|
|
console.log('Ran out of cards in deck! Breaking!');
|
|
|
|
console.log('Ran out of cards in deck! Breaking!');
|
|
|
|
alert("Cannot draw more cards!");
|
|
|
|
alert("Cannot draw more cards!");
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (!cardArray[cardNumber][cardType]) {
|
|
|
|
if (!cardArray[cardNumber][cardType][2]) {
|
|
|
|
cardArray[cardNumber][cardType] = true;
|
|
|
|
cardArray[cardNumber][cardType] = [cardNumber, cardType, true];
|
|
|
|
exitLoop = true;
|
|
|
|
exitLoop = true;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
cardNumber = Math.trunc((Math.random() * 12));
|
|
|
|
cardNumber = Math.trunc((Math.random() * 13));
|
|
|
|
cardType = Math.trunc((Math.random() * 3));
|
|
|
|
cardType = Math.trunc((Math.random() * 3));
|
|
|
|
console.log("Ran into existing card, generating new numbers! " + cardType + " " + cardNumber);
|
|
|
|
console.log("Ran into existing card, generating new numbers! " + cardType + " " + cardNumber);
|
|
|
|
exitLoop = false;
|
|
|
|
exitLoop = false;
|
|
|
@ -79,6 +83,7 @@ Click nbfs://nbhost/SystemFileSystem/Templates/Other/html.html to edit this temp
|
|
|
|
} while (!exitLoop);
|
|
|
|
} while (!exitLoop);
|
|
|
|
printArray();
|
|
|
|
printArray();
|
|
|
|
checkEntireArray();
|
|
|
|
checkEntireArray();
|
|
|
|
|
|
|
|
console.log(cardType + " " + cardNumber);
|
|
|
|
return [cardNumber, cardType];
|
|
|
|
return [cardNumber, cardType];
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -177,61 +182,72 @@ Click nbfs://nbhost/SystemFileSystem/Templates/Other/html.html to edit this temp
|
|
|
|
document.getElementById("cpuPoints").innerHTML += "Total Points: " + totalCpuPoints;
|
|
|
|
document.getElementById("cpuPoints").innerHTML += "Total Points: " + totalCpuPoints;
|
|
|
|
document.getElementById("cpuGamesWon").innerHTML = "Dealer cards: (times won: " + cpuTimesWon + ")";
|
|
|
|
document.getElementById("cpuGamesWon").innerHTML = "Dealer cards: (times won: " + cpuTimesWon + ")";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function startGame() {
|
|
|
|
function resetArray() {
|
|
|
|
// Dealer and player have two cards.
|
|
|
|
for (let i = 0; i < cardArray.length; i++) {
|
|
|
|
if (!isStarted) {
|
|
|
|
for (let j = 0; j < cardArray[i].length; j++) {
|
|
|
|
document.getElementById("playerCards").innerHTML = "";
|
|
|
|
cardArray[i][j] = [0, 0, false];
|
|
|
|
document.getElementById("cpuCards").innerHTML = "";
|
|
|
|
|
|
|
|
cpuPoints = 0;
|
|
|
|
|
|
|
|
playerPoints = 0;
|
|
|
|
|
|
|
|
var [cardNumber, cardType] = getCardNumber();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
drawCards('cpu', cardNumber, cardType, false);
|
|
|
|
|
|
|
|
cpuPoints += cpuCards;
|
|
|
|
|
|
|
|
drawCards('cpu', 0, 0, true);
|
|
|
|
|
|
|
|
for (let i = 0; i < 2; i++) {
|
|
|
|
|
|
|
|
var [cardNumber, cardType] = getCardNumber();
|
|
|
|
|
|
|
|
drawCards('player', cardNumber, cardType, false);
|
|
|
|
|
|
|
|
playerPoints += playerCards + 1;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
isStarted = true;
|
|
|
|
|
|
|
|
startButton.hidden = true;
|
|
|
|
|
|
|
|
continueButton.hidden = false;
|
|
|
|
|
|
|
|
endButton.hidden = false;
|
|
|
|
|
|
|
|
start.hidden = true;
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
updatePoints();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function draw() {
|
|
|
|
function startGame() {
|
|
|
|
var [cardNumber, cardType] = getCardNumber();
|
|
|
|
resetArray();
|
|
|
|
// if ((playerPoints + cardNumber) < 21)
|
|
|
|
// Dealer and player have two cards.
|
|
|
|
{
|
|
|
|
document.getElementById("winAnnounce").innerHTML = "";
|
|
|
|
drawCards('player', cardNumber, cardType, false);
|
|
|
|
if (!isStarted) {
|
|
|
|
playerPoints += playerCards + 1;
|
|
|
|
document.getElementById("playerCards").innerHTML = "";
|
|
|
|
updatePoints();
|
|
|
|
document.getElementById("cpuCards").innerHTML = "";
|
|
|
|
}
|
|
|
|
cpuPoints = 0;
|
|
|
|
|
|
|
|
playerPoints = 0;
|
|
|
|
|
|
|
|
var [cardNumber, cardType] = getCardNumber();
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
drawCards('cpu', cardNumber, cardType, false);
|
|
|
|
function endRound() {
|
|
|
|
cpuPoints += cpuCards;
|
|
|
|
var [cardNumber, cardType] = getCardNumber();
|
|
|
|
drawCards('cpu', 0, 0, true);
|
|
|
|
drawCards('cpu', cardNumber, cardType, false);
|
|
|
|
for (let i = 0; i < 2; i++) {
|
|
|
|
cpuPoints += cpuCards + 1;
|
|
|
|
var [cardNumber, cardType] = getCardNumber();
|
|
|
|
updatePoints();
|
|
|
|
drawCards('player', cardNumber, cardType, false);
|
|
|
|
startButton.hidden = false;
|
|
|
|
playerPoints += playerCards + 1;
|
|
|
|
continueButton.hidden = true;
|
|
|
|
}
|
|
|
|
endButton.hidden = true
|
|
|
|
isStarted = true;
|
|
|
|
isStarted = false;
|
|
|
|
startButton.hidden = true;
|
|
|
|
// Determine winner
|
|
|
|
continueButton.hidden = false;
|
|
|
|
if (playerPoints <= 21 & (cpuPoints < playerPoints)) {
|
|
|
|
endButton.hidden = false;
|
|
|
|
totalPlayerPoints += playerPoints;
|
|
|
|
start.hidden = true;
|
|
|
|
playerTimesWon++;
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
updatePoints();
|
|
|
|
totalCpuPoints += cpuPoints;
|
|
|
|
}
|
|
|
|
cpuTimesWon++;
|
|
|
|
function draw() {
|
|
|
|
}
|
|
|
|
var [cardNumber, cardType] = getCardNumber();
|
|
|
|
updatePoints();
|
|
|
|
// if ((playerPoints + cardNumber) < 21)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
drawCards('player', cardNumber, cardType, false);
|
|
|
|
|
|
|
|
playerPoints += playerCards + 1;
|
|
|
|
|
|
|
|
updatePoints();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function endRound() {
|
|
|
|
|
|
|
|
var [cardNumber, cardType] = getCardNumber();
|
|
|
|
|
|
|
|
drawCards('cpu', cardNumber, cardType, false);
|
|
|
|
|
|
|
|
cpuPoints += cpuCards + 1;
|
|
|
|
|
|
|
|
updatePoints();
|
|
|
|
|
|
|
|
startButton.hidden = false;
|
|
|
|
|
|
|
|
continueButton.hidden = true;
|
|
|
|
|
|
|
|
endButton.hidden = true
|
|
|
|
|
|
|
|
isStarted = false;
|
|
|
|
|
|
|
|
// Determine winner
|
|
|
|
|
|
|
|
if (playerPoints <= 21 & (cpuPoints < playerPoints)) {
|
|
|
|
|
|
|
|
totalPlayerPoints += playerPoints;
|
|
|
|
|
|
|
|
playerTimesWon++;
|
|
|
|
|
|
|
|
document.getElementById("winAnnounce").innerHTML = "You win!";
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
totalCpuPoints += cpuPoints;
|
|
|
|
|
|
|
|
cpuTimesWon++;
|
|
|
|
|
|
|
|
document.getElementById("winAnnounce").innerHTML = "The dealer wins!";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
updatePoints();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</body>
|
|
|
|
</html>
|
|
|
|
</html>
|
|
|
|