Compare commits

..

No commits in common. "626ae041e5e0508d87974870d0c4233bcf2f723f" and "f1adf060358fc8494e22fd19ca1477e366828f0a" have entirely different histories.

11 changed files with 22 additions and 60 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -42,19 +42,6 @@ public class Board {
return response;
}
private void propagateSunk(Point p) {
HitResponse hit = this.getHitResponseOnPoint(p);
if (hit == null || hit.getType() != HitResponseType.HIT) return;
hit.setType(HitResponseType.SUNK);
propagateSunk(new Point(p.getX() + 1, p.getY()));
propagateSunk(new Point(p.getX() - 1, p.getY()));
propagateSunk(new Point(p.getX(), p.getY() + 1));
propagateSunk(new Point(p.getX(), p.getY() - 1));
}
private void createShip(int semester){
List<ShipData> shipData = Ship.semeterList.get(semester -1);
for (int i = 0; i < shipData.size(); i++) {
@ -67,21 +54,14 @@ public class Board {
}
public synchronized boolean addHits(HitResponse hitResponse) {
if (this.getHitResponseOnPoint(hitResponse.getPoint()) == null){
if (this.getHitResponsOnPoint(hitResponse.getPoint()) == null){
this.hits.add(hitResponse);
//Propagate sunk for display purposes
if (hitResponse.getType() == HitResponseType.SUNK) {
hitResponse.setType(HitResponseType.HIT);
propagateSunk(hitResponse.getPoint());
}
return true;
}
return false;
}
public synchronized HitResponse getHitResponseOnPoint(Point point) {
public synchronized HitResponse getHitResponsOnPoint(Point point) {
for (int i = 0; i < this.hits.size(); i++){
if (this.hits.get(i).getPoint().equals(point)){
return this.hits.get(i);

View File

@ -63,7 +63,7 @@ public class BoardDisplay extends JPanel {
add(rowLabel);
} else {
// Spielfeld (interaktive Zellen)
JButton field = new JButton("");
JButton field = new JButton(x + ", " + y);
field.setBackground(Color.BLUE);
field.setOpaque(true);
field.setBorderPainted(true);
@ -102,7 +102,6 @@ public class BoardDisplay extends JPanel {
} else if (SwingUtilities.isLeftMouseButton(e)) {
Point o = new Point(x, y);
handleFieldClick(o);
SoundHandler.playSound("plop");
}
}
});
@ -197,46 +196,30 @@ public class BoardDisplay extends JPanel {
fields[i][j].setEnabled(true);
}
}
if (this.enemyBoard) {
fields[i][j].setBackground(Color.WHITE);
} else {
fields[i][j].setBackground(Color.BLUE);
}
if (!this.player.isReady()) {
for(Point p : test) {
if(i==p.getX() && j==p.getY()) {
if (currentShip.checkValidPlacement(mousePosition,horizontal,player.getBoard().getShips(),gridSize)) {
if(i==p.getX() && j==p.getY() && currentShip.checkValidPlacement(mousePosition,horizontal,player.getBoard().getShips(),gridSize)) {
fields[i][j].setBackground(Color.GREEN);
} else {
}else if(i==p.getX() && j==p.getY() && !currentShip.checkValidPlacement(mousePosition,horizontal,player.getBoard().getShips(),gridSize)) {
fields[i][j].setBackground(Color.RED);
}
}
}
}
for(Ship ship: player.getBoard().getShips()) {
if(ship.isShipOnPos(new Point(i,j))) {
fields[i][j].setBackground(Color.LIGHT_GRAY);
break;
}
}
HitResponse hit = this.player.getBoard().getHitResponseOnPoint(new Point(i, j));
HitResponse hit = this.player.getBoard().getHitResponsOnPoint(new Point(i, j));
if (hit != null) {
switch (hit.getType()) {
case HIT:
fields[i][j].setBackground(Color.ORANGE);
SoundHandler.playSound("hit");
break;
case SUNK:
case VICTORY:
SoundHandler.playSound("destroyed");
fields[i][j].setBackground(Color.RED);
fields[i][j].setBackground(Color.ORANGE);
break;
case MISS:
if (this.enemyBoard) {
SoundHandler.playSound("miss");
fields[i][j].setBackground(Color.BLUE);
} else {
fields[i][j].setBackground(Color.CYAN);
}
break;
}
}

View File

@ -7,8 +7,8 @@ public class HalloSchiffeVersenken {
System.out.println("HelloSchiffeVersenekn");
//System.out.println("sound");
//SoundHandler.playSound("hit");
System.out.println("sound");
SoundHandler.playSound("hit");
Thread.sleep(10000);

View File

@ -8,6 +8,8 @@ import java.net.InetSocketAddress;
/**
* Das JoinGame Panel dient zum setzten des Ports/IP-Adresse.
* Anschließend kann das Verbinden Panel gezeigt werden.
* 51525
* ssh.lgc.sh
*/
public class JoinGame extends JPanel {
// Grafiken

View File

@ -10,7 +10,7 @@ public class LocalPlayer extends Player {
@Override
public synchronized void receiveShoot(Point point) {
HitResponse hitResponse = board.getHitResponseOnPoint(point);
HitResponse hitResponse = board.getHitResponsOnPoint(point);
if (!(hitResponse == null)){
enemy.receiveHit(hitResponse);

View File

@ -9,7 +9,7 @@ public class Point {
public Point (String str) {
if (Point.isValidSyntax(str)) {
this.setX(str.charAt(0));
this.setY(Integer.parseInt(str.substring(1)) - 1);
this.setY(Integer.parseInt(str.substring(1)));
} else {
throw new IllegalArgumentException("String ist keine gültige Koordinate");
}
@ -17,7 +17,7 @@ public class Point {
@Override
public String toString() {
return (char) ('A' + this.x) + String.valueOf(this.y + 1);
return (char) ('A' + this.x) + String.valueOf(this.y);
}
public int getX() {

View File

@ -16,10 +16,7 @@ public class SoundHandler {
// Wenn fehler beim erstellen von .jar mit sound hier gucken
private static HashMap<String, String> sounds = new HashMap<String, String>(Map.of(
"miss", "./Sound/water-drip.mp3",
"hit", "./Sound/hit.mp3",
"destroyed", "./Sound/hit.mp3",
"plop", "./Sound/plop.mp3"
"hit", "./Sound/water-drip.mp3"
));
public static void playSound(String soundName) {

View File

@ -15,7 +15,7 @@ public class SpecificAiPlayerMedium extends AiPlayer{
// Shoot at the enemy and receive the hit response
enemy.receiveShoot(nextShot);
HitResponse hitResponse = enemy.board.getHitResponseOnPoint(nextShot);
HitResponse hitResponse = enemy.board.getHitResponsOnPoint(nextShot);
// If it's a hit or sunk, add adjacent cells to the hitsQueue
if (hitResponse.getHitResponse() == HitResponseType.HIT) {
addAdjacentPoints(nextShot);