MP11
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/
|
||||
|
3
Assignments/JavaScript/MP11_CalebFontenot/.bowerrc
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"directory": "public_html/bower_components"
|
||||
}
|
9
Assignments/JavaScript/MP11_CalebFontenot/Gruntfile.js
Normal file
@ -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({
|
||||
});
|
||||
};
|
13
Assignments/JavaScript/MP11_CalebFontenot/bower.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "MP11_CalebFontenot",
|
||||
"version": "1.0.0",
|
||||
"main": "path/to/main.css",
|
||||
"ignore": [
|
||||
".jshintrc",
|
||||
"**/*.txt"
|
||||
],
|
||||
"dependencies": {
|
||||
},
|
||||
"devDependencies": {
|
||||
}
|
||||
}
|
10
Assignments/JavaScript/MP11_CalebFontenot/gulpfile.js
Normal file
@ -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>
|
8
Assignments/JavaScript/MP11_CalebFontenot/package.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "MP11_CalebFontenot",
|
||||
"version": "1.0.0",
|
||||
"keywords": ["util", "functional", "server", "client", "browser"],
|
||||
"author": "caleb",
|
||||
"contributors": [],
|
||||
"dependencies": {}
|
||||
}
|
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 45 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 47 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 50 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 380 KiB |
After Width: | Height: | Size: 39 KiB |
After Width: | Height: | Size: 203 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 210 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 255 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 242 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 257 KiB |
After Width: | Height: | Size: 36 KiB |
After Width: | Height: | Size: 260 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 273 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 197 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 279 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 191 KiB |
After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 238 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 201 KiB |
After Width: | Height: | Size: 40 KiB |
135
Assignments/JavaScript/MP11_CalebFontenot/public_html/greg.css
Executable file
@ -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;
|
||||
}
|
237
Assignments/JavaScript/MP11_CalebFontenot/public_html/index.html
Normal file
@ -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>
|