master
Caleb Fontenot 2023-03-28 14:27:45 +07:00
parent 374542dc20
commit e6549f9343
78 changed files with 430 additions and 0 deletions

1
.gitignore vendored

@ -25,3 +25,4 @@
/Assignments/JavaScript/lab14js_CalebFontenot/nbproject/private/
>>>>>>> Stashed changes
/Assignments/JavaScript/lab15js_CalebFontenot/nbproject/private/
/Assignments/JavaScript/MP11_CalebFontenot/nbproject/private/

@ -0,0 +1,3 @@
{
"directory": "public_html/bower_components"
}

@ -0,0 +1,9 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/ClientSide/Gruntfile.js to edit this template
*/
module.exports = function (grunt) {
// Project configuration.
grunt.initConfig({
});
};

@ -0,0 +1,13 @@
{
"name": "MP11_CalebFontenot",
"version": "1.0.0",
"main": "path/to/main.css",
"ignore": [
".jshintrc",
"**/*.txt"
],
"dependencies": {
},
"devDependencies": {
}
}

@ -0,0 +1,10 @@
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/ClientSide/gulpfile.js to edit this template
*/
var gulp = require('gulp');
gulp.task('default', function () {
// place code for your default task here
});

@ -0,0 +1,5 @@
file.reference.MP11_CalebFontenot-public_html=public_html
file.reference.MP11_CalebFontenot-test=test
files.encoding=UTF-8
site.root.folder=${file.reference.MP11_CalebFontenot-public_html}
test.folder=${file.reference.MP11_CalebFontenot-test}

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://www.netbeans.org/ns/project/1">
<type>org.netbeans.modules.web.clientproject</type>
<configuration>
<data xmlns="http://www.netbeans.org/ns/clientside-project/1">
<name>MP11_CalebFontenot</name>
</data>
</configuration>
</project>

@ -0,0 +1,8 @@
{
"name": "MP11_CalebFontenot",
"version": "1.0.0",
"keywords": ["util", "functional", "server", "client", "browser"],
"author": "caleb",
"contributors": [],
"dependencies": {}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 273 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 238 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

@ -0,0 +1,135 @@
body {
background-color: #000040;
background-image: url(background.gif);
color: #88ffff;
font-family: Verdana, Arial, sans-serif;
}
#container {
margin-left: auto;
margin-right: auto;
width:80%;
min-width:700px;
}
img {
width: 10%;
height: auto;
}
#logo {
text-align:center;
margin: 0;
font-family: Geneva, Arial, Helvetica, sans-serif;
padding-top: 30px;
padding-bottom: 20px;
}
#nav {
float: left;
width: 200px;
padding-top: 10px;
text-align:left;
color: #88FFFF;
font-size: 12px;
}
#nav a {
text-decoration:none;
margin: 15px;
display: block;
color: #88FFFF;
font-size: 12px;
}
#content {
margin-left: 150px;
padding: 30px;
overflow:auto;
border: medium groove #88FFFF;
line-height: 135%;
}
.floatright {
padding-left:20px;
float:right;
}
.floatleft {
float:left;
padding: 30px 0px 20px;
}
#footer {
font-size: .60em;
font-style: italic;
text-align: center;
border-top: 2px double #000040;
padding-top: 20px;
padding-bottom: 20px;
}
h2 {
text-transform: uppercase;
color: #88ffff;
font-size: 1.2em;
border-bottom: 1px none;
margin-right: 20px;
}
h3 {
color: #88ffff;
font-size: 1.2em;
border-bottom: 1px solid #000000;
margin-right: auto;
text-align: left;
padding-top: 10px;
padding-right: 20px;
padding-bottom: 10px;
padding-left: 20px;
line-height: 120%;
}
.details {
padding-left:20%;
padding-right:20%;
}
img {
border:0;
}
.content {
margin: 20px;
padding: 20px;
height: 3700px;
width: 500px;
}
a {
text-decoration:none;
margin: 15px;
display: block;
color: #88FFFF;
font-size: 12px;
}
a:hover {
color: #000040;
background-color: #88ffff;
}
span {
font-size: 20px;
font-weight: bold;
font-family: "Courier New", Courier, mono;
color: #88ffff;
background-position: center center;
text-align: center;
vertical-align: middle;
}
table {
border-collapse: collapse
}
td {
border: 2px solid #88ffff;
width: 5em;
color: #88ffff;
}
.nobdr {
border: none;
cell-padding: 5px;
}

@ -0,0 +1,237 @@
<!DOCTYPE html>
<!--
Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
Click nbfs://nbhost/SystemFileSystem/Templates/Other/html.html to edit this template
-->
<html>
<head>
<title>Greg's Gambits | Game of 21</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="greg.css" rel="stylesheet" type="text/css">
</head>
<body>
<label id="start">Hello! Welcome to Greg's Gambits! Press "Start Game" to start! <br></label>
<label id="cpuGamesWon">Dealer cards:</label> <br>
<label id="cpuPoints"></label><br>
<label id="cpuCards"></label> <label id="hiddenCard"><img src="cards/hidden.png"></label><br>
<label id="playerGamesWon">Your cards:</label><br>
<label id="playerPoints"></label><br>
<label id="playerCards"></label><br>
<label id="cardsInPlay"></label>
<input type="button" id="startButton" onclick="startGame()" value="Start Game">
<input type="button" id="continueButton" onclick="draw()" value="Continue Round">
<input type="button" id="endButton" onclick="endRound()" value="End Round">
<script>
var cpuPoints = 0, playerPoints = 0;
var cpuCards = 0, playerCards = 0;
var totalCpuPoints = 0, totalPlayerPoints = 0;
var cpuTimesWon = 0;
playerTimesWon = 0;
var isStarted = false;
// Card array. This will allow us to remember if a card is in play.
var rows = 12;
var cols = 3;
var cardArray = Array.from({length: rows}, () =>
Array.from({length: cols}, () => false)
);
hiddenCard.hidden = true;
continueButton.hidden = true;
endButton.hidden = true;
function checkEntireArray() {
var numOfBools = (cardArray.length * cardArray[0].length);
console.log("Number of bools: " + numOfBools);
var trueCount = 0;
var returnBool = false;
for (let i = 0; i < cardArray.length; i++) {
for (let j = 0; j < cardArray[i].length; j++) {
if (cardArray[i][j]) {
trueCount++;
}
}
}
console.log("Number of bools set to true: " + trueCount);
if (trueCount == numOfBools) {
returnBool = true;
}
return returnBool;
}
function getCardNumber() {
let exitLoop = false;
let cardNumber = 0; //prompt("Card Number:");
let cardType = 0; //prompt("Card Type: ");
do {
console.log(cardType + " " + cardNumber);
if (checkEntireArray()) {
console.log('Ran out of cards in deck! Breaking!');
alert("Cannot draw more cards!");
return false;
}
if (!cardArray[cardNumber][cardType]) {
cardArray[cardNumber][cardType] = true;
exitLoop = true;
} else {
cardNumber = Math.trunc((Math.random() * 12));
cardType = Math.trunc((Math.random() * 3));
console.log("Ran into existing card, generating new numbers! " + cardType + " " + cardNumber);
exitLoop = false;
}
} while (!exitLoop);
printArray();
checkEntireArray();
return [cardNumber, cardType];
}
function printArray() {
document.getElementById("cardsInPlay").innerHTML = "";
for (let i = 0; i < cardArray.length; i++) {
for (let j = 0; j < cardArray[i].length; j++) {
document.getElementById("cardsInPlay").innerHTML += cardArray[i][j] + " ";
}
document.getElementById("cardsInPlay").innerHTML += "<br>";
}
}
function drawCards(player, cardNumber, cardType, isHidden) {
if (!isHidden) {
if (player == 'cpu') {
hiddenCard.hidden = true;
}
let cardBuilder = "cards/";
switch (cardNumber) {
case 0:
cardBuilder += "ace_of_";
break;
case 1:
cardBuilder += "2_of_";
break;
case 2:
cardBuilder += "3_of_";
break;
case 3:
cardBuilder += "4_of_";
break;
case 4:
cardBuilder += "5_of_";
break;
case 5:
cardBuilder += "6_of_";
break;
case 6:
cardBuilder += "7_of_";
break;
case 7:
cardBuilder += "8_of_";
break;
case 8:
cardBuilder += "9_of_";
break;
case 9:
cardBuilder += "10_of_";
break;
case 10:
cardBuilder += "jack_of_";
cardNumber = 9;
break;
case 11:
cardBuilder += "queen_of_";
cardNumber = 9;
break;
case 12:
cardBuilder += "king_of_";
cardNumber = 9;
break;
}
switch (cardType) {
case 0:
cardBuilder += "clubs.png"
break;
case 1:
cardBuilder += "diamonds.png"
break;
case 2:
cardBuilder += "diamonds.png"
break;
case 3:
cardBuilder += "spades.png"
break;
}
if (player == "cpu") {
cpuCards = cardNumber + 1;
} else if (player == "player") {
playerCards = cardNumber + 1;
}
document.getElementById(player + "Cards").innerHTML += "<img src=\"" + cardBuilder + "\"> ";
} else {
hiddenCard.hidden = false;
}
}
function updatePoints() {
document.getElementById("playerPoints").innerHTML = "This round: " + playerPoints + "; ";
document.getElementById("playerPoints").innerHTML += "Total Points: " + totalPlayerPoints;
document.getElementById("playerGamesWon").innerHTML = "Your cards: (times won: " + playerTimesWon + ")";
document.getElementById("cpuPoints").innerHTML = "This round: " + cpuPoints + "; ";
document.getElementById("cpuPoints").innerHTML += "Total Points: " + totalCpuPoints;
document.getElementById("cpuGamesWon").innerHTML = "Dealer cards: (times won: " + cpuTimesWon + ")";
}
function startGame() {
// Dealer and player have two cards.
if (!isStarted) {
document.getElementById("playerCards").innerHTML = "";
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() {
var [cardNumber, cardType] = getCardNumber();
// 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++;
} else {
totalCpuPoints += cpuPoints;
cpuTimesWon++;
}
updatePoints();
}
</script>
</body>
</html>