Hallo,
ich programmiere zum ersten mal Java in Verbindung mit Awt und swing. Nun bin ich dabei, mir ein kleines Vier gewinnt Spiel zu schreiben und scheitere daran das Canvas, welches das Spielfeld darstellt in die gleiche Frame einzubinden, die die Buttons enthält, mit denen man Coins einwirft.
Ich habe zwei Klassen:
1. SpielFeld Hier ist die meiste Spiellogik und das Frame enthalten
(ja ich weiß das ich das noch viel sauberer und kürzer hätte gestalten können)
2. Modell extends Canvas Hier ist nur das Canvas
Hier mal ein Screenshot vom frame
Zum coden verwende ich Eclipse
ich programmiere zum ersten mal Java in Verbindung mit Awt und swing. Nun bin ich dabei, mir ein kleines Vier gewinnt Spiel zu schreiben und scheitere daran das Canvas, welches das Spielfeld darstellt in die gleiche Frame einzubinden, die die Buttons enthält, mit denen man Coins einwirft.
Ich habe zwei Klassen:
1. SpielFeld Hier ist die meiste Spiellogik und das Frame enthalten
(ja ich weiß das ich das noch viel sauberer und kürzer hätte gestalten können)
2. Modell extends Canvas Hier ist nur das Canvas
Hier mal ein Screenshot vom frame
Zum coden verwende ich Eclipse
Java:
public class SpielFeld
{
static JFrame frame = new JFrame("Vier Gewinnt");
int feld[][] = new int[6][7];
final int Leer = 0;
final int Blau = 1;
final int Gelb = -1;
private boolean BlauAmZug;
private int zeiger0 = 5; // 1 reihe voll?
private int zeiger1 = 5; // 2 etc.
private int zeiger2 = 5; // 3 ..
private int zeiger3 = 5; // 4
private int zeiger4 = 5; // 5
private int zeiger5 = 5; // 6
private int zeiger6 = 5; // 7
/*
* Konstruktor der Klasse SpielFeld.
* Erzeugt die sieben JButtons die nacher zum einwerfen von Coins dienen.
* Weißt jedem JButton mittels einer inneren anonymen Klasse eine Aufgabe zu,
* die sobald der Button gedrückt wurde abgearbeitet werden soll.
*
*/
public SpielFeld()
{
JButton testbutton = new JButton("Testbutton");
testbutton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
arrayausgeben();
}
});
JButton button1 = new JButton("Wirf in 1");
JButton button2 = new JButton("Wirf in 2");
JButton button3 = new JButton("Wirf in 3");
JButton button4 = new JButton("Wirf in 4");
JButton button5 = new JButton("Wirf in 5");
JButton button6 = new JButton("Wirf in 6");
JButton button7 = new JButton("Wirf in 7");
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button 1 gedrückt");
if (zeiger0>=0 && BlauAmZug)
{
feld[zeiger0][0] = Blau;
zeiger0--;
BlauAmZug = false;
siegertest();
}
else if (zeiger0>=0 && !BlauAmZug)
{
feld[zeiger0][0] = Gelb;
zeiger0--;
BlauAmZug = true;
siegertest();
}
else
{
System.out.println("Diese Reihe ist voll");
}
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button 2 gedrückt");
if (zeiger1>=0 && BlauAmZug)
{
feld[zeiger1][1] = Blau;
zeiger1--;
BlauAmZug = false;
siegertest();
}
else if (zeiger1>=0 && !BlauAmZug)
{
feld[zeiger1][1] = Gelb;
zeiger1--;
BlauAmZug = true;
siegertest();
}
else
{
System.out.println("Diese Reihe ist voll");
}
}
});
button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button 3 gedrückt");
if (zeiger2>=0 && BlauAmZug)
{
feld[zeiger2][2] = Blau;
zeiger2--;
BlauAmZug = false;
siegertest();
}
else if (zeiger2>=0 && !BlauAmZug)
{
feld[zeiger2][2] = Gelb;
zeiger2--;
BlauAmZug = true;
siegertest();
}
else
{
System.out.println("Diese Reihe ist voll");
}
}
});
button4.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button 4 gedrückt");
if (zeiger3>=0 && BlauAmZug)
{
feld[zeiger3][3] = Blau;
zeiger3--;
BlauAmZug = false;
siegertest();
}
else if (zeiger3>=0 && !BlauAmZug)
{
feld[zeiger3][3] = Gelb;
zeiger3--;
BlauAmZug = true;
siegertest();
}
else
{
System.out.println("Diese Reihe ist voll");
}
}
});
button5.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button 5 gedrückt");
if (zeiger4>=0 && BlauAmZug)
{
feld[zeiger4][4] = Blau;
zeiger4--;
BlauAmZug = false;
siegertest();
}
else if (zeiger4>=0 && !BlauAmZug)
{
feld[zeiger4][4] = Gelb;
zeiger4--;
BlauAmZug = true;
siegertest();
}
else
{
System.out.println("Diese Reihe ist voll");
}
}
});
button6.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button 6 gedrückt");
if (zeiger5>=0 && BlauAmZug)
{
feld[zeiger5][5] = Blau;
zeiger5--;
BlauAmZug = false;
siegertest();
}
else if (zeiger5>=0 && !BlauAmZug)
{
feld[zeiger5][5] = Gelb;
zeiger5--;
BlauAmZug = true;
siegertest();
}
else
{
System.out.println("Diese Reihe ist voll");
}
}
});
button7.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Button 7 gedrückt");
if (zeiger6>=0 && BlauAmZug)
{
feld[zeiger6][6] = Blau;
zeiger6--;
BlauAmZug = false;
siegertest();
}
else if (zeiger6>=0 && !BlauAmZug)
{
feld[zeiger6][6] = Gelb;
zeiger6--;
BlauAmZug = true;
siegertest();
}
else
{
System.out.println("Diese Reihe ist voll");
}
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FlowLayout flowlayout = new FlowLayout();
frame.setLayout(flowlayout);
frame.setSize(new Dimension(800, 700));
//frame.getContentPane().add(testbutton);
frame.getContentPane().add(button1);
frame.getContentPane().add(button2);
frame.getContentPane().add(button3);
frame.getContentPane().add(button4);
frame.getContentPane().add(button5);
frame.getContentPane().add(button6);
frame.getContentPane().add(button7);
frame.setVisible(true);
Modell myModell = new Modell();
frame.getContentPane().add(myModell);
}
Java:
public class Modell extends Canvas {
public Modell()
{
}
public void paint(Graphics g)
{
Graphics2D g2D ;
g2D = (Graphics2D) g;
g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
String fileName = "a.jpg";
Image img = getToolkit().getImage(fileName);
AffineTransform aTran = new AffineTransform();
aTran.translate(50.0f, 20.0f);
g2D.transform(aTran);
g2D.drawImage(img, new AffineTransform(), this);
g2D.setColor(Color.black);
g2D.drawRect(1, 1, 700, 600); // Spielfeldrahmen
for (int i = 100; i <=700; i = i+100) {
g2D.drawLine(1, i, 700, i); //horizontalen Linien
}
for (int i = 0; i <= 600; i = i+100) {
g2D.drawLine(i, 1, i, 600); //vertikalen Linien
}
for (int i = 0; i <=600; i=i+100) {
g2D.setColor(Color.red);
g2D.drawOval(i, 500, 100, 100); //coins malen
g2D.drawOval(i, 400, 100, 100);
g2D.drawOval(i, 300, 100, 100);
g2D.drawOval(i, 200, 100, 100);
g2D.drawOval(i, 100, 100, 100);
g2D.drawOval(i, 0, 100, 100);
g2D.setColor(Color.white); //ausfuellfarbe der coins
g2D.fillOval(i, 500, 100, 100);
g2D.fillOval(i, 400, 100, 100);
g2D.fillOval(i, 300, 100, 100);
g2D.fillOval(i, 200, 100, 100);
g2D.fillOval(i, 100, 100, 100);
g2D.fillOval(i, 0, 100, 100);
}
}
}
Zuletzt bearbeitet: