G
Guest
Gast
hui..also, da mein lehrer meinte, dass ich da nicht "sauber " programmiert habe, muss bzw soll ich die static entfernen und mittels get + set - methoden 'ersetzen' .. allerdings funktioniert das irgendwie nicht..
hier mal ein beispiel wo es auch nicht funktioniert..ich will bei der variable 'ki' das static entfernen..und in ende.java will ich 'ki' mittels der getKI methode in TTT den aktuellen wert bekommen..
hier TTT.java
und hier ende.java
wieso funktioniert das nicht ? naja wäre nett, wenn mir wer helfen könnte
mfg
hier mal ein beispiel wo es auch nicht funktioniert..ich will bei der variable 'ki' das static entfernen..und in ende.java will ich 'ki' mittels der getKI methode in TTT den aktuellen wert bekommen..
hier TTT.java
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
public class TTT {
private Container cont, cont1;
private String a,b;
private static Board1 small = new Board1();
private static Board2 big = new Board2();
private static Menubar menubar = new Menubar();
public JFrame ttt;
private JComboBox howtoplay, levelbox;
private boolean ki=false;
private ImageIcon icon = new ImageIcon("tictactoe.jpg");
private JTextField name;
public static TTT game = new TTT();
class FieldListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("smallField")) {
small.window();
ttt.dispose();
if(ki==true) {
System.out.println("Text von field" + name.getText());
small.play(false);
}
else {
System.out.println("Text von field" + name.getText());
small.play(true);
}
}
else if(e.getActionCommand().equals("bigField")) {
big.window();
ttt.dispose();
if(ki==true) {
big.play(false);
System.out.println("Text von field" + name.getText());
}
else {
big.play(true);
System.out.println("Text von field" + name.getText());
}
}
}
}
class BoxListener implements ActionListener {
public void actionPerformed(ActionEvent h) {
if(howtoplay.getSelectedIndex()==1) {
System.out.println("KI");
ki = true;
// addTextfield();
}
else if(howtoplay.getSelectedIndex()==0) {
System.out.println("2 players");
ki = false;
}
}
}
class BoxListener1 implements ActionListener {
public void actionPerformed(ActionEvent e) {
System.out.println("jls");
}
}
public static void main(String[] args) {
game.window();
}
public boolean getKI() {
return ki;
}
public static TTT getObject() {
return game;
}
/* public void addTextfield() {
System.out.println("addtextfield()");
JPanel pane2 = new JPanel();
pane2.setLayout(new GridLayout(2,1));
JTextField blub = new JTextField();
pane2.add(blub);
cont.add(blub);
ttt.repaint();
ttt.setVisible(false);
ttt.setVisible(true);
} */
public void selectLevel() {
System.out.println("blub");
cont1 = ttt.getContentPane();
levelbox = new JComboBox(new String[] {" ","Leicht","´Schwer"});
levelbox.addActionListener(new BoxListener());
cont1.add(levelbox);
}
public void window() {
ttt = new JFrame("Tic Tac Toe");
cont = ttt.getContentPane();
createTTT(cont);
ttt.setJMenuBar(menubar.createTTTMenuBar());
ttt.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ttt.setSize(400,200);
ttt.setVisible(true);
ttt.setResizable(false);
}
public void createTTT(Container cont) {
cont.setLayout(new GridLayout(3, 3));
JButton smallField = new JButton("3x3 Feld");
smallField.setActionCommand("smallField");
smallField.addActionListener(new FieldListener());
cont.add(smallField);
JButton bigField = new JButton("4x4 Feld");
bigField.setActionCommand("bigField");
bigField.addActionListener(new FieldListener());
cont.add(bigField);
JPanel pane1 = new JPanel();
pane1.setLayout(new GridLayout(2,1));
pane1.add(new JLabel("Name"));
name = new JTextField();
pane1.add(name);
cont.add(pane1);
JPanel pane = new JPanel();
pane.setLayout(new GridLayout(2,1));
cont.add(pane);
howtoplay = new JComboBox(new String[] {"2 Spieler","Gegen Computer"});
howtoplay.addActionListener(new BoxListener());
cont.add(howtoplay);
}
public void close() {
ttt.dispose();
}
}
und hier ende.java
Code:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Ende {
public static int cnt_u;
public static int cnt_w;
public static int cnt_l;
public static int gewonnen = 0;
public static int j = 0;
private Container cont;
public JDialog spielende;
private static int nOfBoard;
public static Highscore highscore = new Highscore();
public static BoardWindow bw = new BoardWindow();
private TTT ttt = TTT.getObject();
public static Board1 board1 = new Board1();
public static Board2 board2 = new Board2();
public static double cnt_games=0;
private static final int POINTS_WIN_LOSE = 300;
private static final int POINTS_DRAW = 100;
class SpielEndeListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Ja")) {
board1.close();
board1.neu();
close();
}
else if(e.getActionCommand().equals("Nein")) {
System.out.println("Kein Spiel - Board1");
cont.removeAll();
board1.close();
close();
boolean blub = game.getKI(); // !!!!!!!!! HIER BEKOMM ich ne nullpointer exception o.O
if(blub==true) {
System.out.println("Ende - Ki == true - Board1");
highscore.createHighscoreWindow();
}
}
}
}
class SpielEndeListener2 implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("Ja")) {
board2.close();
board2.neu();
close();
}
else if(e.getActionCommand().equals("Nein")) {
boolean blub = game.getKI();
if(blub==false) {
System.out.println("Kein Spiel - Board2");
}
cont.removeAll();
board2.close();
close();
if(blubi==true) {
System.out.println("Ende - KI == true - Board2");
highscore.createHighscoreWindow();
}
}
}
}
public void close() {
spielende.dispose();
}
public void spielende(String z, int numberOfBoard) {
gewonnen = 1;
spielende = new JDialog(board1.frame, "Spielende", true);
cont= spielende.getContentPane();
createSpielende(cont, z, numberOfBoard);
spielende.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
spielende.setSize(300,150);
//spielende.setLocation(300,300);
spielende.setVisible(true);
spielende.setResizable(false);
}
public void createSpielende(Container cont, String z, int numberOfBoard) {
cnt_games++;
nOfBoard = numberOfBoard;
cont.setLayout(new GridLayout(3, 2));
JLabel label = new JLabel("");
if(z.equals("Unentschieden")) {
j+= POINTS_DRAW;
label = new JLabel("Das Spiel endete mit einem Unentschieden \n");
System.out.println("Unentschienden " +cnt_u);
cnt_u++;
}
else if (z.equals("x")) {
label = new JLabel("X hat gewonnen \n");
j+= POINTS_WIN_LOSE;
System.out.println("X wins");
cnt_w++;
System.out.println("ANzhal der Wins " + cnt_w);
}
else if (z.equals("o")) {
label = new JLabel("O hat gewonnen \n");
j-= POINTS_WIN_LOSE;
System.out.println("O wins");
cnt_l++;
System.out.println("ANzahl der loses " +cnt_l);
}
cont.add(label);
JLabel neuesSpiel = new JLabel("Neues Spiel ?");
cont.add(neuesSpiel);
if(numberOfBoard==1) {
JButton yes = new JButton("Ja");
yes.addActionListener(new SpielEndeListener());
cont.add(yes);
JButton no = new JButton("Nein");
no.addActionListener(new SpielEndeListener());
cont.add(no);
}
else if (numberOfBoard==2) {
JButton yes = new JButton("Ja");
yes.addActionListener(new SpielEndeListener2());
cont.add(yes);
JButton no = new JButton("Nein");
no.addActionListener(new SpielEndeListener2());
cont.add(no);
}
}
}
wieso funktioniert das nicht ? naja wäre nett, wenn mir wer helfen könnte
mfg