diff --git a/index.html b/index.html
index b0022f4..b7a2745 100644
--- a/index.html
+++ b/index.html
@@ -2,9 +2,77 @@
RollDice
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/media/Shells_falls-Marcel-829263474.mp3 b/media/Shells_falls-Marcel-829263474.mp3
new file mode 100644
index 0000000..81167a8
Binary files /dev/null and b/media/Shells_falls-Marcel-829263474.mp3 differ
diff --git a/media/beep.mp3 b/media/beep.mp3
new file mode 100644
index 0000000..0f07868
Binary files /dev/null and b/media/beep.mp3 differ
diff --git a/media/ding.mp4 b/media/ding.mp4
new file mode 100644
index 0000000..43634b3
Binary files /dev/null and b/media/ding.mp4 differ
diff --git a/media/tada.mp3 b/media/tada.mp3
new file mode 100644
index 0000000..d12a864
Binary files /dev/null and b/media/tada.mp3 differ
diff --git a/node_modules/.DS_Store b/node_modules/.DS_Store
index a610279..ed4ad2c 100644
Binary files a/node_modules/.DS_Store and b/node_modules/.DS_Store differ
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
index 0829cde..b88521b 100644
--- a/node_modules/.package-lock.json
+++ b/node_modules/.package-lock.json
@@ -8,6 +8,11 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@materializecss/materialize/-/materialize-1.1.0.tgz",
"integrity": "sha512-W2MrDC8mzpMWyP2OpS0RWTWGcLiRRBz7kn2E9TsbardPyVNFdoNvXq5sLy3NcEfAlACc1+L7Q95+pBuUX44dRg=="
+ },
+ "node_modules/@mdi/font": {
+ "version": "7.0.96",
+ "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.0.96.tgz",
+ "integrity": "sha512-rzlxTfR64hqY8yiBzDjmANfcd8rv+T5C0Yedv/TWk2QyAQYdc66e0kaN1ipmnYU3RukHRTRcBARHzzm+tIhL7w=="
}
}
}
diff --git a/package-lock.json b/package-lock.json
index e966eef..b3d4077 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,13 +9,19 @@
"version": "0.1.0",
"license": "ISC",
"dependencies": {
- "@materializecss/materialize": "^1.1.0"
+ "@materializecss/materialize": "^1.1.0",
+ "@mdi/font": "^7.0.96"
}
},
"node_modules/@materializecss/materialize": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@materializecss/materialize/-/materialize-1.1.0.tgz",
"integrity": "sha512-W2MrDC8mzpMWyP2OpS0RWTWGcLiRRBz7kn2E9TsbardPyVNFdoNvXq5sLy3NcEfAlACc1+L7Q95+pBuUX44dRg=="
+ },
+ "node_modules/@mdi/font": {
+ "version": "7.0.96",
+ "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.0.96.tgz",
+ "integrity": "sha512-rzlxTfR64hqY8yiBzDjmANfcd8rv+T5C0Yedv/TWk2QyAQYdc66e0kaN1ipmnYU3RukHRTRcBARHzzm+tIhL7w=="
}
},
"dependencies": {
@@ -23,6 +29,11 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@materializecss/materialize/-/materialize-1.1.0.tgz",
"integrity": "sha512-W2MrDC8mzpMWyP2OpS0RWTWGcLiRRBz7kn2E9TsbardPyVNFdoNvXq5sLy3NcEfAlACc1+L7Q95+pBuUX44dRg=="
+ },
+ "@mdi/font": {
+ "version": "7.0.96",
+ "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.0.96.tgz",
+ "integrity": "sha512-rzlxTfR64hqY8yiBzDjmANfcd8rv+T5C0Yedv/TWk2QyAQYdc66e0kaN1ipmnYU3RukHRTRcBARHzzm+tIhL7w=="
}
}
}
diff --git a/package.json b/package.json
index 4e9729c..1cb884c 100644
--- a/package.json
+++ b/package.json
@@ -18,6 +18,7 @@
"author": "buzz-lightsnack-2007",
"license": "ISC",
"dependencies": {
- "@materializecss/materialize": "^1.1.0"
+ "@materializecss/materialize": "^1.1.0",
+ "@mdi/font": "^7.0.96"
}
}
diff --git a/scripts/interface.js b/scripts/interface.js
new file mode 100644
index 0000000..6a7f001
--- /dev/null
+++ b/scripts/interface.js
@@ -0,0 +1,5 @@
+let soundEffects = {
+ 'ding': new Audio('media/ding.mp4'),
+ 'fallout': new Audio('media/Shells_falls-Marcel-829263474.mp3'),
+ 'tada': new Audio('media/tada.mp3')
+}
diff --git a/scripts/roll.js b/scripts/roll.js
new file mode 100644
index 0000000..2acf3b4
--- /dev/null
+++ b/scripts/roll.js
@@ -0,0 +1,86 @@
+/* https://en.wikipedia.org/wiki/Bo_Bing_(game) */
+
+function randomNumber (minimum, maximum, times = 1) {
+ let resultNumber = 0;
+
+ for (currentRandom = 0; currentRandom < times; currentRandom++) {
+ resultNumber = Math.floor(Math.random() * (maximum - minimum) + minimum);
+ };
+ return resultNumber;
+};
+
+function rollDice(times = 1) {
+ let value_dices = [];
+ let value_current = 0;
+
+ let dices_amount_current = value_dices.length;
+
+ for (rolls = 0; rolls < times; rolls++) {
+ for (dices_max = 6; dices_amount_current < dices_max; dices_amount_current = value_dices.length) {
+ value_current = randomNumber(1, 6);
+
+ if (randomNumber(1, 2) == 1) {
+ value_dices.push(value_current);
+ } else {
+ value_dices.unshift(value_current);
+ };
+ };
+ };
+
+ return value_dices;
+};
+
+function rollDiceWithResults() {
+ let value_dices = rollDice();
+ let value_current = 0;
+ let value_dices_numbers = {
+ 'one': 0,
+ 'two': 0,
+ 'three': 0,
+ 'four': 0,
+ 'five': 0,
+ 'six': 0
+ };
+
+ /* The first dice is always the zeroth dice! */
+ for (diceNumber = 0; diceNumber < value_dices.length; diceNumber++) {
+ value_current = value_dices[diceNumber];
+ switch (value_current) {
+ case 1: value_dices_numbers.one++; break;
+ case 2: value_dices_numbers.two++; break;
+ case 3: value_dices_numbers.three++; break;
+ case 4: value_dices_numbers.four++; break;
+ case 5: value_dices_numbers.five++; break;
+ case 6: value_dices_numbers.six++; break;
+ };
+ };
+
+ let result_number = 0;
+ /* The highest of each place starts as an integer, the rest is an increment by .1. */
+ if ((value_dices_numbers.four == value_dices.length) || (value_dices_numbers.one == value_dices.length)) {
+ /* Six Fours */
+ result_number = 1;
+ if (value_dices_numbers.one > value_dices_numbers.four) {
+ /* Six Ones */
+ result_number = result_number + 0.1;
+ };
+ } else if (value_dices.every( (val, i, arr) => val === arr[0] )) {
+ /* Six of a Kind */
+ result_number = 1.2;
+ } else if (value_dices_numbers.four == 5) {
+ /* Five Fours */
+ result_number = 1.3;
+ } else if ((value_dices_numbers.one == 5) || (value_dices_numbers.two == 5) || (value_dices_numbers.three == 5) || (value_dices_numbers.five == 5) || (value_dices_numbers.six == 5)) {
+ /* Five of a Kind */
+ result_number = 1.4;
+ } else if (value_dices_numbers.four == 4) {
+ /* Four Fours */
+ result_number = 1.5;
+ } else if (value_dices_numbers.every( (val, i, arr) => val === arr[0] )) {
+ result_number = 2;
+ };
+
+ let results = {'dice': value_dices,
+ 'result': result_number};
+ return results;
+}