Hallo liebe Community,
wir haben versucht ein Vier Gewinnt zu programieren. Ursprünglich um uns ein wenig an einer guten KI zu versuchen. Leider scheiterte das schon im Ansatz daran, dass unsere grafische Darstellung nicht so ausgeführt wird, wie wir es uns vorstellen. Um erlich zu sein, wissen wir nicht genau wo das problem liegt. Die Vermutung besteht allerdings darin, dass aus unbekannten Gründen die Standartmethode Paint() nicht ausgeführt wird. Unser Stil ist noch nicht ganz ausgereift, das wissen wir, dennoch bitten wir darum, dass ihr euch das mal anschaut und eure Ideen postet.
Hier der Code:
Ich hoffe ihr versteht unser Problem (wir nämlich nicht!).
Danke!
wir haben versucht ein Vier Gewinnt zu programieren. Ursprünglich um uns ein wenig an einer guten KI zu versuchen. Leider scheiterte das schon im Ansatz daran, dass unsere grafische Darstellung nicht so ausgeführt wird, wie wir es uns vorstellen. Um erlich zu sein, wissen wir nicht genau wo das problem liegt. Die Vermutung besteht allerdings darin, dass aus unbekannten Gründen die Standartmethode Paint() nicht ausgeführt wird. Unser Stil ist noch nicht ganz ausgereift, das wissen wir, dennoch bitten wir darum, dass ihr euch das mal anschaut und eure Ideen postet.
Hier der Code:
Java:
public class Vier_Gewinnt extends JPanel implements Runnable, KeyListener, ActionListener {
//Variablen Deklaration
static Vier_Gewinnt vg;
public static int[][] iFeld = new int[7][6];
public JFrame fHead;
public JPanel pPanel;
static Dimension dSz;
static int c;
static int d;
static ImageIcon imgIGelb;
static ImageIcon imgIRot;
static ImageIcon imgILeer;
static Image imgGelb;
static Image imgRot;
static Image imgLeer;
static Image backBuffer;
public static void main(String[] args) {
//Bilder laden aus src - Ordner
try {
imgIGelb = new ImageIcon(ImageIO.read(new File("FeldGelb.jpeg")));
imgIRot = new ImageIcon(ImageIO.read(new File("FeldRot.jpeg")));
imgILeer = new ImageIcon(ImageIO.read(new File("FeldLeer.jpeg")));
System.out.println("Bild: " + imgIGelb);
} catch (IOException ex) {
Logger.getLogger(Vier_Gewinnt.class.getName()).log(Level.SEVERE, null, ex);
}
imgGelb = imgIGelb.getImage();
imgRot = imgIRot.getImage();
imgLeer = imgILeer.getImage();
vg = new Vier_Gewinnt();
}
public Vier_Gewinnt() {
//Bildschirmgröße auslesen und für weitere Anpassungen vorbereiten
dSz = Toolkit.getDefaultToolkit().getScreenSize();
c = 800 * (dSz.width / 800);
d = 600 * (dSz.height / 600);
//Frame erstellen und definieren
fHead = new JFrame();
fHead.setUndecorated(true);
fHead.setLayout(null);
fHead.setBounds((int) ((dSz.width / 2) - (c / 2)), (int) ((dSz.height / 2) - (d / 2)), c, d);
fHead.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
//Buttons erstellen und dem Frame zufügen
JButton bStart = new JButton("Start");
bStart.setPreferredSize(new Dimension(100, 50));
bStart.setBounds(700 * (dSz.width / 800), 0, 100, 50);
fHead.add(bStart);
JButton bEnd = new JButton("Ende");
bEnd.setPreferredSize(new Dimension(100, 50));
bEnd.setBounds(700 * (dSz.width / 800), 550 * (dSz.height / 600), 100, 50);
fHead.add(bEnd);
//Panel erstellen, definieren und zufügen
pPanel = new JPanel();
// pPanel.setBackground(Color.red);
pPanel.setBounds(0, 0, 700, 600);
pPanel.setPreferredSize(new Dimension((c - (100 * (dSz.width / 800))), d));
fHead.add(pPanel);
fHead.setVisible(true);
//Buttonfunktionen einrichten
bEnd.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
System.exit(0);
}
});
for (int a = 0; a <= 6; a++) {
for (int b = 0; b <= 5; b++) {
iFeld[a][b] = 0;
}
}
bStart.addMouseListener(new java.awt.event.MouseAdapter() {
@Override
public void mouseClicked(java.awt.event.MouseEvent evt) {
System.out.println("start!");
backBuffer = pPanel.createImage(pPanel.getWidth(), pPanel.getHeight());
zeichnen();
}
});
}
//<editor-fold defaultstate="collapsed" desc="Noch zu definierende Funktionen">
@Override
public void run() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void keyTyped(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void keyPressed(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void keyReleased(KeyEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void actionPerformed(ActionEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}
//</editor-fold>
//Versuch des Umschreibens der Paint Funktionen :(
@Override
public void paint(Graphics g) {
super.paint(g);
zeichnen();
System.out.println("paint");
}
@Override
public void paintComponent(Graphics g) {
System.out.println("UHH");
super.paintComponent(g);
zeichnen();
}
//Funktion zum zeichnen des Feldes
public void zeichnen() {
Graphics g = backBuffer.getGraphics();
for (int e = 0; e < 7; e++) {
for (int f = 0; f < 6; f++) {
if (iFeld[e][f] == 0) {
g.drawImage(imgLeer, e * 100, f * 100, 100, 100, this);
} else if (iFeld[e][f] == 1) {
g.drawImage(imgRot, e * 100, f * 100, 100, 100, this);
} else if (iFeld[e][f] == 2) {
g.drawImage(imgGelb, e * 100, f * 100, 100, 100, this);
} else {
System.out.println("Arrayfehler!");
}
}
}
System.out.println("zeichne" + imgLeer.getSource());
}
}
Ich hoffe ihr versteht unser Problem (wir nämlich nicht!).
Danke!