import java.awt.*;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.image.RescaleOp;
import java.io.File;
import java.util.Stack;
import javax.imageio.ImageIO;
import javax.swing.*;
public class SpielfeldPanel extends JPanel{
static int richtung = 0;
static boolean neumalen = false;
static boolean würfelnerlaubt = false;
static Stack<String> s = new Stack<String>();
static Stack<String> s2 = new Stack<String>();
static boolean würfeln = false;
static boolean smallmap = true;
static boolean fader = false;
BufferedImage[][] spieler = new BufferedImage[6][80];
BufferedImage feld[] = new BufferedImage[100];
BufferedImage smallfeld;
BufferedImage transp = new BufferedImage(800, 800,
BufferedImage.TYPE_INT_ARGB);
float transpwert = 1f;
int a, x, y, z, col;
String prefix = "C:/Images/Daten/Cluedo/cluedo2/bilder/";
String[] farbe = { "Blau", "Rot", "Grün", "Gelb", "Lila", "Weiß" };
Ladebalken balken;
public SpielfeldPanel() {
}
public SpielfeldPanel(Ladebalken balk) {
setLayout(null);
balken = balk;
}
public boolean erzeugeFeld() {
try {
col = 0;
a = 1;
x = -1320;
y = -1260;
balken.ausgabe("Lade Spielfeld (klein)");
smallfeld = ImageIO.read(new File(prefix
+ "/spielfeld/feld_800.jpg"));
balken.ausgabe("Spielfeld (klein) geladen");
balken.ausgabe("Lade Spielfeld");
for (int i = 0; i < 100; i++) {
balken.erneuern("Spielfeld", i + 1, 100);
feld[i] = ImageIO.read(new File(prefix + "/spielfeld/feld/"
+ (i + 1) + ".jpg"));
}
balken.ausgabe("Spielfeld geladen");
for (int j = 0; j < 6; j++) {
balken.ausgabe("Lade Spieler '" + farbe[j] + "'");
for (int i = 0; i < 20; i++) {
balken.erneuern(farbe[j], i + 1, 80);
spieler[j][i] = ImageIO.read(new File(prefix + farbe[j]
+ "/Rechts/" + (i + 1) + ".gif"));
}
for (int i = 20; i < 40; i++) {
balken.erneuern(farbe[j], i + 1, 80);
spieler[j][i] = ImageIO.read(new File(prefix + farbe[j]
+ "/Runter/" + (i - 19) + ".gif"));
}
for (int i = 40; i < 60; i++) {
balken.erneuern(farbe[j], i + 1, 80);
spieler[j][i] = ImageIO.read(new File(prefix + farbe[j]
+ "/Links/" + (i - 39) + ".gif"));
}
for (int i = 60; i < 80; i++) {
balken.erneuern(farbe[j], i + 1, 80);
spieler[j][i] = ImageIO.read(new File(prefix + farbe[j]
+ "/Rauf/" + (i - 59) + ".gif"));
}
balken.ausgabe("Spieler '" + farbe[j] + "' geladen");
}
} catch (Exception e) {
System.out.println("Geht nicht");
}
return true;
}
public boolean würfeln(int x) {
System.out.println("Würfle " + x);
int anz = x;
while (anz > 0) {
if (würfelnerlaubt == true) {
while (!s.empty() & anz > 0) {
anz--;
System.out.println(anz);
s2.push(s.pop());
}
while (!s2.empty()) {
richtung = Integer.valueOf(s2.pop().toString()).intValue();
for (int i = 0; i < 20; i++) {
seta();
setx();
sety();
try {
Thread.sleep(20);
} catch (Exception f) {
System.out.println("Kann nicht warten!");
}
}
}
}
update(this.getGraphics());
/* Muss hier hin, sonst Auslastung -> 100% */
try {
Thread.sleep(50);
} catch (InterruptedException e) {
System.out.println("Fehler beim warten...");
}
/* Ende vor System.burn() Schutz */
}
System.out.println("Ende würfeln");
return true;
}
public void seta() {
a = (a % 20) + 1;
a += (richtung - 1) * 20;
}
public void setcol() {
col++;
col = col % 6;
}
public void setx() {
if (richtung == 1)
x -= 10;
if (richtung == 3)
x += 10;
}
public void sety() {
if (richtung == 2)
y -= 10;
if (richtung == 4)
y += 10;
}
// Gesamtgröße: 5240, 5440
public void paintComponent(Graphics g) {
System.out.println("male");
super.paintComponent(g);
if (neumalen == true) {
Graphics2D g2d = (Graphics2D) g;
// Würfeln
g2d.setColor(Color.BLACK);
g2d.fillRect(0, 0, 800, 800);
int xi = -2620;
int yi = -2720;
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if ((x + xi + 524 >= 0 & x + xi <= 800)
&& (y + yi + 544 >= 0 & y + yi <= 800)) {
g2d.drawImage(feld[(i * 10) + j], x + xi, y + yi, 524,
544, this);
}
xi += 524;
}
xi = -2620;
yi += 544;
}
g2d.drawImage(spieler[col][a - 1], 300, 300, 200, 200, this);
// Smallmap überblenden
if (smallmap == true) {
if (fader == true) {
if (würfeln == false) {
transpwert += 0.1f;
}
if (würfeln == true) {
transpwert -= 0.1f;
}
if (transpwert <= 0f) {
würfelnerlaubt = true;
fader = false;
smallmap = false;
}
if (transpwert >= 1f) {
fader = false;
}
update(MainKlasse.mainframe.getGraphics());
}
Graphics g2 = transp.getGraphics();
g2.drawImage(smallfeld, 0, 0, null);
float[] scales = { 1f, 1f, 1f, transpwert };
float[] offsets = new float[4];
RescaleOp rop = new RescaleOp(scales, offsets, null);
g2d.drawImage(transp, rop, 0, 0);
}
}
}
}