Added (currently not working) ship rotation method, colored Ready and Reset button, added (currently not working) Player name Labels etc. to GameBoard
This commit is contained in:
parent
a7e7d75c62
commit
bf78db9404
|
@ -14,6 +14,7 @@ public class BoardDisplay extends JPanel {
|
||||||
private List <Ship> ships;
|
private List <Ship> ships;
|
||||||
private Ship currentShip;
|
private Ship currentShip;
|
||||||
private Player player;
|
private Player player;
|
||||||
|
private boolean horizontal = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Konstruktor der startLocalGame.
|
* Konstruktor der startLocalGame.
|
||||||
|
@ -69,8 +70,12 @@ public class BoardDisplay extends JPanel {
|
||||||
field.addMouseListener(new MouseAdapter() {
|
field.addMouseListener(new MouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void mouseClicked(MouseEvent e) {
|
public void mouseClicked(MouseEvent e) {
|
||||||
|
if (SwingUtilities.isRightMouseButton(e)) {
|
||||||
|
togglePlacementDirection(); // Ausrichtung ändern
|
||||||
|
} else if (SwingUtilities.isLeftMouseButton(e)) {
|
||||||
Point o = new Point(x, y);
|
Point o = new Point(x, y);
|
||||||
handleFieldClick(o);
|
handleFieldClick(o); // Linksklick -> Schiff platzieren
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -79,6 +84,8 @@ public class BoardDisplay extends JPanel {
|
||||||
// this.ships = new ArrayList<Ship>();
|
// this.ships = new ArrayList<Ship>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void selectCurrentShip(Ship ship) {
|
public void selectCurrentShip(Ship ship) {
|
||||||
this.currentShip = ship;
|
this.currentShip = ship;
|
||||||
}
|
}
|
||||||
|
@ -147,8 +154,17 @@ public class BoardDisplay extends JPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO Funktion beschreiben etc.
|
* Wechselt die Platzierungsrichtung zwischen horizontal und vertikal.
|
||||||
* @param o
|
*/
|
||||||
|
private void togglePlacementDirection() {
|
||||||
|
horizontal = !horizontal;
|
||||||
|
String direction = horizontal ? "horizontal" : "vertikal";
|
||||||
|
System.out.println("Platzierungsrichtung geändert zu: " + direction);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handhabt das Platzieren eines Schiffs auf dem Spielfeld.
|
||||||
|
* @param o Die Koordinaten des Klicks.
|
||||||
*/
|
*/
|
||||||
private void handleFieldClick(Point o) {
|
private void handleFieldClick(Point o) {
|
||||||
if (!this.currentShip.setPosition(o,player.getBoard().getShips(),this.gridSize)) {
|
if (!this.currentShip.setPosition(o,player.getBoard().getShips(),this.gridSize)) {
|
||||||
|
|
|
@ -8,6 +8,8 @@ import java.awt.event.MouseEvent;
|
||||||
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseAdapter;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
|
// TODO wenn rechtklick auf board dann schiff rotation ändern UND Readybutton farbe Readybutton kontexttext und Spielernamen anzeigen
|
||||||
/**
|
/**
|
||||||
* Das GameBoard dient als Panel, in dem das tatsächliche Spiel stattfindet.
|
* Das GameBoard dient als Panel, in dem das tatsächliche Spiel stattfindet.
|
||||||
* Der Benutzer kann hier seine Schiffe platzieren, das Spiel starten etc.
|
* Der Benutzer kann hier seine Schiffe platzieren, das Spiel starten etc.
|
||||||
|
@ -103,9 +105,11 @@ public class GameBoard extends JPanel {
|
||||||
}
|
}
|
||||||
|
|
||||||
JToggleButton rightPlayerModul7 = new JToggleButton("Bereit");
|
JToggleButton rightPlayerModul7 = new JToggleButton("Bereit");
|
||||||
|
rightPlayerModul7.setBackground(Color.GREEN);
|
||||||
rightButtonsPanel.add(rightPlayerModul7);
|
rightButtonsPanel.add(rightPlayerModul7);
|
||||||
|
|
||||||
JToggleButton leftPlayerModul7 = new JToggleButton("Reset");
|
JToggleButton leftPlayerModul7 = new JToggleButton("Reset");
|
||||||
|
leftPlayerModul7.setBackground(Color.RED);
|
||||||
leftButtonsPanel.add(leftPlayerModul7);
|
leftButtonsPanel.add(leftPlayerModul7);
|
||||||
// Panel für die Buttons des rechten Spielers (ganz rechts)
|
// Panel für die Buttons des rechten Spielers (ganz rechts)
|
||||||
|
|
||||||
|
@ -118,6 +122,26 @@ public class GameBoard extends JPanel {
|
||||||
centerPanel.add(ownBoardPanel);
|
centerPanel.add(ownBoardPanel);
|
||||||
centerPanel.add(opponentBoardPanel);
|
centerPanel.add(opponentBoardPanel);
|
||||||
|
|
||||||
|
// Spieler-Namen über den Spielfeldern hinzufügen
|
||||||
|
JPanel playerNamesPanel = new JPanel();
|
||||||
|
playerNamesPanel.setLayout(new GridLayout(1, 2)); // Zwei Labels nebeneinander
|
||||||
|
JLabel player1NameLabel = new JLabel(p1.getName(), SwingConstants.CENTER);
|
||||||
|
JLabel player2NameLabel = new JLabel(p2.getName(), SwingConstants.CENTER);
|
||||||
|
System.out.println(player2NameLabel.getText());
|
||||||
|
|
||||||
|
// Schrift und Formatierung der Labels
|
||||||
|
player1NameLabel.setFont(new Font("Roboto", Font.BOLD, 18));
|
||||||
|
player2NameLabel.setFont(new Font("Roboto", Font.BOLD, 18));
|
||||||
|
|
||||||
|
// Spieler-Labels zum Panel hinzufügen
|
||||||
|
playerNamesPanel.add(player1NameLabel);
|
||||||
|
playerNamesPanel.add(player2NameLabel);
|
||||||
|
|
||||||
|
// Spieler-Namen-Panel oberhalb der Spielfelder hinzufügen
|
||||||
|
JPanel namesAndBoardsPanel = new JPanel(new BorderLayout());
|
||||||
|
namesAndBoardsPanel.add(playerNamesPanel, BorderLayout.NORTH);
|
||||||
|
namesAndBoardsPanel.add(centerPanel, BorderLayout.CENTER);
|
||||||
|
|
||||||
// Panels dem Hauptlayout hinzufügen
|
// Panels dem Hauptlayout hinzufügen
|
||||||
add(leftButtonsPanel, BorderLayout.WEST);
|
add(leftButtonsPanel, BorderLayout.WEST);
|
||||||
add(rightButtonsPanel, BorderLayout.EAST);
|
add(rightButtonsPanel, BorderLayout.EAST);
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
|
||||||
|
//TODO Generell Buttons in GameBoard anpassen
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Der MainFrame dient als Hub und Übergreifendes Fenster auf dem alle weiteren Panel angezeigt werden.
|
* Der MainFrame dient als Hub und Übergreifendes Fenster auf dem alle weiteren Panel angezeigt werden.
|
||||||
* Dadurch werden keine weiteren Fenster geöffnet.
|
* Dadurch werden keine weiteren Fenster geöffnet.
|
||||||
|
|
|
@ -15,5 +15,4 @@ public class ShipButton extends JButton {
|
||||||
public void buttonPressed() {
|
public void buttonPressed() {
|
||||||
this.setEnabled(!ship.isPlaced());
|
this.setEnabled(!ship.isPlaced());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue