-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dice.java
87 lines (76 loc) · 1.94 KB
/
Dice.java
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
public class Dice{
private int quantity; //number of dice
private int type; //size of dice
/*Dice constructor. Dice rolls must be between 1 and 10,000,
or quantity and type are both set to 1 */
public Dice (int x, int y)
{
if((x < 1 || y < 1) || ((x * y) > 16383))
{
quantity = 1;
type = 1;
}
else
{
quantity = x;
type = y;
}
}
//Get methods
public int get_quantity()
{ return quantity; }
public int get_type()
{ return type; }
//Rolls the dice given.
public int roll()
{
int total = 0;
int lquantity = this.get_quantity();
int ltype = this.get_type();
for(int i = 0; i < lquantity; i++)
{ total += (int)(Math.random() * ltype + 1); }
return total;
}
//Same as get_quantity, with a different name for human useage
public int min_roll()
{ return quantity; }
//Returns the maximum roll that could be produced by a given dice
public int max_roll()
{
return (this.get_quantity() * this.get_type());
}
/*tests if a given string is formatted correctly in quantitydtype format,
or xdy format for short. Does not check for valid min max roll sizes*/
public static boolean is_formated(String xdy)
{
boolean d_count = false;
for(int i = 0; i < xdy.length(); i++){
if(!Character.isDigit(xdy.charAt(i)))
{
if((xdy.charAt(i)) == 'd'){
if(d_count) { return false; }
else if((i == xdy.length() - 1) || (i == 0)){return false;}
else{ d_count = true; }
}
else{ return false; }
}
}
return d_count;
}
/*Takes a string, converts the string to a
dice object and returns that object.
Always use is_formated on string
first or will throw an error */
public static Dice interpret(String xdy)
{
int x, y;
String quantity_holder, type_holder;
int d = xdy.indexOf("d");
quantity_holder = xdy.substring(0, d);
x = Integer.parseInt(quantity_holder);
type_holder = xdy.substring(d + 1);
y = Integer.parseInt(type_holder);
Dice f = new Dice(x, y);
return f;
}
}