forked from mjtolentino/accessible_dice
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbasic_roller.html
More file actions
89 lines (83 loc) · 3.65 KB
/
basic_roller.html
File metadata and controls
89 lines (83 loc) · 3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<html>
<head>
<script>
// This will roll a number of dice at any denomination and can also add a modifier. It does a regex check to make sure the
function simpleRoll() {
var diceValue = document.getElementById('diceroll').value; // Grab value
var dice = diceValue.replace(/\s+/g, '');
var reBasic = /(\d+)d(\d+)/; // Check if it's in the correct format
var reModPlus = /(\d+)d(\d+)\+(\d+)/;
var reModMinus = /(\d+)d(\d+)\-(\d+)/;
if (reModPlus.test(dice)){
var res = dice.split("d");
var number = Number(res[0]); //Number of dice
var denomMod = res[1]; //Dice denomination and modifier
var res = denomMod.split("+");
var denom = Number(res[0]); //Dice denomination
var modifier = Number(res[1]); //Modifier
var rollArray = [];
var rollTotal = modifier;
for (i = 0; i < number; i++) {
var roll=Math.floor(Math.random()*denom) + 1; //Get decimal, multiple by denomination and round down, and one so range doesn't start at zero
rollTotal += roll;
rollArray.push(roll);
}
var rollText = rollTotal + " = " + rollArray.sort(function(a, b){return b-a}).join(' + ') + " + " + modifier; //sort in descending order and add a space between each value
document.getElementById("results").innerHTML += rollText + "<br />";
} else if (reModMinus.test(dice)){
var res = dice.split("d");
var number = Number(res[0]); //Number of dice
var denomMod = res[1]; //Dice denomination and modifier
var res = denomMod.split("-");
var denom = Number(res[0]); //Dice denomination
var modifier = Number(res[1]); //Modifier
var rollArray = [];
var rollTotal = 0;
for (i = 0; i < number; i++) {
var roll=Math.floor(Math.random()*denom) + 1; //Get decimal, multiple by denomination and round down, and one so range doesn't start at zero
rollTotal += roll;
rollArray.push(roll);
}
rollTotal -= modifier;
var rollText = rollTotal + " = " + rollArray.sort(function(a, b){return b-a}).join(' + ') + " - " + modifier; //sort in descending order and add a space between each value
document.getElementById("results").innerHTML += rollText + "<br />";
} else if (reBasic.test(dice)){
var res = dice.split("d");
var number = Number(res[0]); //Number of dice
var denom = Number(res[1]); //Dice denomination
var rollArray = [];
var rollTotal = 0;
for (i = 0; i < number; i++) {
var roll=Math.floor(Math.random()*denom) + 1; //Get decimal, multiple by denomination and round down, and one so range doesn't start at zero
rollTotal += roll;
rollArray.push(roll);
}
var rollText = rollTotal + " = " + rollArray.sort(function(a, b){return b-a}).join(', '); //sort in descending order and add a space between each value
document.getElementById("results").innerHTML += rollText + "<br />";
} else {
document.getElementById("error").innerHTML = "Please use the xdx format";
};
};
function clearRoll() {
document.getElementById("results").innerHTML = '';
};
</script>
<style>
#error
{
color: red;
}
</style>
</head>
<body>
Enter the dice you want to roll, for example to roll one six-sided die, enter 1d6. For five twelve-sided dice enter 5d12. You can add a modifier like a +1 or -3 so it says 3d10-3.
<form onsubmit="return false;">
<input type="text" id="diceroll" onkeydown = "if (event.keyCode == 13)
{simpleRoll()}"><br>
<button type="button" onclick="simpleRoll()">Roll!</button>
<button type="button" onclick="clearRoll()">Clear</button>
</form>
<div id='error'></div>
<div id='results'></div>
</body>
</html>