lucasjoshua #14

Merged
lgc merged 13 commits from lucasjoshua into main 2024-12-15 13:27:15 +00:00
4 changed files with 46 additions and 5 deletions
Showing only changes of commit bf78db9404 - Show all commits

View File

@ -14,6 +14,7 @@ public class BoardDisplay extends JPanel {
private List <Ship> ships;
private Ship currentShip;
private Player player;
private boolean horizontal = true;
/**
* Konstruktor der startLocalGame.
@ -69,8 +70,12 @@ public class BoardDisplay extends JPanel {
field.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
Point o= new Point(x, y);
handleFieldClick(o);
if (SwingUtilities.isRightMouseButton(e)) {
togglePlacementDirection(); // Ausrichtung ändern
} else if (SwingUtilities.isLeftMouseButton(e)) {
Point o = new Point(x, y);
handleFieldClick(o); // Linksklick -> Schiff platzieren
}
}
});
}
@ -79,6 +84,8 @@ public class BoardDisplay extends JPanel {
// this.ships = new ArrayList<Ship>();
}
public void selectCurrentShip(Ship ship) {
this.currentShip = ship;
}
@ -147,8 +154,17 @@ public class BoardDisplay extends JPanel {
}
/**
* TODO Funktion beschreiben etc.
* @param o
* Wechselt die Platzierungsrichtung zwischen horizontal und vertikal.
*/
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) {
if (!this.currentShip.setPosition(o,player.getBoard().getShips(),this.gridSize)) {

View File

@ -8,6 +8,8 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseAdapter;
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.
* 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");
rightPlayerModul7.setBackground(Color.GREEN);
rightButtonsPanel.add(rightPlayerModul7);
JToggleButton leftPlayerModul7 = new JToggleButton("Reset");
leftPlayerModul7.setBackground(Color.RED);
leftButtonsPanel.add(leftPlayerModul7);
// Panel für die Buttons des rechten Spielers (ganz rechts)
@ -118,6 +122,26 @@ public class GameBoard extends JPanel {
centerPanel.add(ownBoardPanel);
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
add(leftButtonsPanel, BorderLayout.WEST);
add(rightButtonsPanel, BorderLayout.EAST);

View File

@ -1,6 +1,8 @@
import javax.swing.*;
import java.awt.*;
//TODO Generell Buttons in GameBoard anpassen
/**
* Der MainFrame dient als Hub und Übergreifendes Fenster auf dem alle weiteren Panel angezeigt werden.
* Dadurch werden keine weiteren Fenster geöffnet.

View File

@ -15,5 +15,4 @@ public class ShipButton extends JButton {
public void buttonPressed() {
this.setEnabled(!ship.isPlaced());
}
}