package de.dorbird;
import java.util.Random;
public class Dice {
enum Color {RED,BLUE}
Color owner = Color.RED;
DiceFace frontSide = DiceFace.ONE;
DiceFace backSide = DiceFace.SIX;
DiceFace upSide = DiceFace.TWO;
DiceFace downSide = DiceFace.FIVE;
DiceFace rightSide = DiceFace.FOUR;
DiceFace leftSide = DiceFace.THREE;
public String[] display(){
String[] out = new String[5];
out[0] = String.format("\u2591\u2502%s\u2502\u2591", upSide.ordinal());
out[1] = "\u2500\u253C\u2500\u253C\u2500";
out[2] = String.format("%s\u2502%s\u2502%s", leftSide.ordinal(), frontSide.ordinal(), rightSide.ordinal());
out[3] = "\u2500\u253C\u2500\u253C\u2500";
out[4] = String.format("\u2591\u2502%s\u2502%s", downSide.ordinal(),backSide.ordinal());
return out;
}
public void print(){
String[] sa = display();
for (String s : sa) {
System.out.println(s);
}
}
public Dice roll(){
Random r = new Random();
int frontSide = r.nextInt(6) + 1;
int upSide;
do {
upSide = r.nextInt(6) + 1;
}while (upSide == frontSide || upSide == 7-frontSide);
return this;
}
public Dice rotateXCW() {
DiceFace tmp = upSide;
upSide = frontSide;
frontSide = downSide;
downSide = backSide;
backSide = tmp;
return this;
}
public Dice rotateXACW() {
DiceFace tmp = upSide;
upSide = backSide;
backSide = downSide;
downSide = frontSide;
frontSide = tmp;
return this;
}
public Dice rotateYCW() {
DiceFace tmp = frontSide;
frontSide = rightSide;
rightSide = backSide;
backSide = leftSide;
leftSide = tmp;
return this;
}
public Dice rotateYACW() {
DiceFace tmp = frontSide;
frontSide = leftSide;
leftSide = backSide;
backSide = rightSide;
rightSide = tmp;
return this;
}
public Dice rotateZCW() {
DiceFace tmp = upSide;
upSide = leftSide;
leftSide = downSide;
downSide = rightSide;
rightSide = tmp;
return this;
}
public Dice rotateZACW() {
DiceFace tmp = upSide;
upSide = rightSide;
rightSide = downSide;
downSide = leftSide;
leftSide = tmp;
return this;
}
}
/////////////////////////////////////////////////////
package de.dorbird;
public enum DiceFace {
BLANK, ONE ,TWO, THREE,FOUR, FIVE, SIX;
public static DiceFace getOppositeSide(DiceFace df){
return byInt(7 - df.ordinal());
}
public static DiceFace byInt(int n){
switch (n){
case 1:return ONE;
case 2:return TWO;
case 3:return THREE;
case 4:return FOUR;
case 5:return FIVE;
case 6:return SIX;
}
return BLANK;
}
}
Comments