Programm objektorientierter machen

Status
Nicht offen für weitere Antworten.

Coldstorm

Aktives Mitglied
Hi,
ich arbeite zurzeit an einem Schachspiel in Java, Mensch gegen Mensch.
Ich hab schon einmal eine Schach geschrieben, allerdings nur in eine Klasse, jetzt will ich es halt nur objektorientiert machen.
Dazu hab ich schon ein Klassendiagramm(im Anhang) entworfen, an das ich mich
UNGEFÄHR richten möchte.
Ich müsste nun dann eigentlich nur irgendwie den Code den ich schon geschrieben habe ausschneiden und in die Klassen verteilen und natürlich mich um die Beziehungen kümmern. Aber habe leider noch Probleme damit:

Hier mal der Code(nicht komplett, aber das wichtigste, paar Methoden fehlen, ich hoffe es ist nicht zu unübersichtlich):

Code:
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Schach extends JPanel implements MouseListener, ActionListener {

	private Image Bild[];

	static final int Schwarz = 0;
	static final int Weiß = 1;

	static final int Leer = -1;
	static final int BauerS = 0;
	static final int TurmS = 1;
	static final int SpringerS = 2;
	static final int LaeuferS = 3;
	static final int DameS = 4;
	static final int KoenigS = 5;
	static final int BauerW = 6;
	static final int TurmW = 7;
	static final int SpringerW = 8;
	static final int LaeuferW = 9;
	static final int DameW = 10;
	static final int KoenigW = 11;

	int Brett[][];

	int AktiveFigur[] = { -1, -1 };

	// Welcher Spieler soll beginnen?
	int nPlayer = Weiß;


	JFrame applikation;
	Container container;

	// Menüleiste
	JMenuBar menueLeiste;

	// Menüleiste Elemente
	JMenu datei;
	JMenu spielmodus;
	JMenu hilfe;



	// Datei
	JMenuItem neuesSpiel;
	JMenuItem beenden;



	// Spielmodus
	JMenuItem vsMensch;
	JMenuItem vsComputer;

	// Hilfe
	JMenuItem anleitung;
	JMenuItem spielregeln;

	
	JLabel anDerReihe;

	JTextArea spielregelnText = new JTextArea();
	
	

	



	private Image offScrImage;

	public Schach() {






		applikation = new JFrame("Schach");
		container = applikation.getContentPane();

		// Menüleiste erzeugen
		menueLeiste = new JMenuBar();

		// Menüelemente erzeugen
		datei = new JMenu("Datei");
		spielmodus = new JMenu("Spielmodus");
		hilfe = new JMenu("Hilfe");


		// Untermenüelemente erzeugen
		neuesSpiel = new JMenuItem("Neues Spiel");
		neuesSpiel.addActionListener(this);
		beenden = new JMenuItem("Beenden");
		beenden.addActionListener(this);
		anleitung = new JMenuItem("Anleitung");
		anleitung.addActionListener(this);
		spielregeln = new JMenuItem("Spielregeln");
		spielregeln.addActionListener(this);
		vsComputer = new JMenuItem("vs. Computer");
		vsComputer.addActionListener(this);
		vsMensch = new JMenuItem("vs. Mensch");
		vsMensch.addActionListener(this);

		spielregeln = new JMenuItem("Spielregeln");
		spielregeln.addActionListener(this);


		// Menüelemente hinzufügen
		menueLeiste.add(datei);
		menueLeiste.add(hilfe);
		menueLeiste.add(spielmodus);


		// Untermenüelemente hinzufügen
		datei.add(neuesSpiel);
		datei.add(beenden);
		hilfe.add(anleitung);
		hilfe.add(spielregeln);
		spielmodus.add(vsMensch);
		spielmodus.add(vsComputer);


		// NEW
		applikation.setJMenuBar(menueLeiste);
		init();
		applikation.setSize(new Dimension(600, 600));
		applikation.add(this);
		applikation.setVisible(true);
		
		
		anDerReihe = new JLabel("Es ist Spieler...dran!");
		

	}


	// NEW
	// Bilder werden mit dem Toolkit erzeugt!!
	public void init() {
		Bild = new Image[12];
		Bild[BauerS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/BauerS.gif")));
		Bild[TurmS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/TurmS.gif")));
		Bild[SpringerS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/SpringerS.gif")));
		Bild[LaeuferS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/LaeuferS.gif")));
		Bild[DameS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/DameS.gif")));
		Bild[KoenigS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/KoenigS.gif")));
		Bild[BauerW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/BauerW.gif")));
		Bild[TurmW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/TurmW.gif")));
		Bild[SpringerW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/SpringerW.gif")));
		Bild[LaeuferW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/LaeuferW.gif")));
		Bild[DameW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/DameW.gif")));
		Bild[KoenigW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/KoenigW.gif")));

		// Erstelle Brett mit 8 x 8 = 64 Feldern
		Brett = new int[8][8];

		for (int i = 0; i < 8; ++i)
			for (int j = 0; j < 8; ++j)
				// alle Felder sind am Anfang leer...
				Brett[i][j] = Leer;
		// bis auf:
		Brett[0][0] = TurmS; // schwarze Spielfiguren
		Brett[0][1] = SpringerS;
		Brett[0][2] = LaeuferS;
		Brett[0][4] = DameS;
		Brett[0][3] = KoenigS;
		Brett[0][5] = LaeuferS;
		Brett[0][6] = SpringerS;
		Brett[0][7] = TurmS;
		Brett[1][0] = BauerS;
		Brett[1][1] = BauerS;
		Brett[1][2] = BauerS;
		Brett[1][3] = BauerS;
		Brett[1][4] = BauerS;
		Brett[1][5] = BauerS;
		Brett[1][6] = BauerS;
		Brett[1][7] = BauerS;

		Brett[7][0] = TurmW; //weiße Spielfiguren
		Brett[7][1] = SpringerW;
		Brett[7][2] = LaeuferW;
		Brett[7][4] = DameW;
		Brett[7][3] = KoenigW;
		Brett[7][5] = LaeuferW;
		Brett[7][6] = SpringerW;
		Brett[7][7] = TurmW;
		Brett[6][0] = BauerW;
		Brett[6][1] = BauerW;
		Brett[6][2] = BauerW;
		Brett[6][3] = BauerW;
		Brett[6][4] = BauerW;
		Brett[6][5] = BauerW;
		Brett[6][6] = BauerW;
		Brett[6][7] = BauerW;

		addMouseListener(this);
	}


	public void paintComponent(Graphics g) {
		Dimension d = getSize();

		offScrImage = createImage(d.width, d.height);
		Graphics og = offScrImage.getGraphics();

		int xoff = d.width / 8;
		int yoff = d.height / 8;

		/*
		 * Zeichnet Muster der schwarzen/weißen Quadrate, je nachdem, ob der
		 * Spieler schwarz oder weiß ist
		 */
		for (int c = 0; c < 8; ++c) {
			for (int r = 0; r < 8; ++r) {
				if ((c + r) % 2 == 0) {
					og.setColor(Color.gray);
				} else {
					og.setColor(Color.white);
				}
				og.fillRect(xoff * c, yoff * r, xoff, yoff);

				/* Zeichne jedes Bild auf Brett */

				int nPiece = Brett[r][c];
				if (nPiece >= 0) {
					og.drawImage(Bild[nPiece], c * xoff, r * yoff, this);
				}
			}
		}



		g.drawImage(offScrImage, 0, 0, this.getWidth(), this.getHeight(), this);

	}


	public Dimension getPreferredSize() {
		return new Dimension(offScrImage.getWidth(this), offScrImage.getHeight(this));
	}


	


	


	public void mouseClicked(MouseEvent e) {
		if (AktiveFigur[0] >= 0) {
			int x = e.getX();
			int y = e.getY();

			// Finde die Spalte und Reihe heraus
			Dimension d = getSize();
			int c = (int) ((x * 8) / d.width);
			int r = (int) ((y * 8) / d.height);
			if (c < 0 || c > 7)
				return;
			if (r < 0 || r > 7)
				return;

			if (pruefeZug(AktiveFigur[0], AktiveFigur[1], c, r)) {
				Brett[r][c] = Brett[AktiveFigur[1]][AktiveFigur[0]];
				Brett[AktiveFigur[1]][AktiveFigur[0]] = -1;
				nPlayer = (nPlayer + 1) % 2;
			}

			AktiveFigur[0] = -1;
			AktiveFigur[1] = -1;
		} else {
			int x = e.getX();
			int y = e.getY();

			// Finde die Spalte und Reihe heraus
			Dimension d = getSize();
			int c = (int) ((x * 8) / d.width);
			int r = (int) ((y * 8) / d.height);
			if (c < 0 || c > 7)
				return;
			if (r < 0 || r > 7)
				return;

			// Prüfe, ob da was liegt
			// Wenn ja, mache daraus ein aktives Feld
			if (Brett[r][c] != -1) {
				// Prüfe, welcher Spieler dran ist
				if ((Brett[r][c] < 6 && nPlayer == 0)
						|| (Brett[r][c] > 5 && nPlayer == 1)) {
					
					AktiveFigur[0] = c;
					AktiveFigur[1] = r;
					System.out.println("Spieler1 ist dran");
				}
			}
		}

		repaint();
	}



	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub

	}


	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub

	}


	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub

	}


	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub

	}	

	public void actionPerformed(ActionEvent e) {

		if (e.getSource() == neuesSpiel){
			applikation.validate();
		}
		if (e.getSource() == beenden){
			System.exit(0);
		}
		if (e.getSource() == anleitung){
			System.out.println("Anleitung wurde angeklickt");
		}
		if (e.getSource() == spielregeln){	
			
	        try {
	        	spielregelnText.read(new FileReader("C:/Dokumente und Einstellungen/fschwarz/Desktop/Projekt/Schachregeln.txt"), "");
	        } catch (Exception ex) {
	            ex.printStackTrace();
	        }
	        JScrollPane scrollPane = new JScrollPane(spielregelnText);
	        scrollPane.setPreferredSize(new Dimension(600, 400));
	        add(scrollPane);
	        spielregelnText.setWrapStyleWord(true);
	        
	        applikation.validate();

		}

		if (e.getSource() == vsMensch){	

			System.out.println("vsMensch wurde angeklickt");
		}

		if (e.getSource() == vsComputer){	

			System.out.println("vsComputer wurde angeklickt");
		}

	}



	private void pack() {
		// TODO Auto-generated method stub
		
	}


	public static void main(String[] args) {
		new Schach();
	}
}

Der Vollständigkeit halber hier mal der ganze Code:
Code:
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.TextArea;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Schach extends JPanel implements MouseListener, ActionListener {

	private Image Bild[];

	static final int Schwarz = 0;
	static final int Weiß = 1;

	static final int Leer = -1;
	static final int BauerS = 0;
	static final int TurmS = 1;
	static final int SpringerS = 2;
	static final int LaeuferS = 3;
	static final int DameS = 4;
	static final int KoenigS = 5;
	static final int BauerW = 6;
	static final int TurmW = 7;
	static final int SpringerW = 8;
	static final int LaeuferW = 9;
	static final int DameW = 10;
	static final int KoenigW = 11;

	int Brett[][];

	int AktiveFigur[] = { -1, -1 };

	// Welcher Spieler soll beginnen?
	int nPlayer = Weiß;


	JFrame applikation;
	Container container;

	// Menüleiste
	JMenuBar menueLeiste;

	// Menüleiste Elemente
	JMenu datei;
	JMenu spielmodus;
	JMenu hilfe;



	// Datei
	JMenuItem neuesSpiel;
	JMenuItem beenden;



	// Spielmodus
	JMenuItem vsMensch;
	JMenuItem vsComputer;

	// Hilfe
	JMenuItem anleitung;
	JMenuItem spielregeln;

	
	JLabel anDerReihe;

	JTextArea spielregelnText = new JTextArea();
	
	

	



	private Image offScrImage;

	public Schach() {






		applikation = new JFrame("Schach");
		container = applikation.getContentPane();

		// Menüleiste erzeugen
		menueLeiste = new JMenuBar();

		// Menüelemente erzeugen
		datei = new JMenu("Datei");
		spielmodus = new JMenu("Spielmodus");
		hilfe = new JMenu("Hilfe");


		// Untermenüelemente erzeugen
		neuesSpiel = new JMenuItem("Neues Spiel");
		neuesSpiel.addActionListener(this);
		beenden = new JMenuItem("Beenden");
		beenden.addActionListener(this);
		anleitung = new JMenuItem("Anleitung");
		anleitung.addActionListener(this);
		spielregeln = new JMenuItem("Spielregeln");
		spielregeln.addActionListener(this);
		vsComputer = new JMenuItem("vs. Computer");
		vsComputer.addActionListener(this);
		vsMensch = new JMenuItem("vs. Mensch");
		vsMensch.addActionListener(this);

		spielregeln = new JMenuItem("Spielregeln");
		spielregeln.addActionListener(this);


		// Menüelemente hinzufügen
		menueLeiste.add(datei);
		menueLeiste.add(hilfe);
		menueLeiste.add(spielmodus);


		// Untermenüelemente hinzufügen
		datei.add(neuesSpiel);
		datei.add(beenden);
		hilfe.add(anleitung);
		hilfe.add(spielregeln);
		spielmodus.add(vsMensch);
		spielmodus.add(vsComputer);


		// NEW
		applikation.setJMenuBar(menueLeiste);
		init();
		applikation.setSize(new Dimension(600, 600));
		applikation.add(this);
		applikation.setVisible(true);
		
		
		anDerReihe = new JLabel("Es ist Spieler...dran!");
		

	}


	// NEW
	// Bilder werden mit dem Toolkit erzeugt!!
	public void init() {
		Bild = new Image[12];
		Bild[BauerS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/BauerS.gif")));
		Bild[TurmS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/TurmS.gif")));
		Bild[SpringerS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/SpringerS.gif")));
		Bild[LaeuferS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/LaeuferS.gif")));
		Bild[DameS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/DameS.gif")));
		Bild[KoenigS] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/KoenigS.gif")));
		Bild[BauerW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/BauerW.gif")));
		Bild[TurmW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/TurmW.gif")));
		Bild[SpringerW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/SpringerW.gif")));
		Bild[LaeuferW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/LaeuferW.gif")));
		Bild[DameW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/DameW.gif")));
		Bild[KoenigW] = Toolkit.getDefaultToolkit().getImage(
				(getClass().getResource("bilder/KoenigW.gif")));

		// Erstelle Brett mit 8 x 8 = 64 Feldern
		Brett = new int[8][8];

		for (int i = 0; i < 8; ++i)
			for (int j = 0; j < 8; ++j)
				// alle Felder sind am Anfang leer...
				Brett[i][j] = Leer;
		// bis auf:
		Brett[0][0] = TurmS; // schwarze Spielfiguren
		Brett[0][1] = SpringerS;
		Brett[0][2] = LaeuferS;
		Brett[0][4] = DameS;
		Brett[0][3] = KoenigS;
		Brett[0][5] = LaeuferS;
		Brett[0][6] = SpringerS;
		Brett[0][7] = TurmS;
		Brett[1][0] = BauerS;
		Brett[1][1] = BauerS;
		Brett[1][2] = BauerS;
		Brett[1][3] = BauerS;
		Brett[1][4] = BauerS;
		Brett[1][5] = BauerS;
		Brett[1][6] = BauerS;
		Brett[1][7] = BauerS;

		Brett[7][0] = TurmW; //weiße Spielfiguren
		Brett[7][1] = SpringerW;
		Brett[7][2] = LaeuferW;
		Brett[7][4] = DameW;
		Brett[7][3] = KoenigW;
		Brett[7][5] = LaeuferW;
		Brett[7][6] = SpringerW;
		Brett[7][7] = TurmW;
		Brett[6][0] = BauerW;
		Brett[6][1] = BauerW;
		Brett[6][2] = BauerW;
		Brett[6][3] = BauerW;
		Brett[6][4] = BauerW;
		Brett[6][5] = BauerW;
		Brett[6][6] = BauerW;
		Brett[6][7] = BauerW;

		addMouseListener(this);
	}


	public void paintComponent(Graphics g) {
		Dimension d = getSize();

		offScrImage = createImage(d.width, d.height);
		Graphics og = offScrImage.getGraphics();

		int xoff = d.width / 8;
		int yoff = d.height / 8;

		/*
		 * Zeichnet Muster der schwarzen/weißen Quadrate, je nachdem, ob der
		 * Spieler schwarz oder weiß ist
		 */
		for (int c = 0; c < 8; ++c) {
			for (int r = 0; r < 8; ++r) {
				if ((c + r) % 2 == 0) {
					og.setColor(Color.gray);
				} else {
					og.setColor(Color.white);
				}
				og.fillRect(xoff * c, yoff * r, xoff, yoff);

				/* Zeichne jedes Bild auf Brett */

				int nPiece = Brett[r][c];
				if (nPiece >= 0) {
					og.drawImage(Bild[nPiece], c * xoff, r * yoff, this);
				}
			}
		}

		/* Zeichne Markierung um die aktive Spielfigur */
		if (AktiveFigur[0] >= 0) {
			if (nPlayer == Weiß)
				og.setColor(Color.red);
			else
				og.setColor(Color.blue);

			og.drawRect(xoff * AktiveFigur[0], yoff * AktiveFigur[1], xoff,
					yoff);
			og.drawRect(xoff * AktiveFigur[0] - 1, yoff * AktiveFigur[1] - 1,
					xoff + 2, yoff + 2);
		}

		g.drawImage(offScrImage, 0, 0, this.getWidth(), this.getHeight(), this);

	}


	public Dimension getPreferredSize() {
		return new Dimension(offScrImage.getWidth(this), offScrImage.getHeight(this));
	}


	boolean pruefeZugGerade(int c1, int r1, int c2, int r2) {
		boolean bOK = false;
		int nPiece = Brett[r1][c1];
		int nPType = nPiece % 6;
		int ZerstoereFigur = Brett[r2][c2];
		int nDestPType = ZerstoereFigur % 6;

		if (c1 == c2 && r1 != r2) {
			int rd;
			if (r1 < r2)
				rd = 1;
			else
				rd = -1;

			bOK = true;
			for (int r = r1 + rd; r != r2; r += rd) {
				if (Brett[r][c1] != -1) {
					bOK = false;
					break;
				}
			}
		} else if (r1 == r2 && c1 != c2) {
			int cd;
			if (c1 < c2)
				cd = 1;
			else
				cd = -1;

			bOK = true;
			for (int c = c1 + cd; c != c2; c += cd) {
				if (Brett[r1][c] != -1) {
					bOK = false;
					break;
				}
			}
		}

		return bOK;
	}

	boolean pruefeZugDiagonal(int c1, int r1, int c2, int r2) {
		boolean bOK = false;
		int nPiece = Brett[r1][c1];
		int nPType = nPiece % 6;
		int ZerstoereFigur = Brett[r2][c2];
		int nDestPType = ZerstoereFigur % 6;

		if ((c1 + r1) % 2 == 0 && (c2 + r2) % 2 == 0) {
			if (c1 + r1 == c2 + r2) {
				bOK = true;
			} else if (c1 - r1 == c2 - r2) {
				bOK = true;
			}
		} else if ((c1 + r1) % 2 == 1 && (c2 + r2) % 2 == 1) {
			if (c1 + r1 == c2 + r2) {
				bOK = true;
			} else if (c1 - r1 == c2 - r2) {
				bOK = true;
			}
		}
		if (bOK) {
			int cd;
			if (c1 < c2)
				cd = 1;
			else
				cd = -1;
			int rd;
			if (r1 < r2)
				rd = 1;
			else
				rd = -1;

			int r = r1 + rd;
			int c = c1 + cd;
			for (; c != c2; r += rd, c += cd) {
				if (Brett[r][c] != -1) {
					bOK = false;
					break;
				}
			}
		}

		return bOK;
	}

	boolean pruefeZug(int c1, int r1, int c2, int r2) {
		if (c1 == c2 && r1 == r2)
			return false;

		boolean bOK = false;
		int nPiece = Brett[r1][c1];
		int nPType = nPiece % 6;
		int ZerstoereFigur = Brett[r2][c2];
		int nDestPType = ZerstoereFigur % 6;

		switch (nPType) {
		case BauerS:
			if (nPiece < 6) {
				if (c1 == c2) {
					if (r1 == r2 - 1) {
						if (ZerstoereFigur == -1)
							bOK = true;
					} else if (r1 == r2 - 2 && r1 == 1) {
						if (Brett[r2 - 1][c1] == -1)
							bOK = true;
					}
				} else if (c1 == c2 + 1 || c1 == c2 - 1) {
					if (r1 == r2 - 1) {
						if (ZerstoereFigur != -1 && ZerstoereFigur > 5)
							bOK = true;
					}
				}
			} else {
				if (c1 == c2) {
					if (r1 == r2 + 1) {
						if (ZerstoereFigur == -1)
							bOK = true;
					} else if (r1 == r2 + 2 && r1 == 6) {
						if (Brett[r2 + 1][c1] == -1)
							bOK = true;
					}
				} else if (c1 == c2 + 1 || c1 == c2 - 1) {
					if (r1 == r2 + 1) {
						if (ZerstoereFigur != -1 && ZerstoereFigur < 6)
							bOK = true;
					}
				}
			}
			break;
		case TurmS:
			bOK = pruefeZugGerade(c1, r1, c2, r2);
			break;
		case SpringerS:
			if (r1 == r2 - 2 || r1 == r2 + 2) {
				if (c1 == c2 - 1 || c1 == c2 + 1) {
					bOK = true;
				}
			} else if (c1 == c2 - 2 || c1 == c2 + 2) {
				if (r1 == r2 - 1 || r1 == r2 + 1) {
					bOK = true;
				}
			}
			break;
		case LaeuferS:
			bOK = pruefeZugDiagonal(c1, r1, c2, r2);
			break;
		case DameS:
			bOK = pruefeZugGerade(c1, r1, c2, r2);
			if (bOK == false)
				bOK = pruefeZugDiagonal(c1, r1, c2, r2);
			break;
		case KoenigS:
			if (Math.abs(r1 - r2) < 2 && Math.abs(c1 - c2) < 2
					&& (Math.abs(r1 - r2) != 0 || Math.abs(c1 - c2) != 0))
				bOK = true;
			break;
		default:
			break;
		}

		if (bOK == true) {
			if (nPiece < 6 && (ZerstoereFigur == -1 || ZerstoereFigur > 5))
				bOK = true;
			else if (nPiece > 5 && (ZerstoereFigur == -1 || ZerstoereFigur < 6))
				bOK = true;
			else
				bOK = false;
		}

		return bOK;
	}


	public void mouseClicked(MouseEvent e) {
		if (AktiveFigur[0] >= 0) {
			int x = e.getX();
			int y = e.getY();

			// Finde die Spalte und Reihe heraus
			Dimension d = getSize();
			int c = (int) ((x * 8) / d.width);
			int r = (int) ((y * 8) / d.height);
			if (c < 0 || c > 7)
				return;
			if (r < 0 || r > 7)
				return;

			if (pruefeZug(AktiveFigur[0], AktiveFigur[1], c, r)) {
				Brett[r][c] = Brett[AktiveFigur[1]][AktiveFigur[0]];
				Brett[AktiveFigur[1]][AktiveFigur[0]] = -1;
				nPlayer = (nPlayer + 1) % 2;
			}

			AktiveFigur[0] = -1;
			AktiveFigur[1] = -1;
		} else {
			int x = e.getX();
			int y = e.getY();

			// Finde die Spalte und Reihe heraus
			Dimension d = getSize();
			int c = (int) ((x * 8) / d.width);
			int r = (int) ((y * 8) / d.height);
			if (c < 0 || c > 7)
				return;
			if (r < 0 || r > 7)
				return;

			// Prüfe, ob da was liegt
			// Wenn ja, mache daraus ein aktives Feld
			if (Brett[r][c] != -1) {
				// Prüfe, welcher Spieler dran ist
				if ((Brett[r][c] < 6 && nPlayer == 0)
						|| (Brett[r][c] > 5 && nPlayer == 1)) {
					
					AktiveFigur[0] = c;
					AktiveFigur[1] = r;
					System.out.println("Spieler1 ist dran");
				}
			}
		}

		repaint();
	}



	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub

	}


	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub

	}


	public void mousePressed(MouseEvent e) {
		// TODO Auto-generated method stub

	}


	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub

	}	

	public void actionPerformed(ActionEvent e) {

		if (e.getSource() == neuesSpiel){
			applikation.validate();
		}
		if (e.getSource() == beenden){
			System.exit(0);
		}
		if (e.getSource() == anleitung){
			System.out.println("Anleitung wurde angeklickt");
		}
		if (e.getSource() == spielregeln){	
			
	        try {
	        	spielregelnText.read(new FileReader("C:/Dokumente und Einstellungen/fschwarz/Desktop/Projekt/Schachregeln.txt"), "");
	        } catch (Exception ex) {
	            ex.printStackTrace();
	        }
	        JScrollPane scrollPane = new JScrollPane(spielregelnText);
	        scrollPane.setPreferredSize(new Dimension(600, 400));
	        add(scrollPane);
	        spielregelnText.setWrapStyleWord(true);
	        
	        applikation.validate();

		}

		if (e.getSource() == vsMensch){	

			System.out.println("vsMensch wurde angeklickt");
		}

		if (e.getSource() == vsComputer){	

			System.out.println("vsComputer wurde angeklickt");
		}

	}



	private void pack() {
		// TODO Auto-generated method stub
		
	}


	public static void main(String[] args) {
		new Schach();
	}
}

Wie muss ich das jetzt aufteilen, damit die das Brett gezeichnet wird und die Figuren richtig gestellt werden?
Mein erstes Problem ist, wenn ich z.B. Spielfeld und Figuren trenne und ich dann die Figurenbilder mit dem Brett zusammensetze, kennt er die Konstanten nicht mehr, vielleicht hab ich bei extends was falsch gemacht...

Anmerkung zum Klassendiagramm noch: Das Interface Plugin ist ein Interfaces von dem Framework(ist erstmal zu vernachlässigen). Es soll später muss über Netzwerk gespielt werden können mit dem Framework...

Vielen Dank im Voraus
 

Anhänge

  • aktivitaetsdiagramm.JPG
    aktivitaetsdiagramm.JPG
    67,2 KB · Aufrufe: 65
  • klassendiagramm.JPG
    klassendiagramm.JPG
    75,6 KB · Aufrufe: 104

Landei

Top Contributor
Bitte keine Int-Konstanten verwenden, sondern enums. Eine Möglichkeit wäre (obwohl ich deutsche Bezeichner nicht so prickelnd finde):
Code:
 enum Farbe { schwarz, weiss }
 enum FigurTyp { bauer, turm, springer, laeufer, dame, koenig}
 enum Figur {
   bauerS(bauer, schwarz),
   turmS(turm, schwarz),
   ...
   koenigW(koening,weiss);
   private final FigurTyp typ;
   private final Farbe farbe;
   Figur(FigurTyp typ, Farbe farbe) {
      this.typ = typ;
      this.farbe = farbe;
   }
   public FigurTyp getTyp() { return typ; }
   public Farbe getFarbe() { return farbe; }
 }

So hast du später die Möglichkeit, auch nützliche Funktionalität dazuzupacken. Einfaches Beispiel:
Code:
enum Farbe { schwarz, weiss;
  public Farbe gegenteil() { return this == schwarz ? weiss : schwarz; }
}
 
Zuletzt bearbeitet:

Coldstorm

Aktives Mitglied
hm...noch nicht gehört von diesen enum-Werten, aber scheint praktisch zu sein für Konstanten...danke erstmal...
Muss ich die enum Felder vorher noch deklarieren, damit er die kennt? Hab das jetzt in die Klasse Figur geschrieben, aber die Felder unterstreicht er mir noch.
 
J

JohannisderKaeufer

Gast
Was ich noch ziemlich verwirrend finde, bzw. was ich mir anders vorstelle ist das hier Grafik, also Swing und das Restliche Programm ziemlich arg vermischt ist.

Hier würde ich dir nahelegen dich an einem MVC-Pattern zu orientieren.

Also ein Spielfeld (Model) das weiß auf welcher Position welche Figur steht und welche Farbe am Zug ist. Das ganze als Observable.


Eine Grafikkomponente (Swing, JPanel ...) die eine Referenz auf ein Spielfeld hat. Diese würde dann das Spielfeld zeichnen. Das ganze als Observer, das dann neu zeichnet, wenn sich das Spielfeld ändert.

Also im Idealfall das Spiel so schreiben, das man es auch auf der Console spielen könnte.

Wenn das Spiel irgendwann mal über das Netzwerk laufen soll, würde ich mir gedanken machen wie ich eine Trennung der beiden Spieler hinbekommen. Was ich damit meine ist, wenn ich das Spiel auf einem Rechner spiele, würde ich es so bauen, das ich 2 Schachbretter habe ein für Schwarz eins für Weis
 

Landei

Top Contributor
Ich sehe noch, dass du in vielen Fällen Sachen ausschreibst, obwohl eine Schleife ginge:
Java:
 bild = new Image[12];
 String[]  bilder = new String[]{"BauerS","TurmS","SpringerS","LaeuferS" /*usw*/ };
 for(int i = 0; i < 12; i++) {
    bild[i] = Toolkit.getDefaultToolkit().getImage(getClass().getResource("bilder/" + bilder[i] + ".gif")));
 }

Oder besser so, falls du die Enum-Variante verwendest:
Java:
 enum Figur {
   bauerS(bauer, schwarz, "BauerS"),
   turmS(turm, schwarz, "TurmS"),
   ...
   koenigW(koening, weiss, "KoenigW");
   private final FigurTyp typ;
   private final Farbe farbe;
   private final Image bild;
   Figur(FigurTyp typ, Farbe farbe, String bildName) {
      this.typ = typ;
      this.farbe = farbe;
      this.bild = Toolkit.getDefaultToolkit().getImage(getClass().getResource("bilder/" + bildName + ".gif")));
   }
   public FigurTyp getTyp() { return typ; }
   public Farbe getFarbe() { return farbe; }
   public Image getBild() { return image; }
 }

Johannis' Vorschlag bezüglich GUI ist ebenfalls richtig.

Poste mal, was du inzwischen hast, dann sehen wir weiter...
 
Zuletzt bearbeitet:

Coldstorm

Aktives Mitglied
Danke erstmal für die guten Tipps...
Ich bin leider noch nicht besonders weit gekommen, hier mal die Aufteilung:

Spiel

Code:
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileReader;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;


public class Spiel extends JPanel implements ActionListener{

	int AktiveFigur[] = { -1, -1 };

	JFrame applikation;
	Container container;

	// Menüleiste
	JMenuBar menueLeiste;

	// Menüleiste Elemente
	JMenu datei;
	JMenu spielmodus;
	JMenu hilfe;

	// Datei
	JMenuItem neuesSpiel;
	JMenuItem beenden;

	// Spielmodus
	JMenuItem vsMensch;
	JMenuItem vsComputer;
	
	// Hilfe
	JMenuItem anleitung;
	JMenuItem spielregeln;
	
	JTextArea spielregelnText = new JTextArea();
	
	
	public Spiel(){
		
		applikation = new JFrame("Schach");
		container = applikation.getContentPane();

		// Menüleiste erzeugen
		menueLeiste = new JMenuBar();

		// Menüelemente erzeugen
		datei = new JMenu("Datei");
		spielmodus = new JMenu("Spielmodus");
		hilfe = new JMenu("Hilfe");

		// Untermenüelemente erzeugen
		neuesSpiel = new JMenuItem("Neues Spiel");
		neuesSpiel.addActionListener(this);
		beenden = new JMenuItem("Beenden");
		beenden.addActionListener(this);
		anleitung = new JMenuItem("Anleitung");
		anleitung.addActionListener(this);
		spielregeln = new JMenuItem("Spielregeln");
		spielregeln.addActionListener(this);
		vsComputer = new JMenuItem("vs. Computer");
		vsComputer.addActionListener(this);
		vsMensch = new JMenuItem("vs. Mensch");
		vsMensch.addActionListener(this);

		spielregeln = new JMenuItem("Spielregeln");
		spielregeln.addActionListener(this);

		// Menüelemente hinzufügen
		menueLeiste.add(datei);
		menueLeiste.add(hilfe);
		menueLeiste.add(spielmodus);

		// Untermenüelemente hinzufügen
		datei.add(neuesSpiel);
		datei.add(beenden);
		hilfe.add(anleitung);
		hilfe.add(spielregeln);
		spielmodus.add(vsMensch);
		spielmodus.add(vsComputer);

		// Größe anpassen und sichtbar machen
		applikation.setJMenuBar(menueLeiste);
		applikation.setSize(new Dimension(600, 600));
		applikation.add(this);
		applikation.setVisible(true);	
		
	}
	

	
	public void actionPerformed(ActionEvent e) {

		if (e.getSource() == neuesSpiel){
			applikation.validate();
		}
		if (e.getSource() == beenden){
			System.exit(0);
		}
		if (e.getSource() == anleitung){
			System.out.println("Anleitung wurde angeklickt");
		}
		if (e.getSource() == spielregeln){	
			
			// Die Textdatei für die Spielregeln auslesen
	        try {
	        	spielregelnText.read(new FileReader("C:/Dokumente und Einstellungen/fschwarz/Desktop/Projekt/Schachregeln.txt"), "");
	        } catch (Exception ex) {
	            ex.printStackTrace();
	        }
	        JScrollPane scrollPane = new JScrollPane(spielregelnText);
	        scrollPane.setPreferredSize(new Dimension(600, 400));
	        add(scrollPane);
	        spielregelnText.setWrapStyleWord(true);
	        applikation.validate();
		}

		if (e.getSource() == vsMensch){	
			
			System.out.println("vsMensch wurde angeklickt");
		}

		if (e.getSource() == vsComputer){	
			
			System.out.println("vsComputer wurde angeklickt");
		}

	}

	public static void main(String[] args) {
		new Spiel();

	}



}

Spielfeld

Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;


public class Spielfeld extends Spiel implements MouseListener{

	protected Image bild[];

	static final int Schwarz = 0;
	static final int Weiß = 1;

	static final int Leer = -1;
	static final int BauerS = 0;
	static final int TurmS = 1;
	static final int SpringerS = 2;
	static final int LaeuferS = 3;
	static final int DameS = 4;
	static final int KoenigS = 5;
	static final int BauerW = 6;
	static final int TurmW = 7;
	static final int SpringerW = 8;
	static final int LaeuferW = 9;
	static final int DameW = 10;
	static final int KoenigW = 11;
	
//	 Welcher Spieler soll beginnen?
	int nPlayer = Weiß;

	int Brett[][];
	
	private Image offScrImage;
	
	// Bilder werden mit dem Toolkit erzeugt!!
	public void init() {
		bild = new Image[12];
		 String[] bilder = new String[]{"BauerS","TurmS","SpringerS","LaeuferS","DameS","KoenigS",
				 						 "BauerW","TurmW","SpringerW","LaeuferW","DameW","KoenigW"};
		 for(int i = 0; i < 12; i++) {
		    bild[i] = Toolkit.getDefaultToolkit().getImage(getClass().getResource("bilder/" + bilder[i] + ".gif"));
		 }

		// Erstelle Brett mit 8 x 8 = 64 Feldern
		Brett = new int[8][8];

		for (int i = 0; i < 8; ++i)
			for (int j = 0; j < 8; ++j)
				// alle Felder sind am Anfang leer...
				Brett[i][j] = Leer;
		// bis auf:
		Brett[0][0] = TurmS; // schwarze Spielfiguren
		Brett[0][1] = SpringerS;
		Brett[0][2] = LaeuferS;
		Brett[0][4] = DameS;
		Brett[0][3] = KoenigS;
		Brett[0][5] = LaeuferS;
		Brett[0][6] = SpringerS;
		Brett[0][7] = TurmS;
		Brett[1][0] = BauerS;
		Brett[1][1] = BauerS;
		Brett[1][2] = BauerS;
		Brett[1][3] = BauerS;
		Brett[1][4] = BauerS;
		Brett[1][5] = BauerS;
		Brett[1][6] = BauerS;
		Brett[1][7] = BauerS;

		Brett[7][0] = TurmW; //weiße Spielfiguren
		Brett[7][1] = SpringerW;
		Brett[7][2] = LaeuferW;
		Brett[7][4] = DameW;
		Brett[7][3] = KoenigW;
		Brett[7][5] = LaeuferW;
		Brett[7][6] = SpringerW;
		Brett[7][7] = TurmW;
		Brett[6][0] = BauerW;
		Brett[6][1] = BauerW;
		Brett[6][2] = BauerW;
		Brett[6][3] = BauerW;
		Brett[6][4] = BauerW;
		Brett[6][5] = BauerW;
		Brett[6][6] = BauerW;
		Brett[6][7] = BauerW;

		addMouseListener(this);
	}
	
	public void paintComponent(Graphics g) {
		Dimension d = getSize();

		offScrImage = createImage(d.width, d.height);
		Graphics og = offScrImage.getGraphics();

		int xoff = d.width / 8;
		int yoff = d.height / 8;

		/*
		 * Zeichnet Muster der schwarzen/weißen Quadrate, je nachdem, ob der
		 * Spieler schwarz oder weiß ist
		 */
		for (int c = 0; c < 8; ++c) {
			for (int r = 0; r < 8; ++r) {
				if ((c + r) % 2 == 0) {
					og.setColor(Color.gray);
				} else {
					og.setColor(Color.white);
				}
				og.fillRect(xoff * c, yoff * r, xoff, yoff);

				/* Zeichne jedes Bild auf Brett */

				int nPiece = Brett[r][c];
				if (nPiece >= 0) {
					og.drawImage(bild[nPiece], c * xoff, r * yoff, this);
				}
			}
		}

		/* Zeichne Markierung um die aktive Spielfigur */
		if (AktiveFigur[0] >= 0) {
			if (nPlayer == Weiß)
				og.setColor(Color.red);
			else
				og.setColor(Color.blue);

			og.drawRect(xoff * AktiveFigur[0], yoff * AktiveFigur[1], xoff,
					yoff);
			og.drawRect(xoff * AktiveFigur[0] - 1, yoff * AktiveFigur[1] - 1,
					xoff + 2, yoff + 2);
		}

		g.drawImage(offScrImage, 0, 0, this.getWidth(), this.getHeight(), this);

	}



	public void mouseClicked(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}



	public void mouseEntered(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}



	public void mouseExited(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}



	public void mousePressed(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}



	public void mouseReleased(MouseEvent arg0) {
		// TODO Auto-generated method stub
		
	}
	
	
	public static void main(String[] args) {
		

	}
	


}

Figur

Code:
import java.awt.Image;
import java.awt.Toolkit;
import java.io.*;


public class Figur extends Spielfeld{
	
	public void init() {
		bild = new Image[12];
		 String[] bilder = new String[]{"BauerS","TurmS","SpringerS","LaeuferS","DameS","KoenigS",
				 						 "BauerW","TurmW","SpringerW","LaeuferW","DameW","KoenigW"};
		 for(int i = 0; i < 12; i++) {
		    bild[i] = Toolkit.getDefaultToolkit().getImage(getClass().getResource("bilder/" + bilder[i] + ".gif"));
		 }
	
// hier kommen noch Teile von Spielfeld
		   
	}
	
}
 

Geeeee

Bekanntes Mitglied
"Figur extends Spielfeld" -> Laut deinem UML falsch (und sinnvoll ist es auch nicht gerade unbedingt)
Dein Spielfeld besitzt Figuren, also muss es eine Liste oder Array von Figuren haben. ABER Figur darf nicht von Spielfeld abgeleitet sein.

"Spiel extends JPanel implements ActionListener" -> Für eine ordentliche Trennung zwischen View und Controller, solltest du die Programmlogik auslagern, d.h. du baust dir einen GameController oder so, der sowohl ein ButtonModel für deine MenuItems bereitstellt als auch die (Action-)Listener Position einnimmt.

Das soll dir einfach nur konstruktiv helfen :D
1. Solltest du nochmal das UML-Diagramm bzgl. der Auslagerung von Logik in Controller aufbohren und dann
2. Deine Klassen mit dem UML-Diagramm.

Denke mir, weil wir hier über OO sprechen, dass es schon wichtig wäre, dass du als erstes ein vernünpftiges Klassenkonzept hast.
 

Coldstorm

Aktives Mitglied
Da ist doch der Container? Dann nur Figur ohne irgendein extends oder wie?
Wie mache ich dann die Figuren dem Spielfeld sichtbar, wenn nicht mit Vererbung?

1. Solltest du nochmal das UML-Diagramm bzgl. der Auslagerung von Logik in Controller aufbohren

Zu deinem Vorschlag wollte ich sagen, es soll zwar objektorientierter werden, allerdings will/muss ich mich weitgehend an das Klassendiagramm halten.
Als Anfänger muss mein OO nicht einwandfrei sein, es geht mir dabei hauptsächlich um die Trennung der drei Klassen Schach, Schachbrett und Figur.

Was hier JohannisderKaeufer erwähnt hat stimmt zwar, aber ist bei meinem Projekt erstmal zu vernachlässigen, da es mein erstes Projekt ist und ich überhaupt froh bin,
dass es funktioniert.
 
M

maki

Gast
Als Anfänger muss mein OO nicht einwandfrei sein, es geht mir dabei hauptsächlich um die Trennung der drei Klassen Schach, Schachbrett und Figur.
Schon klar, aber dir ist klar dass Vererbung das Gegenteil von "trennen" ist? ;)
 

Coldstorm

Aktives Mitglied
ja schon... nur die Spielfiguren müssen mit dem Brett ja irgendwie kommunizieren.
Eine Figur(mit bestimmten Bild) steht auf einer bestimmten Position auf dem Spielfeld.
 

Geeeee

Bekanntes Mitglied
Im UML diagramm ist ja auch eine Aggregation (wollte einfach mal klugscheißen wg. der nicht gefüllten Raute) vorhanden. Das ist korrekt! Eine Komposition / Aggregation sagt einfach aus, dass ein Spielfeld Figuren besitzt (has-a) und nicht die Figuren vom Spielfeld ableiten (is-a). Nach deinem Quellcode wäre eine Figur (durch das extends) ein Spielfeld.
Nachtrag: Da steht doch sogar, wie das Spielbrett die Figuren speichern soll Figur[][] 2D-Array von Figuren. Ohne eine "Keine-Figur" sinnvoll oder nicht sei mal dahingestellt. Schreit jedenfalls nach vielen null-Prüfungen und -Setzen
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Jose05 Umgang mit Exceptions in einen Programm Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
R Programm führt Methoden gleichzeitig aus Allgemeine Java-Themen 2
T Der Aufruf von CMD-Programm Allgemeine Java-Themen 30
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
B Mysteriöse Ergebnisse beim Baccarat Programm? Allgemeine Java-Themen 13
districon Programm zum Durchsuchen von (Ebay-)Artikeln Allgemeine Java-Themen 1
T Addons im eigenen Programm Allgemeine Java-Themen 1
Calli11 Was muss ich hier in die Main schreiben, damit das Programm ausgeführt wird? Allgemeine Java-Themen 4
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
S Formel für Sonnenwinkel in ein Programm überführen Allgemeine Java-Themen 11
Alex_99 Programm stürzt beim Aufruf der Funktion ab? Text ausgeben Allgemeine Java-Themen 45
B Java Programm auf virutellem Desktop laufen lassen? Allgemeine Java-Themen 1
L Java überprüfen lassen, ob sich ein gegebener Pfad / das Programm an sich auf einer CD oder Festplatte befindet Allgemeine Java-Themen 14
Tiago1234 Warum hängt sich mein Programm auf? Allgemeine Java-Themen 22
D Programm designen Allgemeine Java-Themen 1
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
O 2D-Grafik BioFarben-Programm soll auf Vollbild schalten Allgemeine Java-Themen 1
S Nachrichten Filter Programm Allgemeine Java-Themen 14
S Programm schreiben, das mir aufgrund von Schlagwörtern, die ich im Internet suche, relevante Themen sofort anzeigt. Allgemeine Java-Themen 1
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
Lukas2904 Swing Anzeigen lassen das das Programm geschlossen wurde Allgemeine Java-Themen 3
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
R Lesen von Interfaces (Programm Vervollständigen) Allgemeine Java-Themen 10
Dann07 Java-Programm findet DLLs nicht! Allgemeine Java-Themen 20
OSchriever Linux-Programm öffnen Allgemeine Java-Themen 6
P USER Management in SQL übergreifend auf JAVA Programm Allgemeine Java-Themen 41
L Eclipse Konsole im exportierten Programm Allgemeine Java-Themen 2
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P Erstelltes Programm ist doppelt so groß Allgemeine Java-Themen 11
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
S Einfaches Programm programmieren Allgemeine Java-Themen 5
M kleines KI Programm Idee Allgemeine Java-Themen 7
D Boolean von ein anderem Java Programm während der Laufzeit ändern Allgemeine Java-Themen 23
L Excel Datei löscht sich selbst im Programm - Java Allgemeine Java-Themen 3
I File ausführen und mein Programm bearbeiten lassen Allgemeine Java-Themen 11
ralfb1105 Starten Java App(s) (.jar) aus einem Java Programm Allgemeine Java-Themen 18
temi Java Programm aus einer DB laden und starten Allgemeine Java-Themen 2
N Programm startet nicht, nur per cmd Allgemeine Java-Themen 5
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
E Java Programm mit Clients erweitern - Möglichkeiten? Allgemeine Java-Themen 2
Joker4632 Methoden Befehl an bereits extern geöffnete Programm-spezifische Konsole senden Allgemeine Java-Themen 1
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
R Programm zur Rekursion Allgemeine Java-Themen 5
N Quicksort Programm hängt sich auf Allgemeine Java-Themen 6
S Compiler-Fehler Programm verhält sich in Eclipse anders Allgemeine Java-Themen 1
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
dereki2000 Programm veröffentlichen Allgemeine Java-Themen 14
mrbig2017 Threads Chat Programm mit Threads? Allgemeine Java-Themen 2
M Suche aktuelle Apache Poi Bibliothek zum Einbinden in mein Programm Allgemeine Java-Themen 2
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
S Java Programm (Spiel mit den Boxen) Allgemeine Java-Themen 1
kodela Programm hängt in der Ereigniswarteschlange Allgemeine Java-Themen 13
A Java Programm verbessern/vereinfachen Allgemeine Java-Themen 20
P Programm darf nicht mehrfach startbar sein Allgemeine Java-Themen 16
S Programm hängt sich manchmal (selten) auf Allgemeine Java-Themen 9
JavaNewbie2.0 Programm nicht im Taskmanager schliesen können Allgemeine Java-Themen 15
J XML Datei mit installiertem Programm öffnen Allgemeine Java-Themen 7
Arif Input/Output Dateien im Jar-Programm speichern Allgemeine Java-Themen 12
H Java FX 2 Fragen um Programm in mehrere sprachen zu übersetzen in Gluon Framwork Allgemeine Java-Themen 3
JavaNewbie2.0 Programm bleibt "stehen" Allgemeine Java-Themen 2
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
E Mit Java ein Python Programm starten Allgemeine Java-Themen 20
Q-bert Daten von Java Programm speichern Allgemeine Java-Themen 4
Aruetiise Methoden .jar mit Programm öffnen Allgemeine Java-Themen 2
C anderes Programm schließen! Allgemeine Java-Themen 5
C Webseiten Programm problem Allgemeine Java-Themen 5
E Programm auf Installation prüfen Allgemeine Java-Themen 1
J Programm zum Download von CSV-Dateien Allgemeine Java-Themen 4
E Programm ohne Windowsrand(Vollbild) ? Allgemeine Java-Themen 5
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
P Schnittstelle java Programm zu Webserver / Browser Allgemeine Java-Themen 2
J Schutz Programm Jar Exe Allgemeine Java-Themen 7
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
Blender3D Java Swing Programm Windows 10 Autostart Problem Allgemeine Java-Themen 2
U Input/Output Warum wirft mir das Programm diesen Fehler? Allgemeine Java-Themen 6
X jvm exception abfangen und an externes Programm schicken Allgemeine Java-Themen 4
B Programm updaten mit FXLauncher Allgemeine Java-Themen 1
D Nicht quelloffenes Programm Allgemeine Java-Themen 5
F Java-Programm lizensieren Allgemeine Java-Themen 21
I Programm im Hintergrund bei Windows zur Steuerung der Tastatur nutzen Allgemeine Java-Themen 2
X Aus Programm "Installationsprogramm" machen Allgemeine Java-Themen 6
T Java Programm in Internetseite? Allgemeine Java-Themen 4
T Java Programm frisst RAM Allgemeine Java-Themen 6
H Alter Java-Programm läuft nicht mehr. Laut strace fehlt libpthread.so.0 Allgemeine Java-Themen 3
H Runtime reagiert erst wenn Programm abbricht Allgemeine Java-Themen 1
E Exceptions abfangen und dann Programm stoppen - aber wie? Allgemeine Java-Themen 2
Neumi5694 Offenes Programm nutzen Allgemeine Java-Themen 4
L Java-Programm Zahlenkombinationen ausgeben Allgemeine Java-Themen 10
KaffeeFan Methoden Suche Methode um Programm kurz warten zu lassen Allgemeine Java-Themen 22
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
T Java Programm sauber beenden (Mac OS) Allgemeine Java-Themen 7
O Programm wird einfach "gekillt" Allgemeine Java-Themen 3
L TV Programm API/Web Service o.ä. Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben