import java.applet.Applet;
import java.awt.Color;
import java.awt.Image;
import java.awt.Component;
/**
* @author admin
* Überschreibung der init-Methode und Initialisierung des
* Rasters und der Farben
*/
public class Mosaik extends Applet implements SteuerIF {
private int raster, rasterPF; // Raster des Spiels und Protokollfenster
private String bildName; // Name der Bilddatei
private Image image; // Image-Objekt zu "bildName"
private BildMosaik bm; // Panel mit Canvas-Objekten
private FarbMosaik fm;
private VorschauCanvas vorschauBild;
private boolean zuletztBild;
private Color farbeRueckseite;
private Color farbeVorderseite;
private Component steuerPanel;
private MosaikFrame mf;
public void init() {
// Parameter einlesen
String temp = getParameter("raster");
try {
raster = Integer.parseInt(temp);
} catch (NumberFormatException nfe) {
raster = 5;
System.out.println("Raster auf default = " + raster + " gesetzt.\n" + nfe.toString());
}
bildName = getParameter("bildName");
farbeRueckseite = new Color(230, 30, 50);
farbeVorderseite = new Color(50, 210, 30);
image = this.getImage(getCodeBase(), bildName);
// MediaTracking im ImageHandler
image = ImageHandler.trackImage(image, this);
// Zunächst Vorschaubild anzeigen
vorschauBild = new VorschauCanvas(image);
add(vorschauBild);
steuerPanel = new SteuerPanel(this);
add(steuerPanel);
}
/**
* Der Neuaufbau der Spielfläche besteht aus der einfachen Alternative, entweder ein
* BildMosaik- oder ein FarbMosaik-Objekt zu erzeugen und in das Applet einzufügen.
* Danach wird das Steuer-Panel wieder ergänzt.
*/
public void startGame(int raster, boolean modus, boolean protokoll) {
if(vorschauBild != null) {
remove(vorschauBild);
vorschauBild = null;
} else {
if(zuletztBild) {
remove(bm); // BildMosaik-Panel
} else {
remove(fm); // FarbMosaik-Panel
}
}
if(modus) { // true = Bildvariante
bm = new BildMosaik(raster, farbeRueckseite, image);
add(bm);
zuletztBild = true;
} else {
fm = new FarbMosaik (raster, image.getWidth(this), farbeRueckseite, farbeVorderseite);
add(fm);
zuletztBild = false;
}
// Frame öffnen
if (protokoll) {
rasterPF = raster;
mf = new MosaikFrame(raster, image.getWidth(this), farbeRueckseite, farbeVorderseite);
mf.setTitle("Protokollfenster");
mf.setSize(getSize());
mf.setLocation(630,0);
mf.show();
mf.umdrehenKarte();
}
add(steuerPanel);
/**
* Die Methode validate() sorgt dafür, dass das Applet ein gültiges Layout erhält.
* Sie soll aufgerufen werde, wenn eine Komponente in einem Container hinzugefügt
* oder modifiziert wurde. Erst durch diese Methode erfolgt die neue Benutzeroberfläche
* (View).
*/
validate();
}
public void resetGame() {
validate();
mf.setVisible(false);
}
}