Guten Tag, ich programmiere ein simples 4 gewinnt spiel.
das brett ist mit buttons aufgebaut. wenn einer gedrückt wird soll ein image darauf gelegt werden.
gegogelt habe ich schon. aber nichts funktioniert...
kann sich vll. mal jemand den code ansehen? vll. kommt ja jemand anderes drauf was ich falsch mache
das brett ist mit buttons aufgebaut. wenn einer gedrückt wird soll ein image darauf gelegt werden.
gegogelt habe ich schon. aber nichts funktioniert...
kann sich vll. mal jemand den code ansehen? vll. kommt ja jemand anderes drauf was ich falsch mache
Java:
package JW.prog2.exercises.connectfournew;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.swing.*;
public class Surface
{
private JFrame frame;
private JLabel labelBot;
private JButton newButton;
public JButton button[] =new JButton[42];
private JPanel p1=new JPanel();
URL resource1 = ImageIcon.class.getResource( "redStone.jpg" );
URL resource2 = ImageIcon.class.getResource( "yellowStone.jpg" );
private Icon red = new ImageIcon(resource1);
private Icon yellow = new ImageIcon(resource2);
private Game game = new Game();
public static void main(String[] args)
{
new Surface();
}
public Surface()
{
this.button = new JButton[42];
frame = new JFrame("4 Gewinnt Surface");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
AppActionListener listener = new AppActionListener();
p1.setLayout(new GridLayout(6,7,5,5));
p1.setBackground(Color.lightGray);
newButton = new JButton("new Game");
newButton.addActionListener(listener);
frame.add(newButton, BorderLayout.NORTH);
for(int i=0;i<button.length;i++)
{
//damit dem Button die position übergeben wird, i0-6 ist z.b. die erste reihe also 0 usw.
ButtonClass button = new ButtonClass(i / 7, i % 7);
p1.add(button);
button.addActionListener(listener);
}
frame.add(p1, BorderLayout.CENTER);
labelBot = new JLabel();
frame.getContentPane().setBackground(Color.lightGray);
frame.add(labelBot, BorderLayout.SOUTH);
naechsteRunde();
frame.setSize(600, 600);
frame.setVisible(true);
}
//Abfrage die gestartet wird um herauszufinden ob es bereits einen Gewinner gibt und den nächsten Zug ausgibt
private void naechsteRunde()
{
if (game.isGameOver() == false)
{
String spielerName = game.getNextPlayerColor();
labelBot.setText("Es ist jetzt " + spielerName + "An der Reihe");
}
else if (game.getWinner() == null)
{
labelBot.setText("Spiel ende ohne Gewinner, Neustart mit Button");
}
else
{
labelBot.setText(game.getWinner() + " Hat das Spiel gewonnen");
}
}
//Actionlistener für die Abfrage der Button Events
private class AppActionListener implements ActionListener
{
public void actionPerformed(ActionEvent button)
{
//Abfrage ob ein Button von ButtonClass gedrückt wurde (instanceof)
if (button.getSource() instanceof ButtonClass)
{
ButtonClass pressedButton = (ButtonClass) button.getSource();
game.makeMove(pressedButton.spalte);
}
else if (button.getSource() == newButton)
{
game = new Game();
}
p1.repaint();
//Aktualisierung und Ceck
naechsteRunde();
}
}
private class ButtonClass extends JButton
{
int zeile;
int spalte;
//Konstruktor damit die Buttons wissen wo sie sich befinden
ButtonClass(int zeile, int spalte)
{
this.zeile = zeile;
this.spalte = spalte;
setBackground(new java.awt.Color(210,105,30));
}
//hier wird umgestaltet
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if (game.getBoard().getDiskAt(zeile, spalte) != null)
{
if(game.getBoard().getDiskAt(zeile, spalte).getColor().equals("red"))
//g.setColor(Color.red);
setIcon(red);
else
g.setColor(Color.yellow);
g.fillOval(0, 0, getWidth(), getHeight());
}
}
}
}