Hilfe bei GUI für Battleships

Und wie soll unsere Hilfe aussehen?
Stelle konkrete Fragen und du hast eher eine Chance eine Antwort zu bekommen.

Nachtrag:
The classes Ship.java and
Ocean.java are given and there is no need to change them.
Also hast du noch gar nix eigenes....
Wie gesagt, wir geben gerne Antworten auf konkrete Fragen - aber die Aufgaben musst du selber lösen. Eine Freinacht gehört wohl zum Schüler/Studentenleben wenn man zu spät mit den Aufgaben beginnt (ich weiss wovon ich rede - und damals hatte keiner zu hause Internet!)
 
Ich hab so nen Programm geschrieben, meines sieht so aus:

Java:
class SchiffeVersenken {

	public static Spielfeld s;
	private static int i;

	public static void main(String[] args) {

		Start s = new Start();
		s.frmGegnerauswahl.setVisible(true);
		while (s.spielArt() == 0) {

		}
		i = s.spielArt();
		if (s.spielArt() == 1) {
			s.frmGegnerauswahl.dispose();
			spiel1vs1();

		}
		if (s.spielArt() == 2) {
			s.frmGegnerauswahl.dispose();
			spielervscom();

		}
	}

	public static void spiel1vs1() {
		Dateneingabe de = new Dateneingabe(i);
		while(!de.fertig()){
			
		}
		s = new Spielfeld();
		Com hucom = new Com();
		Human spieler1 = new Human(de.getName());
		spieler1.spielfeld.setSpielfeld(s);
		if (de.check()) {
			spieler1.spielfeld = hucom.setzeSchiff(spieler1.spielfeld);
		} else {
			spieler1.setzSchiff(s);
		}
		Human spieler2 = new Human(de.getName2());
		spieler2.spielfeld.setSpielfeld(s);
		if (de.check2()) {
			spieler2.spielfeld = hucom.setzeSchiff(spieler2.spielfeld);
		} else {
			spieler2.setzSchiff(s);
		}
		Spielablauf sablauf = new Spielablauf(s);
		de.frame.dispose();
		sablauf.svs(spieler1, spieler2);

	}

	public static void spielervscom() {
		Dateneingabe de = new Dateneingabe(i);
		while(!de.fertig()){
			
		}
		Com com = new Com();
		s = new Spielfeld();
		com.spielfeld = com.setzeSchiff(com.spielfeld);
		Human spieler = new Human(de.getName());
		spieler.spielfeld.setSpielfeld(s);
		if (de.check()) {
			spieler.spielfeld = com.setzeSchiff(spieler.spielfeld);
		} else {
			spieler.setzSchiff(s);
		}

		Spielablauf sablauf = new Spielablauf(s);
		de.frame.dispose();
		sablauf.svsc(spieler, com);
	}

Java:
import java.util.ArrayList;


public class Karte {
	Feld ek = new Feld();
	Feld fk = new Feld();
	int[] position = new int[2];
	protected int length = 0;
	protected int anzahl = 0;
	protected String text = null;
	protected String text2 = null;
	protected boolean check;
	public int treffer = 0;
	protected Input i = new Input();
	private int schlachtschiffAnzahl = 1;
	private int kreuzerAnzahl = 2;
	private int zerstoererAnzahl = 3;
	private int ubootAnzahl = 4;
	ArrayList<Schiff> objectlist = new ArrayList<Schiff>();
	private Spielfeld s;

	public void setSpielfeld(Spielfeld s1) {
		s = s1;
	}

	public void display() {
		position[0] = 0;
		position[1] = 0;
		int x1 = 0;
		int y1 = 0;
		int x2 = 0;
		int y2 = 0;

		try {

			for (int count = 0; count <= 9; count++) {
				for (int counter = 0; counter <= 9; counter++) {

					if (fk.i[position[0]] == ('S')) {
						s.setData2(x2, y2, 1);
					}
					if (fk.i[position[0]] == ('X')) {
						s.setData2(x2, y2, 2);
					}
					if (fk.i[position[0]] == ('O')) {
						s.setData2(x2, y2, 3);
					}

					if (x2 != 9) {
						x2++;
					} else {
						x2 = 0;
						y2++;
					}
					position[0]++;
				}				
				
				
				for (int counter = 0; counter <= 9; counter++) {
					if (ek.i[position[1]] == 'S') {
						s.setData(x1, y1, 1);
					}
					if (ek.i[position[1]] == 'X') {
						s.setData(x1, y1, 2);
					}
					if (ek.i[position[1]] == 'O') {
						s.setData(x1, y1, 3);
					}
					if (x1 != 9) {
						x1++;
					} else {
						x1 = 0;
						y1++;
					}
					position[1]++;
				}
			}
			s.frame.setVisible(true);

		} catch (Exception e) {

		}

	}

	public int[] schiffAnzahl() {
		int[] sAnzahl = new int[4];
		sAnzahl[0] = schlachtschiffAnzahl;
		sAnzahl[1] = kreuzerAnzahl;
		sAnzahl[2] = zerstoererAnzahl;
		sAnzahl[3] = ubootAnzahl;

		return sAnzahl;
	}

	public void schiffeSetzen() {
		int schiffcount = 0;
		while (schiffcount < schlachtschiffAnzahl) {
			objectlist.add(new Schlachtschiff());
			schiffcount++;
		}
		schiffcount = 0;
		while (schiffcount < kreuzerAnzahl) {
			objectlist.add(new Kreuzer());
			schiffcount++;
		}
		schiffcount = 0;
		while (schiffcount < zerstoererAnzahl) {
			objectlist.add(new Zerstoerer());
			schiffcount++;
		}
		schiffcount = 0;
		while (schiffcount < ubootAnzahl) {
			objectlist.add(new UBoot());
			schiffcount++;
		}
		this.display();
		boolean check = false;
		for (int counter = 0; counter < objectlist.size(); counter++) {
			objectlist.get(counter).posi = this.setzeSchiff(
					objectlist.get(counter).getLength(), objectlist
							.get(counter).getText(), objectlist.get(counter)
							.getText2());
			for (int count = 0; count < objectlist.get(counter).getLength(); count++) {

				while (check != true) {

					if (ek.i[objectlist.get(counter).getPosi()[count]] == 'S') {
						System.out
								.println("Dort ist bereits ein Schiff platziert,");
						objectlist.get(counter).posi = this.setzeSchiff(
								objectlist.get(counter).getLength(), objectlist
										.get(counter).getText(), objectlist
										.get(counter).getText2());
					} else {
						ek.i[objectlist.get(counter).getPosi()[count]] = 'S';
						check = true;
					}

				}
				check = false;

			}
			this.display();
		}

	}

	private int[] setzeSchiff(int l, String t, String t2) {
		length = l;
		text = t;
		text2 = t2;
		check = false;
		System.out.println(text);
		String input = i.inoutput();
		try {
			if (this.ermittlePosi(input, length)[0] != this.ermittlePosi(input,
					length)[1]) {
				check = true;
			}
		} catch (NullPointerException NPE) {
			check = false;
		}
		while (check == false) {
			System.out.println(text2);
			input = i.inoutput();
			try {
				if (this.ermittlePosi(input, length)[0] != this.ermittlePosi(
						input, length)[1]) {
					check = true;
				}
			} catch (NullPointerException NPE) {
				check = false;
			}
		}
		return this.ermittlePosi(input, length);
	}

	public int[] ermittlePosi(String in, int le) {
		int[] posi = new int[le];
		in = in.trim();
		if (in.length() >= 5)
			try {

				char[] zeichen1 = in.substring(0, 1).toCharArray();
				char[] zeichen2 = in.substring(in.indexOf("-") + 1,
						in.indexOf("-") + 2).toCharArray();
				int zahl1 = Integer.parseInt(in.substring(1, in.indexOf("-")));
				int zahl2 = Integer.parseInt(in.substring(in.indexOf("-") + 2));

				{
					int counter = 0;
					int count = 0;
					int count2 = 0;
					int count3 = 0;
					int count4 = 0;
					while (counter <= 9) {
						if (ek.y[counter] == zeichen1[0]) {
							count = counter;
						}
						if (ek.x[counter] == zahl1) {
							count2 = counter;
						}
						if (ek.y[counter] == zeichen2[0]) {
							count3 = counter;
						}
						if (ek.x[counter] == zahl2) {
							count4 = counter;
						}
						counter++;
					}
					if (count * 10 + count2 == (count3 * 10 + count4)
							- (length - 1)) {
						posi[0] = count * 10 + count2;
						for (int pos = 1; pos < le; pos++) {
							posi[pos] = posi[0] + pos;
						}

					}
					if (count * 10 + count2 == (count3 * 10 + count4)
							+ (length - 1)) {
						posi[0] = count * 10 + count2;
						for (int pos = 1; pos < le; pos++) {
							posi[pos] = posi[0] - pos;
						}

					}
					if (count * 10 + count2 == (count3 * 10 + count4)
							- ((length - 1) * 10)) {
						posi[0] = count * 10 + count2;
						for (int pos = 1; pos < le; pos++) {
							posi[pos] = posi[0] + 10 * (pos);
						}

					}
					if (count * 10 + count2 == (count3 * 10 + count4)
							+ (length - 1) * 10) {
						posi[0] = count * 10 + count2;
						for (int pos = 1; pos < le; pos++) {
							posi[pos] = posi[0] - 10 * (pos);
						}

					}
				}
			} catch (NumberFormatException NFE) {
				posi[0] = 0;
				posi[1] = 0;
			}
		return posi;

	}

	public int checkTreffer(int positi) {
		treffer = 0;
		for (int count = 0; count < objectlist.size(); count++) {
			if (objectlist.get(count).versenkt() == false) {
				if (objectlist.get(count).treffer(positi) == true) {
					treffer = 1;
					if (objectlist.get(count).versenkt() == true) {
						treffer = 2;
					}
				}
			}
		}

		return treffer;
	}

Java:
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import java.awt.Color;
import java.awt.Font;
import java.awt.SystemColor;

public class Start {
	private int back = 0;
	public JFrame frmGegnerauswahl;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Start window = new Start();
					window.frmGegnerauswahl.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	
	
	/**
	 * Create the application.
	 */
	public Start() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	
	public int spielArt(){
		return back;
	}
	
	private void initialize() {
		try{
			UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
		}catch(Exception e){
			
		}
		frmGegnerauswahl = new JFrame();
		frmGegnerauswahl.getContentPane().setBackground(SystemColor.activeCaption);
		frmGegnerauswahl.setUndecorated(true);
		frmGegnerauswahl.setOpacity(0.9f);
		frmGegnerauswahl.setTitle("Gegnerauswahl");
		frmGegnerauswahl.setBounds(0, 0, 450, 300);
		frmGegnerauswahl.setLocationRelativeTo(null);
		frmGegnerauswahl.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frmGegnerauswahl.getContentPane().setLayout(null);
		
		JButton btnNewButton = new JButton("X");
		btnNewButton.setFont(new Font("SansSerif", Font.BOLD, 12));
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				System.exit(0);
			}
		});
		btnNewButton.setBorder(null);
		btnNewButton.setBounds(414, 11, 26, 23);
		frmGegnerauswahl.getContentPane().add(btnNewButton);
		
		JButton btnNewButton_1 = new JButton("Anderer Spieler");
		btnNewButton_1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				back = 1;
			}
		});
		btnNewButton_1.setFont(new Font("SansSerif", Font.BOLD, 12));
		btnNewButton_1.setBounds(56, 142, 150, 28);
		frmGegnerauswahl.getContentPane().add(btnNewButton_1);
		
		JButton btnNewButton_2 = new JButton("Computer");
		btnNewButton_2.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				back = 2;
			}
		});
		btnNewButton_2.setFont(new Font("SansSerif", Font.BOLD, 12));
		btnNewButton_2.setBounds(243, 142, 118, 28);
		frmGegnerauswahl.getContentPane().add(btnNewButton_2);
		
		JLabel lblNewLabel = new JLabel("Bitte Gegner ausw\u00E4hlen******");
		lblNewLabel.setFont(new Font("SansSerif", Font.BOLD, 16));
		lblNewLabel.setForeground(Color.WHITE);
		lblNewLabel.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel.setHorizontalTextPosition(SwingConstants.CENTER);
		lblNewLabel.setBounds(56, 38, 305, 23);
		frmGegnerauswahl.getContentPane().add(lblNewLabel);
	}
}


Java:
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.UIManager;
import javax.swing.JInternalFrame;
import java.awt.BorderLayout;
import java.awt.Color;
import java.beans.PropertyVetoException;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
import javax.swing.JDesktopPane;
import javax.swing.border.BevelBorder;
import javax.swing.DebugGraphics;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.JTable;
import java.awt.Dimension;
import javax.swing.table.DefaultTableModel;
import javax.swing.ListSelectionModel;
import java.awt.Cursor;
import javax.swing.JToolBar;
import java.awt.Font;
import javax.swing.SwingConstants;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class Spielfeld {

	public JFrame frame;
	private JTable table;
	private JTable table_1;
	private JLabel lblTreffer;
	public boolean klick = false;
	public int col;
	public int row;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Spielfeld window = new Spielfeld();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	public void setklick() {
		klick = false;
	}

	public int getRow() {
		return row;
	}

	public int getCol() {
		return col;
	}

	public void setText(int i) {
		if (i == 0){
		lblTreffer.setText("Treffer******");
		lblTreffer.setVisible(true);
		} else if (i == 1) {
		lblTreffer.setText("Wasser******");
		lblTreffer.setVisible(true);
		} else if (i == 2) {
		lblTreffer.setText("Versenkt******");
		lblTreffer.setVisible(true);
		} else if (i == 3) {
			lblTreffer.setText("Gewonnen******");
			lblTreffer.setVisible(true);
		} else if (i == 4) {
			lblTreffer.setText("Verloren******");
			lblTreffer.setVisible(true);
		}
	}

	public void setData(int x1, int y1, int v3) {
		int x = x1;
		int y = y1;
		String s = " S";

		switch (v3) {
		case 1:
			s = " S";
			break;
		case 2:
			s = " X";
			break;
		case 3:
			s = " O";
			break;
		}

		table_1.setValueAt(s, x, y);
	}

	public void setData2(int x1, int y1, int v3) {
		int x = x1;
		int y = y1;
		String s = " S";

		switch (v3) {
		case 1:
			s = " S";
			break;
		case 2:
			s = " X";
			break;
		case 3:
			s = " O";
			break;
		}

		table.setValueAt(s, x, y);
	}

	/**
	 * Create the application.
	 */
	public Spielfeld() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	@SuppressWarnings("serial")
	private void initialize() {
		try {
			UIManager
					.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch (Exception e) {

		}
		frame = new JFrame("Schiffeversenken");
		frame.setUndecorated(true);

		frame.setSize(800, 600);
		frame.setLocationRelativeTo(null);

		JInternalFrame internalFrame = new JInternalFrame("Schiffeversenken");
		internalFrame.setFrameIcon(null);
		internalFrame.setFocusable(false);
		internalFrame.setFocusTraversalKeysEnabled(false);
		internalFrame.setFocusCycleRoot(false);
		internalFrame.setDebugGraphicsOptions(DebugGraphics.NONE_OPTION);
		internalFrame.addInternalFrameListener(new InternalFrameAdapter() {
			@Override
			public void internalFrameClosing(InternalFrameEvent arg0) {
				System.exit(0);
			}
		});
		internalFrame.setSize(frame.getSize().width, frame.getSize().height);
		try {
			internalFrame.setSelected(true);
		} catch (PropertyVetoException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		internalFrame.setVisible(true);
		internalFrame.setClosable(true);
		internalFrame.setBackground(Color.GREEN);
		frame.getContentPane().add(internalFrame, BorderLayout.CENTER);

		JDesktopPane desktopPane = new JDesktopPane();
		desktopPane.setBackground(Color.WHITE);
		desktopPane.setForeground(Color.WHITE);
		desktopPane.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null,
				null, null));
		internalFrame.getContentPane().add(desktopPane, BorderLayout.CENTER);
		desktopPane.setLayout(null);

		JInternalFrame internalFrame_1 = new JInternalFrame("Feindeskarte");
		internalFrame_1.setBounds(16, 47, 262, 247);
		internalFrame_1.setIconifiable(true);
		desktopPane.add(internalFrame_1);
		internalFrame_1.getContentPane().setLayout(null);

		table = new JTable();
		table.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseReleased(MouseEvent e) {
				klick = true;
				col = table.getSelectedColumn();
				row = table.getSelectedRow();
			}
		});
		table.setCellSelectionEnabled(true);
		table.setFocusable(false);
		table.setFocusTraversalKeysEnabled(false);
		table.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
		table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN);
		table.setAutoCreateRowSorter(true);
		table.setAutoscrolls(false);
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		table.setBackground(Color.BLACK);
		table.setGridColor(Color.WHITE);
		table.setForeground(Color.WHITE);
		table.setRowHeight(20);
		table.setModel(new DefaultTableModel(
				new Object[][] {
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null }, }, new String[] { "New column",
						"New column", "New column", "New column", "New column",
						"New column", "New column", "New column", "New column",
						"New column" }) {
			boolean[] columnEditables = new boolean[] { false, false, false,
					false, false, false, false, false, false, false };

			public boolean isCellEditable(int row, int column) {
				return columnEditables[column];
			}
		});
		table.setShowVerticalLines(true);
		table.setShowHorizontalLines(true);
		table.setPreferredSize(new Dimension(50, 50));
		table.setBounds(23, 18, 230, 201);
		internalFrame_1.getContentPane().add(table);

		JLabel lblLabel = new JLabel("label");
		lblLabel.setBounds(0, 0, 252, 218);
		lblLabel.setIcon(new ImageIcon(Spielfeld.class
				.getResource("/com/ris/azubi/schiffe2/Karte.JPG")));
		internalFrame_1.getContentPane().add(lblLabel);

		JInternalFrame internalFrame_2 = new JInternalFrame("Eigene Karte");
		internalFrame_2.setBounds(294, 47, 262, 247);
		internalFrame_2.setIconifiable(true);
		desktopPane.add(internalFrame_2);
		internalFrame_2.getContentPane().setLayout(null);

		table_1 = new JTable();
		table_1.setCellSelectionEnabled(true);
		table_1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		table_1.setModel(new DefaultTableModel(
				new Object[][] {
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null },
						{ null, null, null, null, null, null, null, null, null,
								null }, }, new String[] { "New column",
						"New column", "New column", "New column", "New column",
						"New column", "New column", "New column", "New column",
						"New column" }) {
			boolean[] columnEditables = new boolean[] { false, false, false,
					false, false, false, false, false, false, false };

			public boolean isCellEditable(int row, int column) {
				return columnEditables[column];
			}
		});
		table_1.setShowVerticalLines(true);
		table_1.setShowHorizontalLines(true);
		table_1.setRowHeight(20);
		table_1.setPreferredSize(new Dimension(50, 50));
		table_1.setGridColor(Color.WHITE);
		table_1.setForeground(Color.WHITE);
		table_1.setBackground(Color.BLACK);
		table_1.setBounds(23, 18, 230, 201);
		internalFrame_2.getContentPane().add(table_1);

		JLabel label = new JLabel("label");
		label.setIcon(new ImageIcon(Spielfeld.class
				.getResource("/com/ris/azubi/schiffe2/Karte.JPG")));
		label.setBounds(0, 0, 252, 218);
		internalFrame_2.getContentPane().add(label);

		JToolBar toolBar = new JToolBar();
		toolBar.setPreferredSize(new Dimension(790, 4));
		toolBar.setFloatable(false);
		toolBar.setBounds(2, 0, 783, 24);
		desktopPane.add(toolBar);

		lblTreffer = new JLabel("");
		lblTreffer.setOpaque(true);
		lblTreffer.setHorizontalAlignment(SwingConstants.CENTER);
		lblTreffer.setFont(new Font("SansSerif", Font.BOLD, 16));
		lblTreffer.setForeground(Color.WHITE);
		lblTreffer.setBackground(Color.BLACK);
		lblTreffer.setPreferredSize(new Dimension(786, 22));
		toolBar.add(lblTreffer);
		internalFrame_2.setVisible(true);
		internalFrame_1.setVisible(true);
		frame.setVisible(true);

	}
}

Java:
public class Human extends Spieler {
	public Human(String s){
		name = s;
	}
	
	public void setzSchiff(Spielfeld sf){
		System.out.println();
		System.out.println(name + " bitte setzen!");
		System.out.println();
		spielfeld.schiffeSetzen();
	}
}

Java:
import java.awt.EventQueue;

public class Dateneingabe {

	JFrame frame;
	private JTextField text1;
	private JTextField text2;
	private JLabel lblNewLabel_1;
	private int spieler;
	private boolean b = false;
	private boolean check1;
	private boolean check2;
	private JCheckBox checkbox1;
	private JCheckBox checkbox2;
	private String sname1;
	private String sname2;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Dateneingabe window = new Dateneingabe(2);
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public Dateneingabe(int i) {
		spieler = i;
		initialize();
	}

	public boolean fertig() {
		return b;
	}
	
	public boolean check() {
		return check1;
	}
	
	public boolean check2() {
		return check2;
	}
	public String getName() {
		return sname1;
	}
	
	public String getName2() {
		return sname2;
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		try {
			UIManager
					.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");
		} catch (Exception e) {

		}
		frame = new JFrame();
		frame.getContentPane().setBackground(new Color(255, 102, 153));
		frame.setUndecorated(true);
		frame.setOpacity(0.9f);
		frame.setTitle("Dateneingabe");
		frame.setBounds(0, 0, 450, 300);
		frame.setLocationRelativeTo(null);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);

		text1 = new JTextField();
		text1.setBounds(158, 82, 122, 28);
		frame.getContentPane().add(text1);
		text1.setColumns(10);

		JLabel name1 = new JLabel("Spieler1:");
		name1.setFont(new Font("SansSerif", Font.PLAIN, 12));
		name1.setBounds(24, 88, 122, 16);
		frame.getContentPane().add(name1);

		lblNewLabel_1 = new JLabel("Bitte eingeben!");
		lblNewLabel_1.setHorizontalAlignment(SwingConstants.CENTER);
		lblNewLabel_1.setFont(new Font("SansSerif", Font.BOLD, 16));
		lblNewLabel_1.setBounds(101, 16, 247, 25);
		frame.getContentPane().add(lblNewLabel_1);

		checkbox1 = new JCheckBox("Schiffe automatisch setzen");
		checkbox1.setFont(new Font("SansSerif", Font.PLAIN, 12));
		checkbox1.setBounds(23, 126, 257, 18);
		frame.getContentPane().add(checkbox1);

		if (spieler == 1) {
			JLabel name2 = new JLabel("Spieler2:");
			name2.setVisible(true);
			name2.setBounds(25, 174, 122, 16);
			frame.getContentPane().add(name2);

			text2 = new JTextField();
			text2.setVisible(true);
			text2.setColumns(10);
			text2.setBounds(159, 168, 122, 28);
			frame.getContentPane().add(text2);

			checkbox2 = new JCheckBox("Schiffe automatisch setzen");
			checkbox2.setVisible(true);
			checkbox2.setBounds(24, 212, 256, 18);
			frame.getContentPane().add(checkbox2);

			JButton weiter2 = new JButton("Weiter");
			weiter2.setFont(new Font("SansSerif", Font.BOLD, 12));
			weiter2.setVisible(true);
			weiter2.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if (text1.getText().equals("")
							|| text2.getText().equals("")) {
						lblNewLabel_1.setText("Bitte Namen eingeben!");
					} else {
						b = true;
						check1 = checkbox1.isSelected();
						check2 = checkbox2.isSelected();
						sname1 = text1.getText();
						sname2 = text2.getText();
					}
				}
			});
			weiter2.setBounds(328, 253, 90, 28);
			frame.getContentPane().add(weiter2);
		} else {
			JButton weiter1 = new JButton("Weiter");
			weiter1.setFont(new Font("SansSerif", Font.BOLD, 12));
			weiter1.setVisible(true);
			weiter1.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent e) {
					if (text1.getText().equals("")) {
						lblNewLabel_1.setText("Bitte Namen eingeben!");		
					} else {
						b = true;
						check1 = checkbox1.isSelected();
						sname1 = text1.getText();
					}
				}
			});
			weiter1.setBounds(328, 132, 90, 28);
			frame.getContentPane().add(weiter1);
		}
		JButton button = new JButton("X");
		button.setFont(new Font("SansSerif", Font.BOLD, 12));
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		button.setBorder(null);
		button.setBounds(418, 6, 26, 23);
		frame.getContentPane().add(button);
		frame.setVisible(true);

	}

}

Java:
import java.util.ArrayList;
import java.util.Random;

public class Com extends Spieler {

	ArrayList<Character> arrayPos = new ArrayList<Character>();
	ArrayList<Integer> arrayKoordi = new ArrayList<Integer>();
	Random r = new Random();

	public Com() {
		name = "Com";
		fillarrayPos();
	}

	private void fillarrayPos() {
		for (int count = 0; count <= 99; count++) {
			arrayPos.add('O');
		}
	}
	
	private void objectlist(Karte sp){
	
	int schiffcount = 0;
	while (schiffcount < spielfeld.schiffAnzahl()[0]) {
		sp.objectlist.add(new Schlachtschiff());
		schiffcount++;
	}
	schiffcount = 0;
	while (schiffcount < spielfeld.schiffAnzahl()[1]) {
		sp.objectlist.add(new Kreuzer());
		schiffcount++;
	}
	schiffcount = 0;
	while (schiffcount < spielfeld.schiffAnzahl()[2]) {
		sp.objectlist.add(new Zerstoerer());
		schiffcount++;
	}
	schiffcount = 0;
	while (schiffcount < spielfeld.schiffAnzahl()[3]) {
		sp.objectlist.add(new UBoot());
		schiffcount++;
	}
	}

	public Karte setzeSchiff(Karte spielfeld) {
		int posi = 0;
		int counter = 0;
		int countercheck = 0;
		int schiffscount = 0;
		int zaehler = 0;
		int length = 4;
		int ausrichtung = 0;
		int countarray = 99;
		boolean check;
		objectlist(spielfeld);
		while (zaehler <= 3) {
			while (counter < spielfeld.schiffAnzahl()[zaehler]) {
				check = false;
				while (!check) {
					check = true;
					posi = r.nextInt(countarray);
					ausrichtung = r.nextInt(10);
					if (arrayPos.get(posi) == 'X') {
						check = false;
					} else {
						boolean check2 = false;
						countercheck = 0;
						if (ausrichtung <= 5) {
							if (posi + length <= arrayPos.size()) {
								for (int count = 9; count <= 99; count = count + 10) {
									if (posi <= count && posi + length <= count
											&& posi >= countercheck * 10) {
										check2 = true;
										for (int counti = 0; counti <= length; counti++) {
											if (arrayPos.get(posi + counti) == 'X') {
												check2 = false;
											} else {
												arrayKoordi.add(posi + counti);

											}
										}
									}
									countercheck++;
								}
							} else {
								for (int count = 9; count <= 99; count = count + 10) {
									if (posi <= count && posi - length <= count
											&& posi >= countercheck * 10) {
										check2 = true;
										for (int counti = 0; counti <= length; counti++) {
											if (arrayPos.get(posi - counti) == 'X') {
												check2 = false;
											} else {
												arrayKoordi.add(posi - counti);
						
											}
										}
									}
									countercheck++;
								}

							}
						} else {
							if (posi + length*10 <= arrayPos.size()) {
								for (int count = 9; count <= 99; count = count + 10) {
									if (posi <= count && posi + length*10 > 0 && posi + length*10 <= 99) {
										check2 = true;
										for (int counti = 0; counti <= length; counti++) {
											if (arrayPos.get(posi + counti*10) == 'X') {
												check2 = false;
											} else {
												arrayKoordi.add(posi + counti*10);
								
											}
										}
									}
								}
							} else {
								for (int count = 9; count <= 99; count = count + 10) {
									if (posi <= count && posi - length*10 > 0) {
										check2 = true;
										for (int counti = 0; counti <= length; counti++) {
											if (arrayPos.get(posi - counti*10) == 'X') {
												check2 = false;
											} else {
												arrayKoordi.add(posi- counti*10);
								
											}
										}
									}
								}

							}

						}
						if (check2) {
							check = true;
						} else {
							check = false;
							for(int countK = arrayKoordi.size(); countK != 0; countK--){
								arrayKoordi.remove(countK-1);
							}
						}
					}
				}
				counter++;
				spielfeld.objectlist.get(schiffscount).posi = new int[arrayKoordi.size()];
				for (int counti2 = 0; counti2 <= length; counti2++) {
					spielfeld.ek.i[arrayKoordi.get(counti2)] = 'S';
					arrayPos.set(arrayKoordi.get(counti2), 'X');
					spielfeld.objectlist.get(schiffscount).posi[counti2] = arrayKoordi.get(counti2);
				}
				for(int countK = arrayKoordi.size(); countK != 0; countK--){
					arrayKoordi.remove(countK-1);
				}
				schiffscount++;
			}
			counter = 0;
			zaehler++;
			length--;
		}
		return spielfeld;
	}
	public void schuss(){
		
	}
}


Java:
class Feld { 
	int  [] x = new int  [10];
	char [] y = new char [10];
	char [] i = new char [100]; 
	
	public Feld(){
		x[0] = 1;
		x[1] = 2;
		x[2] = 3;
		x[3] = 4;
		x[4] = 5;
		x[5] = 6;
		x[6] = 7;
		x[7] = 8;
		x[8] = 9;
		x[9] = 10;
		y[0] = 'A';
		y[1] = 'B';
		y[2] = 'C';
		y[3] = 'D';
		y[4] = 'E';
		y[5] = 'F';
		y[6] = 'G';
		y[7] = 'H';
		y[8] = 'I';
		y[9] = 'J';
		for(int count = 0; count <= 99; count++){
			i[count] = ' ';
		}
	}	

	
	
	
}

Java:
public abstract class Spieler {
	Karte spielfeld = new Karte();
	String name = "Kein Name";
	int scount = 0;
	
	public Spieler(){
	}

	
	public String getName(){
		return name;
	}

	public int getScount(){
		return scount;
	}
	
	public Karte getSpielfeld(){
		return spielfeld;
	}
	public void setSpielfeld(Karte sf){
		spielfeld = sf;
	}
	public void setScount(int sc){
		scount = sc;
	}
	
	
}

Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Input {
	String inputdata = null;;
	
	public Input(){
	}
	
	public String inoutput(){
		
		InputStreamReader input = new InputStreamReader(System.in);
		BufferedReader reader = new BufferedReader(input);
			
		try{
			inputdata = reader.readLine();	
		}
		catch(IOException ioe)
		{
			ioe.printStackTrace();
		}
		return inputdata;
	}
	
}

Java:
import java.util.ArrayList;
import java.util.Random;

public class Schuss {

	ArrayList<Integer> arrayPos = new ArrayList<Integer>();
	ArrayList<Integer> arrayPos2 = new ArrayList<Integer>();
	Random r = new Random();
	private Spielfeld sf;
	public int row;
	public int col;

	public Schuss(Spielfeld sp) {
		sf = sp;
		fillarrayPos();
	}

	public int gameLogik(Karte spielfeld) {
		int rewert = 0;
		boolean check = false;
		spielfeld.display();
		while (check == false) {
			try {
				sf.setklick();
				while (!sf.klick) {
				}
				col = sf.getCol();
				row = sf.getRow();
				sf.setklick();

				rewert = row + (col * 10);
				check = true;

			} catch (Exception E) {
				System.out.println("Bitte richtige Werte eingeben!");
			}

		}
		return rewert;
	}

	private void fillarrayPos() {
		for (int count = 0; count <= 99; count++) {
			arrayPos.add(count);
		}
		for (int count = 0; count <= 99; count++) {
			arrayPos2.add(count);
		}
	}

	public int gameLogikCom(Karte spielfeld) {
		int rewert = 100;
		int n = 0;
		while (rewert < 0 || rewert >= 99) {
			n = r.nextInt(arrayPos2.size()-1);
			rewert = (int) arrayPos2.get(n);
			
		}
		System.out.println(arrayPos2.get(n));
		System.out.println(arrayPos2.size());
		System.out.println(rewert);
		arrayPos2.remove(n);
		return rewert;
	}

	public boolean deletePos(int i) {
		if (checkPos(i)) {
			arrayPos.remove(i);
			return true;
		} else {
			return false;
		}
	}

	public boolean checkPos(int i) {
		if (i >= 0) {
			if ((arrayPos.size()-1) >= i) {
				if ((arrayPos.get(i)-1) == i) {
					return true;
				} else {
					return false;
				}
			} else {
				return false;
			}
		} else {
			return false;
		}
	}

}

Java:
public class Schiff {

	protected int length = 0;
	protected String text = null;
	protected String text2 = null;
	protected Feld feld = new Feld();
	protected boolean check;
	protected Input i = new Input();
	public int[] posi;
	private int[] belegt = new int [5];
	private int[] checkb = new int [5];
	protected int tcount = 0;
	boolean treffer = false;
	boolean versenkt = false;

	public Schiff() {
	}

	public void setLength(int l) {
		length = l;
	}

	public void setText(String t) {
		text = t;
	}

	public void setText2(String t2) {
		text2 = t2;
	}

	public int getLength() {
		return length;
	}

	public String getText() {
		return text;
	}

	public String getText2() {
		return text2;
	}

	public int[] getPosi() {
		return posi;
	}

	public boolean treffer(int position) {
		treffer = false;
		for (int counter = 0; counter < length; counter++) {
			if (position == posi[counter]) {
					treffer = true;
					tcount++;
					if (belegt[counter] == position && checkb[counter] == 1){
						treffer = false;
						tcount--;	
					}
					else{
						belegt[counter] = position;
						checkb[counter] = 1;
					}
			}
		}
		return treffer;
	}

	public boolean versenkt() {
		if (tcount == length) {
			versenkt = true;
		}
		return versenkt;
	}

Java:
public class Schlachtschiff extends Schiff {
	
	public Schlachtschiff(){
		super.length = 5;
		super.text   = "Position des 5er Schiffes bitte eingeben, Beispiel A1-A5!";
		super.text2  = "Bitte richtige Werte eingeben, Beispiel A1-A5 oder A1-E1!";
	}
}
Java:
public class Kreuzer extends Schiff {

	public Kreuzer(){
		super.length = 4;
		super.text   = "Position des 4er Schiffes bitte eingeben, Beispiel A1-A4!";
		super.text2  = "Bitte richtige Werte eingeben, Beispiel A1-A4 oder A1-D1!";
	}
	
}
Java:
public class UBoot extends Schiff {

	public UBoot(){
		super.length = 2;
		super.text   = "Position des 2er Schiffes bitte eingeben, Beispiel A1-A2!";
		super.text2  = "Bitte richtige Werte eingeben, Beispiel A1-A2 oder A1-B1!";
	}
	
}
Java:
public class Zerstoerer extends Schiff {

	public Zerstoerer(){
		super.length = 3;
		super.text   = "Position des 3er Schiffes bitte eingeben, Beispiel A1-A3!";
		super.text2  = "Bitte richtige Werte eingeben, Beispiel A1-A3 oder A1-C1!";
	}
	
}
Java:
import java.util.Random;

public class Spielablauf {

	Karte spielfeld = new Karte();
	Karte spielfeld2 = new Karte();
	int vschiff = 0;
	int treffer = 0;
	int koordi = 0;
	int count = 0;
	Random random = new Random();
	private Spielfeld sf;

	public Spielablauf(Spielfeld sp) {
		sf = sp;
	}

	public void svs(Human s1, Human s2) {
		while (count > 0 && count < 3) {
			count = random.nextInt(1);
		}
		boolean doppelrunde = false;
		boolean win = false;
		String sname = null;
		Schuss sab = new Schuss(sf);
		while (win == false) {

			if (count == 1) {
				spielfeld = s1.getSpielfeld();
				spielfeld2 = s2.getSpielfeld();
				sname = s1.getName();
				count = 2;
				vschiff = s1.getScount();
			} else {
				spielfeld = s2.getSpielfeld();
				spielfeld2 = s1.getSpielfeld();
				sname = s2.getName();
				count = 1;
				vschiff = s2.getScount();
			}
			doppelrunde = true;
			while (doppelrunde == true) {
				doppelrunde = false;
				treffer = 0;
				koordi = sab.gameLogik(spielfeld);
				System.out.println();
				treffer = spielfeld2.checkTreffer(koordi);
				if (treffer == 0) {
					sf.setText(1);
					doppelrunde = false;
				}
				if (treffer == 1) {
					sf.setText(0);
					doppelrunde = true;
				}
				if (treffer == 2) {
					sf.setText(2);
					System.out.println();
					doppelrunde = true;
					vschiff++;
					if (vschiff < spielfeld2.objectlist.size()) {
					} else {
						spielfeld.fk.i[koordi] = 'X';
						spielfeld.display();
					}
				}
				if (doppelrunde == true) {
					spielfeld.fk.i[koordi] = 'X';
					spielfeld2.ek.i[koordi] = 'X';
				} else {
					spielfeld.fk.i[koordi] = 'O';
					spielfeld2.ek.i[koordi] = 'O';
				}
				if (count == 2) {
					s1.setSpielfeld(spielfeld);
					s2.setSpielfeld(spielfeld2);
					s1.setScount(vschiff);
				} else {
					s2.setSpielfeld(spielfeld);
					s1.setSpielfeld(spielfeld2);
					s2.setScount(vschiff);
				}

				if (vschiff == spielfeld.objectlist.size()) {
					System.out.println();
					System.out.println(sname + " gewinnt!");
					System.out.println();
					win = true;
				}
			}
		}
	}

	public void svsc(Spieler splayer, Com cplayer) {
		while (count > 0 && count < 3) {
			count = random.nextInt(1);
		}
		boolean doppelrunde = false;
		boolean win = false;
		String sname = null;
		int comSchuss = 0;
		Schuss sab = new Schuss(sf);
		while (win == false) {

			if (count == 1) {
				spielfeld = splayer.getSpielfeld();
				spielfeld2 = cplayer.getSpielfeld();
				sname = splayer.getName();
				count = 2;
				vschiff = splayer.getScount();
			} else {
				spielfeld = cplayer.getSpielfeld();
				spielfeld2 = splayer.getSpielfeld();
				sname = cplayer.getName();
				count = 1;
				vschiff = cplayer.getScount();
			}
			doppelrunde = true;
			while (doppelrunde) {
				doppelrunde = false;
				treffer = 0;
				if (!sname.equals("Com")) {
					koordi = sab.gameLogik(spielfeld);
				} else {
					if (comSchuss == 0) {
						koordi = sab.gameLogikCom(spielfeld);
					}
					if (comSchuss == 1) {
						if (sab.checkPos(koordi)) {
							koordi = koordi++;
							comSchuss = 1;
						} else {
							comSchuss = 2;
						}
					}
					if (comSchuss == 2) {
						if (sab.checkPos(koordi - 1)) {
							koordi = koordi--;
						} else {
							comSchuss = 3;
						}
					}
					if (comSchuss == 3) {
						if (sab.checkPos(koordi + 10)) {
							koordi = koordi + 10;
						} else {
							comSchuss = 4;
						}
					}
					if (comSchuss == 4) {
						if (sab.checkPos(koordi - 10)) {
							koordi = koordi - 10;
						} else {
							comSchuss = 0;
							koordi = sab.gameLogikCom(spielfeld);
						}
					}
				}
				treffer = spielfeld2.checkTreffer(koordi);
				if (treffer == 0) {
					if (!sname.equals("Com")) {
						sf.setText(1);

					}
					doppelrunde = false;
					if (comSchuss != 0) {
						comSchuss++;
					}
				}
				if (treffer == 1) {
					comSchuss = 1;
					doppelrunde = true;
					if (!sname.equals("Com")) {
						sf.setText(1);
					}
				}
				boolean ende = false;
				if (treffer == 2) {
					if (!sname.equals("Com")) {
						sf.setText(2);
					} else {
						comSchuss = 0;
					}
					doppelrunde = true;
					vschiff++;
					if (vschiff < spielfeld2.objectlist.size()) {
						if (!sname.equals("Com")) {
							spielfeld.display();
						}
					} else {
						if (!sname.equals("Com")) {
							ende = true;
							spielfeld.display();
						}
					}

				}
				if (!ende) {
					if (doppelrunde == true) {
						spielfeld.fk.i[koordi] = 'X';
						spielfeld2.ek.i[koordi] = 'X';
					} else {
						spielfeld.fk.i[koordi] = 'O';
						spielfeld2.ek.i[koordi] = 'O';
					}
					if (count == 2) {
						splayer.setSpielfeld(spielfeld);
						cplayer.setSpielfeld(spielfeld2);
						splayer.setScount(vschiff);
						spielfeld.display();
					} else {
						cplayer.setSpielfeld(spielfeld);
						splayer.setSpielfeld(spielfeld2);
						cplayer.setScount(vschiff);
						spielfeld.display();
					}
				}
				if (vschiff == spielfeld.objectlist.size()) {
					if (!sname.equals("Com")) {
						sf.setText(3);
					} else {
						sf.setText(4);
					}
					win = true;
				}
			}

		}
	}

	public void netz(Human spieler) {
		
		
	}

}

Ich hoffe ich hab nichts vergessen^^ Bildchen sind übrigens keine dabei^^

Es entspricht Jedenfalls deinen Anforderungen^^ Nur das Manuelle Schiffesetzen muss man noch über die Konsole machen und es fehlen glaub noch nen paar Imports^^. Vielleicht hilft es dir weiter.

Gruß
Chris

Ps: Hab da leider keine Kommentare gemacht, aber normal müsste man sich das schnell reinlesen können.
 
Zuletzt bearbeitet:
Zurück