[Java] Benötige Hilfe!

G

GTA 3

Guest
[Java] Benötige Hilfe!

Hi,
bin grad dabei Tic Tac Toe zu programmieren aber ich hab jetzt eines der Mommente wo ich nicht weiß wie ich weiter machen soll.

Hier erstmal der Code:

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Oberflaeche extends JFrame {
private Steuerung dieSteuerung = new Steuerung();
public Oberflaeche() {
getContentPane().add(new Inhalt(dieSteuerung));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
Oberflaeche dieOberflaeche = new Oberflaeche();
dieOberflaeche.setTitle("Tic-Tac-Toe 1.0");
dieOberflaeche.setResizable(false);
dieOberflaeche.setVisible(true);
dieOberflaeche.setSize(600+dieOberflaeche.getInsets().left+dieOberflaeche.getInsets().right,600+dieOberflaeche.getInsets().top+dieOberflaeche.getInsets().bottom);
}
}

class Inhalt extends JPanel {
private Steuerung dieSteuerung;
public Inhalt(Steuerung steu) {
dieSteuerung = steu;
setLayout(null);
JButton starteSpiel = new JButton("Spiel starten");
final Icon player0 = new ImageIcon("./player0.gif");
final Icon player1 = new ImageIcon("./player1.gif");
final JLabel button[] = new JLabel[9];
int firstStart = 0;
JLabel spielstand[] = new JLabel[2];
final int buttonPressed[] = {0,0,0,0,0,0,0,0,0};
final int currentPlayer = 0;
if(firstStart == 0) {
NewGame.main(steu);
firstStart = 1;
}
// Spielbuttons
button[0] = new JLabel();
button[0].setBackground(new java.awt.Color(2,64,1));
button[0].setBounds(115,115,120,120);
add(button[0]);

button[1] = new JLabel();
button[1].setBounds(240,115,120,120);
button[1].setBackground(new Color(2,64,1));
add(button[1]);

button[2] = new JLabel();
button[2].setBounds(365,115,121,121);
button[2].setBackground(new Color(2,64,1));
add(button[2]);

button[3] = new JLabel();
button[3].setBounds(115,240,120,120);
button[3].setBackground(new Color(2,64,1));
add(button[3]);

button[4] = new JLabel();
button[4].setBounds(240,240,120,120);
button[4].setBackground(new Color(2,64,1));
add(button[4]);

button[5] = new JLabel();
button[5].setBounds(365,240,120,120);
button[5].setBackground(new Color(2,64,1));
add(button[5]);

button[6] = new JLabel();
button[6].setBounds(115,365,120,120);
button[6].setBackground(new Color(2,64,1));
add(button[6]);

button[7] = new JLabel();
button[7].setBounds(240,365,120,120);
button[7].setBackground(new Color(2,64,1));
add(button[7]);

button[8] = new JLabel();
button[8].setBounds(365,365,120,120);
button[8].setBackground(new Color(2,64,1));
add(button[8]);

spielstand[0] = new JLabel("0");
spielstand[0].setBounds(239,527,49,61);
spielstand[0].setHorizontalAlignment(SwingConstants.CENTER);
spielstand[0].setFont(spielstand[0].getFont().deriveFont(32f));
spielstand[0].setForeground(Color.white);
add(spielstand[0]);

JLabel trenner = new JLabel(":");
trenner.setBounds(288,527,25,61);
trenner.setHorizontalAlignment(SwingConstants.CENTER);
trenner.setFont(trenner.getFont().deriveFont(32f));
trenner.setForeground(Color.white);
add(trenner);

spielstand[1] = new JLabel("0");
spielstand[1].setBounds(313,527,49,61);
spielstand[1].setHorizontalAlignment(SwingConstants.CENTER);
spielstand[1].setFont(spielstand[1].getFont().deriveFont(32f));
spielstand[1].setForeground(Color.white);
add(spielstand[1]);

JLabel vslayer = new JLabel((String)(NewGameGUI.namePlayer1.getText())+" VS "+(String)(NewGameGUI.namePlayer2.getText()));
vslayer.setHorizontalAlignment(SwingConstants.CENTER);
vslayer.setBounds(250,15,300,20);
add(vslayer);

//starteSpielButton
add(starteSpiel);
starteSpiel.setBounds(10,10,200,40);
starteSpiel.setBackground(new Color(122,139,139));
starteSpiel.setForeground(new Color(250,200,0));

starteSpiel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
for(int i = 0; i<=8; i++) {
button.setIcon(null);
buttonPressed = 0;
}
}
});

button[0].addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(buttonPressed[0] == 0) {
if(dieSteuerung.getPlayer() == 0) {
button[0].setIcon(player0);
dieSteuerung.changePlayer();
} else {
button[0].setIcon(player1);
dieSteuerung.changePlayer();
}
// dieSteuerung.setPoint(1);
buttonPressed[0] = 1;
}
}
});

button[1].addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(buttonPressed[1] == 0) {
if(dieSteuerung.getPlayer() == 0) {
button[1].setIcon(player0);
dieSteuerung.changePlayer();
} else {
button[1].setIcon(player1);
dieSteuerung.changePlayer();
}
// dieSteuerung.setPoint(1);
buttonPressed[1] = 1;
}
}
});

button[2].addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(buttonPressed[2] == 0) {
if(dieSteuerung.getPlayer() == 0) {
button[2].setIcon(player0);
dieSteuerung.changePlayer();
} else {
button[2].setIcon(player1);
dieSteuerung.changePlayer();
}
// dieSteuerung.setPoint(2);
buttonPressed[2] = 1;
}
}
});

button[3].addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(buttonPressed[3] == 0) {
if(dieSteuerung.getPlayer() == 0) {
button[3].setIcon(player0);
dieSteuerung.changePlayer();
} else {
button[3].setIcon(player1);
dieSteuerung.changePlayer();
}
// dieSteuerung.setPoint(3);
buttonPressed[3] = 1;
}
}
});

button[4].addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(buttonPressed[4] == 0) {
if(dieSteuerung.getPlayer() == 0) {
button[4].setIcon(player0);
dieSteuerung.changePlayer();
} else {
button[4].setIcon(player1);
dieSteuerung.changePlayer();
}
// dieSteuerung.setPoint(4);
buttonPressed[4] = 1;
}
}
});

button[5].addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(buttonPressed[5] == 0) {
if(dieSteuerung.getPlayer() == 0) {
button[5].setIcon(player0);
dieSteuerung.changePlayer();
} else {
button[5].setIcon(player1);
dieSteuerung.changePlayer();
}
// dieSteuerung.setPoint(5);
buttonPressed[5] = 1;
}
}
});

button[6].addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(buttonPressed[6] == 0) {
if(dieSteuerung.getPlayer() == 0) {
button[6].setIcon(player0);
dieSteuerung.changePlayer();
} else {
button[6].setIcon(player1);
dieSteuerung.changePlayer();
}
// dieSteuerung.setPoint(6);
buttonPressed[6] = 1;
}
}
});

button[7].addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(buttonPressed[7] == 0) {
if(dieSteuerung.getPlayer() == 0) {
button[7].setIcon(player0);
dieSteuerung.changePlayer();
} else {
button[7].setIcon(player1);
dieSteuerung.changePlayer();
}
// dieSteuerung.setPoint(7);
buttonPressed[7] = 1;
}
}
});

button[8].addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e) {
if(buttonPressed[8] == 0) {
if(dieSteuerung.getPlayer() == 0) {
button[8].setIcon(player0);
dieSteuerung.changePlayer();
} else {
button[8].setIcon(player1);
dieSteuerung.changePlayer();
}
// dieSteuerung.setPoint(8);
buttonPressed[8] = 1;
}
}
});

}

//* public void win(int buttonPressed){
//if(buttonPressed[0]==1&&buttonPressed[1]==1&&buttonPressed[2]==1){
// System.out.println("You Win!");
//}
//}

public void paintComponent(Graphics g) {
g.drawImage(getToolkit().getImage("./background.jpg"),0,0,null);
}
}

class NewGame extends JFrame {
public NewGame(Steuerung steu) {
getContentPane().add(new NewGameGUI(steu,this));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(Steuerung steu) {
NewGame dieOberflaeche = new NewGame(steu);
dieOberflaeche.setTitle("Willkommen!");
dieOberflaeche.setResizable(false);
dieOberflaeche.setAlwaysOnTop(true);
dieOberflaeche.setVisible(true);
dieOberflaeche.setSize(500+dieOberflaeche.getInsets().left+dieOberflaeche.getInsets().right,150+dieOberflaeche.getInsets().top+dieOberflaeche.getInsets().bottom);
}
}

class NewGameGUI extends JPanel {
static JTextField namePlayer1 = new JTextField(20);
static JTextField namePlayer2 = new JTextField(20);
static JFrame frame;
public NewGameGUI(Steuerung steu,JFrame frame) {
setLayout(null);
this.frame = frame;
namePlayer1.setBounds(100,70,350,20);
add(namePlayer1);

namePlayer2.setBounds(100,90,350,20);
add(namePlayer2);

JLabel willkommen = new JLabel("Willkommen!");
willkommen.setHorizontalAlignment(SwingConstants.CENTER);
willkommen.setBounds(0,0,500,40);
add(willkommen);

JLabel willkommenText = new JLabel("Bitte gebt nachfolgend eure Namen ein, um ein neues Spiel zu beginnen.");
willkommenText.setHorizontalAlignment(SwingConstants.CENTER);
willkommenText.setBounds(0,30,500,40);
add(willkommenText);

JLabel player1 = new JLabel("Player 1:");
player1.setHorizontalAlignment(SwingConstants.CENTER);
player1.setBounds(0,70,100,20);
add(player1);

JLabel player2 = new JLabel("Player 2:");
player2.setHorizontalAlignment(SwingConstants.CENTER);
player2.setBounds(0,90,100,20);
add(player2);

JTextField namePlayer1 = new JTextField(20);
namePlayer1.setBounds(100,70,350,20);
add(namePlayer1);

JTextField namePlayer2 = new JTextField(20);
namePlayer2.setBounds(100,90,350,20);
add(namePlayer2);

JButton ok = new JButton("OK");
ok.setBounds(200,120,100,20);
add(ok);
ok.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(MouseEvent e){
NewGameGUI.frame.dispose();
}
});
}
public String namePlayer1getText(){
return namePlayer1.getText();
}
public String namePlayer2getText(){
return namePlayer2.getText();
}
}


Und zwar will ich jetzt einbauen das das Spiel jetzt erkennen soll, wer gewonnen hat und wer nicht
Nur leider weiß ich hier jetzt nicht weiter.... Hoffe ihr könnt mir helfen.

Hier sind noch die anderen Klassen.
public class Steuerung {
private int currentPlayer = 0;

public int getPlayer() {
return currentPlayer;
}

public void changePlayer() {
if(currentPlayer == 0) {
currentPlayer = 1;
} else {
currentPlayer = 0;
}
}
}

public class Daten extends Steuerung {
private String spieler;
private int spielpunkte;
private int spielzug = 0;
private int[] punktespieler = new int[9];

public Daten (String spieler) {
this.spieler = spieler;
spielpunkte = 0;
}

public void setPoint(int feld) {
punktespieler[spielzug] = feld;
spielzug++;
}
}
Ich weiß, mit ner normalen If-SChleife aber wenn ich button[0] z.B. schreib, bekomm ich immer einen Compilerfehler, wie würdet ihr das machen ?


Gruß
 
Zuletzt bearbeitet:
AW: [Java] Benötige Hilfe!

Na um zu prüfen ob jemand gewonnen hast, musst du doch nur prüfen ob eine der 8 Gewinnmöglichkeiten erfüllt ist. Sollte in der Regel recht einfach sein und auf Vergleich des Status der einzelnen Felder hinaus laufen.

Leider ist dein Quellcode jetzt nicht gerade zum schnellen lesen geeignet.
 
AW: [Java] Benötige Hilfe!

1. Es gibt keine If Schleifen! (sry, aber unter meinen Freunden hab ich schon den Status des Typen, der quer durch die Klasse brüllt, dass es keine if Schleifen gibt)
2. Jetzt weiß ich, warum ich lieber C++ programmiere als java...

Achja, nochn kleiner Tipp:
Hier im Forum sind die meisten Leute recht hilfsbereit, aber du kannst nicht erwarten, dass sie dir dein Problem lösen und du einfach all dein Code posten musst.
Wenn du genau sagst, wo dein Problem ist, kriegst du wohl eher hilfe ;)
Den Compilerfehler posten wäre zb. schonmal was. Aber besser ist, dass du uns nur die wichtige Stelle sagst und uns nicht 1000 loc hier hin haust.
 
AW: [Java] Benötige Hilfe!

Ich habs somit probiert:

public void win(int buttonPressed){
if(buttonPressed[0]==1&&buttonPressed[1]==1&&buttonPressed[2]==1){
System.out.println("You Win!");
}
}

Aber der Compiler meckert:

array required but int found :(
 
AW: [Java] Benötige Hilfe!

Der Compiler hat ja auch vollkommen Recht, du bekommst ja ein int rein und kein int[]
 
AW: [Java] Benötige Hilfe!

Welche Zeile, sagt der Compiler denn?
Also ich kann kein Java... aber:
Du hast bei einer Funktion fälschlicherweise statt eines Arrays eine Zahl angegeben.
ich könnte mir vorstellen, dass buttonPressed selber kein int ist, sondern irgend eine Art von array...
Aber nunja.. ich kann kein Java, warum helf ich eig ^^
 
AW: [Java] Benötige Hilfe!

Ja welcher typ ist denn PressedButton?
Das müsste ich mal wissen..
Also entweder, mein wesentlich erfahrener Kollege hat recht, dann lass enfach mal alle eckigen klammern weg.

Oder ich habe recht, dann muss ich aber wissen, welche member die klasse pressedbutton hat..
 
AW: [Java] Benötige Hilfe!

buttonPressed habe ich weiter oben angegeben.

final int buttonPressed[] = {0,0,0,0,0,0,0,0,0};
 
AW: [Java] Benötige Hilfe!

Dannach dürfte dein Array nicht mehr vom Parameter "verdeckt" sein und das ganze eigentlich gehen. ;)

Edit:
Kannst du das bitte mal als Datei bereitstellen? Das ist nicht brauchbar zu lesen!

Wenn ich das jetzt beim versuch zu entziffern richtig gesehen habe, dann ist dein Array nur lokal in einer Funktion, wie willst du denn da je wieder dran kommen?
 
Zuletzt bearbeitet:
AW: [Java] Benötige Hilfe!

hey

ich hab das auch schon mal programmiert. allerdings hat bei mir jeder button ein int-array-element bedient. der benutzer hat als wert sozusagen immer "1" an einer position eingetragen und der PC den wert 9.
um zu guggn, ob wer gewonnen hat, wurde nach jeder änderung eine methode "testwin()" ausgeführt. da hab ich dann rechnerisch geguggt, o irgendwo diagonal, hor. oder vertikal als summe 3 oder 27 rauskam.....

kp, ob dir das hilft

ps: bildschirmtastatur is kagge-anstrengend-.-
 
AW: [Java] Benötige Hilfe!

Falls du es noch nicht gelöst hast...

Es reicht auch, wenn du anstatt

public void win(int buttonPressed)
{
if(buttonPressed[0]==1&&buttonPressed[1]==1&&buttonPressed[2]==1)
{
System.out.println("You Win!");
}
}

die Methode einfach als

public void win()

deklarierst --> schließlich ist eine Parameterübergabe an dieser Stelle nicht notwendig.


MfG
 
AW: [Java] Benötige Hilfe!

wahrscheinlich ... oder er hat einen anderen Ort gefunden, an dem es Hilfe/Anleitungen gab.
Weil für solche Sachen sollte goggel eigenltich massenweise Tutorials finden ..
 
AW: [Java] Benötige Hilfe!

Nein, ich habe das Projekt neugestartet, und habs hingekriegt!
 
Zurück