116 lines
2.8 KiB
Java
116 lines
2.8 KiB
Java
package pr2.collections.iterieren;
|
|
|
|
import de.smits_net.games.framework.board.Board;
|
|
import de.smits_net.games.framework.image.SimpleImage;
|
|
import de.smits_net.games.framework.sprite.Sprite;
|
|
import de.smits_net.games.framework.sprite.Sprite.BoundaryPolicy;
|
|
|
|
import java.awt.Point;
|
|
import java.util.Iterator;
|
|
import java.util.Random;
|
|
|
|
/**
|
|
* Klasse, die eine beliebige Menge an Geld generiert.
|
|
*/
|
|
public class CoinGenerator implements Iterable<Sprite> {
|
|
|
|
/**
|
|
* Zufallszahlen-Generator.
|
|
*/
|
|
private static final Random RND = new Random();
|
|
|
|
/**
|
|
* Das Spielfeld.
|
|
*/
|
|
private final Board board;
|
|
|
|
/**
|
|
* Anzahl der Münzen, die erzeugt werden sollen.
|
|
*/
|
|
int number; // nicht private wegen innerer Klasse
|
|
|
|
/**
|
|
* Erzeugt eine neue Instanz, die zu dem übergebenen Spielfeld gehört.
|
|
*
|
|
* @param board Das Spielfeld.
|
|
* @param number Anzahl der Münzen.
|
|
*/
|
|
public CoinGenerator(Board board, int number) {
|
|
this.board = board;
|
|
this.number = number;
|
|
}
|
|
|
|
/**
|
|
* Erzeugt einen neuen Iterator.
|
|
*
|
|
* @return Der Iterator.
|
|
*/
|
|
@Override
|
|
public Iterator<Sprite> iterator() {
|
|
return new Iterator<Sprite>() {
|
|
|
|
int count = 0;
|
|
|
|
@Override
|
|
public boolean hasNext() {
|
|
return count < number;
|
|
}
|
|
|
|
@Override
|
|
public Sprite next() {
|
|
count++;
|
|
return createCoin();
|
|
}
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Legt eine zufällige Münze an.
|
|
*
|
|
* @return die Münze als Sprite.
|
|
*/
|
|
Sprite createCoin() {
|
|
final String prefix = "pr2/collections/iterieren";
|
|
|
|
String asset;
|
|
|
|
switch (RND.nextInt(8)) {
|
|
case 0:
|
|
asset = prefix + "/1c.png";
|
|
break;
|
|
case 1:
|
|
asset = prefix + "/2c.png";
|
|
break;
|
|
case 3:
|
|
asset = prefix + "/5c.png";
|
|
break;
|
|
case 4:
|
|
asset = prefix + "/10c.png";
|
|
break;
|
|
case 5:
|
|
asset = prefix + "/20c.png";
|
|
break;
|
|
case 6:
|
|
asset = prefix + "/50c.png";
|
|
break;
|
|
case 7:
|
|
asset = prefix + "/1e.png";
|
|
break;
|
|
default:
|
|
asset = prefix + "/2e.png";
|
|
break;
|
|
}
|
|
|
|
int xPos = RND.nextInt(board.getWidth()) - 20;
|
|
int yPos = RND.nextInt(board.getHeight()) - 20;
|
|
|
|
return new Sprite(board, new Point(xPos, yPos), BoundaryPolicy.NONE,
|
|
new SimpleImage(asset)) {
|
|
@Override
|
|
protected void mousePressed() {
|
|
this.setVisible(false);
|
|
}
|
|
};
|
|
}
|
|
}
|