import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** Stellt einen Würfel (von 1-6) dar, welcher in der Welt sichtbar dargestellt werden soll. @author Felix Stupp @version 13.06.2016 */ public class Dice extends GUI_Interface { private int number = 0; /** Erstellt einen Würfel mit dem Startwert 0 (für noch nicht verwendet). */ public Dice() { redraw(); } /** Erstellt einen Würfel mit einem bestimmten Startwert, welcher sofort sichtbar ist. */ public Dice(int startNumber) { number = startNumber; redraw(); } /** Gibt die aktuelle Zahl, die der Würfel anzeigt, aus. Gibt die Methode 0 zurück, heißt dies, dass der Würfel noch nicht gewürfelt wurde. @return Die aktuelle Augenzahl oder 0 */ public int getNumber() { return number; } /** Legt die Größe des Würfels als Quadrat fest. */ public void setSizeAsSquare(int l) { setSize(l,l); } /** Würfelt den Würfel, erneuert die Darstellung und gibt die neue Augenzahl zurück. */ public int roll() { number = (int) (Math.floor(Math.random()*6)+1); redraw(); return number; } /** Zeichnet auf dem gegebenen GreenfootImage ein Oval an der gegebenen Stelle multipliziert mit der einheitlichen Größe. */ private void fO(GreenfootImage i, int eX, int eY, int x, int y) { i.fillOval(eX*x,eY*y,eX*2,eY*2); } /** Erneuert die Darstellung des Würfels. */ public void redraw() { // einheitliche Größe X und Y (ein Vierzehntel der gesamten Breite und Höhe) int eX = (int) Math.round(sx/8); int eY = (int) Math.round(sy/8); // Vereinfachung für die Augenzahl int a = number; GreenfootImage i = new GreenfootImage(sx,sy); i.setColor(new java.awt.Color(0,0,0,0)); i.clear(); i.setColor(backC); i.fillShape(new java.awt.geom.RoundRectangle2D.Double(0,0,sx,sy,eX,eY)); i.setColor(foreC); // das "else" fehlt absichtlich if(a==1||a==3||a==5) { //Mittlerer Punkt fO(i,eX,eY,3,3); } if(a>1) { //Punkte links-oben und rechts-unten fO(i,eX,eY,1,1); fO(i,eX,eY,5,5); } if(a>3) { //Punkte links-unten und rechts-oben fO(i,eX,eY,1,5); fO(i,eX,eY,5,1); } if(a>5) { //Punkte links-mitte und rechts-mitte fO(i,eX,eY,1,3); fO(i,eX,eY,5,3); } setImage(i); } }