Hallo, bin Schüler der 12 Klasse und soll für den Informatikkurs ein Spiel (=Vier gewinnt) programmieren. Momentan scheitere ich aber an meinem Resetbutton. Nachdem man ein Spiel gespielt hat soll man auf den Button klicken können, und sich ein neues Spiel öffnen. Klingt eigentlich einfach. Aber selbst nach intentivem Nachdenken und langer Internetrecherche komme ich einfach nicht voran. Als letzte Möglichkeit wende ich mich also ans Forum.
Als Lösungsansätze hab ich mir überlegt:
1. Das Spielfeld einfach "übermalen", also wieder komplett blau machen, um dann wieder gelb und rot drüber machen zu können
2. Das Programm automatisch beenden und neustarten
hier der code. würde mich über eine Antwort sehr freuen.
Als Lösungsansätze hab ich mir überlegt:
1. Das Spielfeld einfach "übermalen", also wieder komplett blau machen, um dann wieder gelb und rot drüber machen zu können
2. Das Programm automatisch beenden und neustarten
hier der code. würde mich über eine Antwort sehr freuen.
Java:
/**
*
*
*
* 12.05.09
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.Color.*;
import javax.swing.JComponent.*;
import java.lang.Object.*;
import java.lang.Runtime.*;
public class VierGewinnt implements ActionListener
{
JButton[][] btns;
JPanel gitter;
JButton newgame;
JButton reset;
JButton beenden;
JLabel playerone;
JLabel playertwo;
JLabel timer;
JLabel yourturn;
int runde = 0;
int ZEILEN = 7; // zwei KONSTANTEN, die die Anzahl der Zeilen und Spalten vorgeben
int SPALTEN = 6;
int zeile=0;
int spalte=0;
public VierGewinnt()
{
initBtns();
gui();
}
public void initBtns()
{
btns = new JButton[ZEILEN][SPALTEN];
for (int zeile=0; zeile<ZEILEN; zeile++)
{
for (int spalte=0; spalte<SPALTEN; spalte++)
{
btns[zeile][spalte] = new JButton(""); // inhalt ist ein ^^
String cmd = String.valueOf(zeile)+String.valueOf(spalte);
// btns[zeile][spalte].setText(cmd);
btns[zeile][spalte].setActionCommand(cmd);
btns[zeile][spalte].setBackground(Color.blue);
gitter.add(btns[zeile][spalte]);
btns[zeile][spalte].addActionListener(this);
}
}
}
private void gui ()
{
JFrame fenster = new JFrame ("Vier gewinnt!");
//control
JPanel control = new JPanel();
newgame = new JButton ("New game");
reset = new JButton ("Reset");
reset.addActionListener(this);
beenden = new JButton("Beenden");
beenden.addActionListener(this);
control.add (newgame);
control.add (reset);
control.add (beenden);
//anzeige
JPanel anzeige = new JPanel();
anzeige.setLayout(new GridLayout(4,1));
playerone = new JLabel ("Player One");
playertwo = new JLabel ("Player Two");
timer = new JLabel ("Timer");
yourturn = new JLabel ("Your turn");
anzeige.add (timer);
anzeige.add (playerone);
anzeige.add (playertwo);
anzeige.add (yourturn);
//gitter
gitter = new JPanel();
gitter.setLayout(new GridLayout(ZEILEN,SPALTEN)); // hier auch die KONSTANTEN benutzen
initBtns();
JPanel gesamt = new JPanel();
gesamt.setLayout (new BorderLayout());
gesamt.add (gitter, BorderLayout.CENTER);
gesamt.add (anzeige, BorderLayout.EAST);
gesamt.add (control, BorderLayout.SOUTH);
fenster.getContentPane().add(gesamt);
fenster.pack();
fenster.setVisible(true);
fenster.setLocation(200,200);
fenster.setSize(700,500);
}
public void reset()
{
}
public void actionPerformed(ActionEvent e)
{
int lauf = SPALTEN;
String text; // Inhalt des Buttons
String neutext; // neu zu schreibender Inhalt des Buttons
Color col; // Farbe für den neuen Button
JButton btn = (JButton)e.getSource();
String cmd = btn.getActionCommand();
if (!cmd.equals("New game") && !cmd.equals("Reset") && !cmd.equals("Beenden"))
{
int spalte = Integer.parseInt(cmd.substring(1,2)); // Wir erhalten in der Variable Spalte den Wert der gerade aktuell angeklickten Spalte
text = btns[lauf][spalte].getText(); // text ist der Text des zu überprüfenden Buttons
while ((text.indexOf(" ") != -1) && (lauf > -1)) // Solange kein Leerzeichen im Text und lauf größer Null ist...
{
lauf = lauf -1;
text = btns[lauf][spalte].getText();
}
if (runde%2 == 0)
{
col = Color.red;
neutext = " ";
}
else
{
col = Color.yellow;
neutext = " ";
}
btns[lauf][spalte].setText(neutext); // Der Button wird mit den neuen Attributen gesetzt.
btns[lauf][spalte].setBackground(col);
runde++;
}
else if (cmd.equals("New game"))
{
// Aktion für neues Spiel durchführen
}
else if (cmd.equals("Reset"))
{
reset();
}
else if (cmd.equals("Beenden"))
{
System.exit(0);
}
}
public static void main (String[] args)
{
VierGewinnt spiel = new VierGewinnt();
}
}