merging
This commit is contained in:
commit
0024b55208
@ -23,6 +23,10 @@ public class Game {
|
|||||||
return this.currentPlayer;
|
return this.currentPlayer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Player getOtherPlayer() {
|
||||||
|
return this.currentPlayer == players[0] ? players[1] : players[0];
|
||||||
|
}
|
||||||
|
|
||||||
public void changeCurrentPlayer(){
|
public void changeCurrentPlayer(){
|
||||||
currentPlayer = (currentPlayer == players[1])? players[0] : players[1];
|
currentPlayer = (currentPlayer == players[1])? players[0] : players[1];
|
||||||
}
|
}
|
||||||
|
@ -92,11 +92,11 @@ public abstract class Player {
|
|||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void placeShipRandomly(Player player) {
|
public void placeShipRandomly() {
|
||||||
Random rand = new Random();
|
Random rand = new Random();
|
||||||
for(int i : bato) {
|
for(int i : bato) {
|
||||||
Ship ship = null;
|
Ship ship = new Ship(new Pair<>(-1, -1), i, Direction.DEFAULT);
|
||||||
while(ship == null || !player.setShips(ship)) {
|
while(!setShips(ship)) {
|
||||||
ship = new Ship(new Pair<>(rand.nextInt(10), rand.nextInt(10)), i, Direction.values()[rand.nextInt(Direction.values().length)]);
|
ship = new Ship(new Pair<>(rand.nextInt(10), rand.nextInt(10)), i, Direction.values()[rand.nextInt(Direction.values().length)]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,14 +54,12 @@ public class Terminal extends View {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Random
|
// Random
|
||||||
Player.placeShipRandomly(player);
|
player.placeShipRandomly();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void displayBoard() {
|
public void displayBoard() {
|
||||||
System.out.println(toString());
|
System.out.println(toString());
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package battleship.view;
|
package battleship.view;
|
||||||
|
|
||||||
import battleship.model.Direction;
|
|
||||||
import battleship.model.Game;
|
import battleship.model.Game;
|
||||||
import battleship.model.Ship;
|
import battleship.model.Ship;
|
||||||
import battleship.model.player.Player;
|
import battleship.model.player.Player;
|
||||||
@ -8,9 +7,8 @@ import battleship.utils.Pair;
|
|||||||
import battleship.utils.Triplet;
|
import battleship.utils.Triplet;
|
||||||
|
|
||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
|
import java.awt.*;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Random;
|
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
|
|
||||||
public abstract class View {
|
public abstract class View {
|
||||||
|
|
||||||
@ -24,33 +22,36 @@ public abstract class View {
|
|||||||
|
|
||||||
public abstract void setShips(Player player);
|
public abstract void setShips(Player player);
|
||||||
|
|
||||||
|
|
||||||
public abstract void displayBoard();
|
public abstract void displayBoard();
|
||||||
public abstract void displayBoard(Graphics g);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
// String chain = "A vous de joueur "+game.currentPlayer.toString()+ "\n+ - - - - - - - - - - +\n";
|
// String chain = "A vous de joueur "+game.currentPlayer.toString()+ "\n+ - - - - - - - - - - +\n";
|
||||||
String chain = "";
|
String chain = "";
|
||||||
for(int u = 0; u < 2; ++u) {
|
for(int u = 0; u < 2; ++u) {
|
||||||
ArrayList<Triplet<Integer,Integer,Boolean>> moves = game.players[u].getMoves();
|
Player player = game.players[u];
|
||||||
|
ArrayList<Ship> ships = game.players[u].getShips();
|
||||||
chain += "Player " + (u + 1) + " :\n";
|
chain += "Player " + (u + 1) + " :\n";
|
||||||
chain += "+ - - - - - - - - - - +\n";
|
chain += "+ - - - - - - - - - - +\n";
|
||||||
for(int i = 0; i < 10;++i) {
|
for(int i = 0; i < 10;++i) {
|
||||||
chain += "|";
|
chain += "|";
|
||||||
for(int y = 0;y < 10; ++y) {
|
for(int y = 0;y < 10; ++y) {
|
||||||
if(!moves.isEmpty()) {
|
Pair<Integer, Integer> pair = new Pair<>(i, y);
|
||||||
for(Triplet<Integer, Integer, Boolean> move : moves) {
|
if(!ships.isEmpty()) {
|
||||||
if(move.getLeft() == i && move.getMiddle() == y) {
|
boolean isPosition = false;
|
||||||
if (move.getRight())
|
for(Ship ship : ships) {
|
||||||
|
if(isShipPosition(ship, pair)) {
|
||||||
|
isPosition = true;
|
||||||
|
if(isPositionDrowned(game.players[u == 0 ? 1 : 0], ship, pair)) {
|
||||||
chain += " !";
|
chain += " !";
|
||||||
else
|
|
||||||
chain += " .";
|
|
||||||
} else {
|
} else {
|
||||||
chain += " _";
|
chain += " .";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if(!isPosition)
|
||||||
|
chain += " _";
|
||||||
} else {
|
} else {
|
||||||
chain += " _";
|
chain += " _";
|
||||||
}
|
}
|
||||||
@ -63,4 +64,31 @@ public abstract class View {
|
|||||||
return chain;
|
return chain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isShipPosition(Ship ship, Pair<Integer, Integer> pair) {
|
||||||
|
if(ship.getCoords().equals(pair))
|
||||||
|
return true;
|
||||||
|
for(int a = 0; a < ship.getSize(); ++a) {
|
||||||
|
if(new Pair<>(ship.getCoords().getLeft() + a * ship.getDirection().getDirection().getLeft(), ship.getCoords().getRight() + a * ship.getDirection().getDirection().getRight()).equals(pair)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private boolean isPositionDrowned(Player other, Pair<Integer, Integer> pair) {
|
||||||
|
for(Triplet<Integer, Integer, Boolean> move : other.getMoves()) {
|
||||||
|
if(move.getRight() && pair.getLeft().equals(move.getLeft()) && pair.getRight().equals(move.getMiddle())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isPositionDrowned(Player other, Ship ship, Pair<Integer, Integer> pair) {
|
||||||
|
if(ship.isDrown())
|
||||||
|
return true;
|
||||||
|
return isPositionDrowned(other, pair);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,8 +7,8 @@ import java.awt.Color;
|
|||||||
import java.awt.Graphics;
|
import java.awt.Graphics;
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.awt.geom.Line2D;
|
import java.awt.geom.Line2D;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
public class Window extends View {
|
public class Window extends View {
|
||||||
|
|
||||||
@ -30,10 +30,6 @@ public class Window extends View {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void displayBoard(Graphics g) {
|
|
||||||
|
|
||||||
}
|
|
||||||
class Draw extends JPanel {
|
class Draw extends JPanel {
|
||||||
public void paintComponent(Graphics g) {
|
public void paintComponent(Graphics g) {
|
||||||
/*JTextArea area = new JTextArea();
|
/*JTextArea area = new JTextArea();
|
||||||
|
Loading…
Reference in New Issue
Block a user