public class zahlen_GUI extends JFrame implements MouseListener {
// private Point mousePos;
Dimension prefSize;
private static BufferedImage image;
static JLabel label;
static Graphics2D g2;
boolean klickFlag = false;
int klick1X, klick1Y, klick2X, klick2Y;
zahlen_GUI() throws IOException {
BufferedImage bi = ImageIO.read(new File("feld.jpg"));
g2 = bi.createGraphics();
g2.setPaint(Color.red);
label = new JLabel(new ImageIcon(bi));
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(label, "West");
f.pack();
f.setVisible(true);
}
//Bekommt einen Wert aus der LogikMatrix und zeichnet diesen ins Feld ein
public static void getBoxContents(Graphics2D g, int x, int y) {
g.drawString(logik.getBox(x, y), logik.get_kastenMitteHorizontal(x), logik.get_kastenMitteVertikal(y));
}
//Löscht den grafischen Inhalt einer Box
public void deleteBox(Graphics2D g, int x, int y) {
g.setColor(Color.black);
g.fillRect(x-10, y-15, 20, 17);
repaint();
}
//Setzt einen Wert in das Spielfeld und die LogikMatrix
public static void setBoxContents(Graphics2D g, int x, int y, String inhalt) {
g.setColor(Color.white);
logik.setBox(x, y, inhalt);
getBoxContents(g, x, y);
}
//Zeichnet das Startfeld
public static void drawInit(Graphics2D g, int feldBreite,int startReihen){
for(int i=0; i<=feldBreite; i++) {
for (int i2=0; i2<= startReihen; i2++) {
getBoxContents(g, i, i2);
}
}
}
synchronized public void mouseClicked(MouseEvent e){
// mousePos = e.getPoint();
System.out.println("x: " + e.getX() );
System.out.println("y: " + e.getY() );
// System.out.println("Kasten hor: " + logik.get_kasten_h(e.getX()) );
// System.out.println("Kasten ver: " + logik.get_kasten_v(e.getY()) );
// System.out.println("Kasten Inahlt: " + logik.get_feld( logik.get_kasten_h(e.getX()), logik.get_kasten_v(e.getY())) );
//klick1X, klick1Y, klick2X, klick2Y definieren die angeklicken Kästchen
if (klickFlag == false) {
klickFlag = true;
klick1X = logik.get_kasten_h(e.getX());
klick1Y = logik.get_kasten_v(e.getY());
}
else
{
klickFlag = false;
klick2X = logik.get_kasten_h(e.getX());
klick2Y = logik.get_kasten_v(e.getY());
System.out.println("Klick 1: " + klick1X + "," + klick1Y );
System.out.println("Klick 2: " + klick2X + "," + klick2Y );
if (logik.moveValid(klick1X, klick1Y, klick2X, klick2Y)) {
System.out.println("Zug gültig");
if (Integer.valueOf(logik.getBox(klick1X, klick1Y)) + Integer.valueOf(logik.getBox(klick2X, klick2Y)) == 10 ) {
System.out.println("Summe ergibt 10!");
deleteBox(g2, logik.get_kastenMitteHorizontal(klick1X), logik.get_kastenMitteVertikal(klick1Y));
deleteBox(g2, logik.get_kastenMitteHorizontal(klick2X), logik.get_kastenMitteVertikal(klick2Y));
setBoxContents(g2, klick1X, klick1Y, ".");
setBoxContents(g2, klick2X, klick2Y, ".");
}
}
}
}
/**
leere Implementierung (nur aus formalen Gründen vorhanden)
*/
public void mouseEntered(MouseEvent e){
}
public void mouseExited(MouseEvent e){
}
public void mousePressed(MouseEvent e){
}
public void mouseReleased(MouseEvent e){
}
public static void main(String[] args) throws IOException {
zahlen_GUI GUI = new zahlen_GUI();
label.addMouseListener(GUI);
feldoperationen.initFeld();
drawInit(g2, 8, 2);
setBoxContents(g2, 5, 5, ".");
setBoxContents(g2, 6, 5, ".");
setBoxContents(g2, 4, 5, "9");
setBoxContents(g2, 7, 5, "1");
setBoxContents(g2, 8, 5, "x");
}
}