diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ch/epfl/xblast/ArgumentChecker.java | 4 | ||||
-rw-r--r-- | src/ch/epfl/xblast/PlayerID.java | 2 | ||||
-rw-r--r-- | src/ch/epfl/xblast/server/Bomb.java | 32 | ||||
-rw-r--r-- | src/ch/epfl/xblast/server/Player.java | 52 |
4 files changed, 50 insertions, 40 deletions
diff --git a/src/ch/epfl/xblast/ArgumentChecker.java b/src/ch/epfl/xblast/ArgumentChecker.java index a567fbb..311807e 100644 --- a/src/ch/epfl/xblast/ArgumentChecker.java +++ b/src/ch/epfl/xblast/ArgumentChecker.java | |||
@@ -7,12 +7,13 @@ package ch.epfl.xblast; | |||
7 | * @author Timothée FLOURE (257420) | 7 | * @author Timothée FLOURE (257420) |
8 | */ | 8 | */ |
9 | public final class ArgumentChecker { | 9 | public final class ArgumentChecker { |
10 | |||
10 | /** | 11 | /** |
11 | * Returns the given value if it is non-negative. | 12 | * Returns the given value if it is non-negative. |
12 | * | 13 | * |
13 | * @param value the tested value | 14 | * @param value the tested value |
14 | * @throws IllegalArgumentException if the value is inferior to 0 | ||
15 | * @return the given value if non-negative | 15 | * @return the given value if non-negative |
16 | * @throws IllegalArgumentException if the value is inferior to 0 | ||
16 | */ | 17 | */ |
17 | public static int requireNonNegative(int value) { | 18 | public static int requireNonNegative(int value) { |
18 | if (value >= 0) { | 19 | if (value >= 0) { |
@@ -21,4 +22,5 @@ public final class ArgumentChecker { | |||
21 | throw new IllegalArgumentException(); | 22 | throw new IllegalArgumentException(); |
22 | } | 23 | } |
23 | } | 24 | } |
25 | |||
24 | } | 26 | } |
diff --git a/src/ch/epfl/xblast/PlayerID.java b/src/ch/epfl/xblast/PlayerID.java index bb77405..c2c5c58 100644 --- a/src/ch/epfl/xblast/PlayerID.java +++ b/src/ch/epfl/xblast/PlayerID.java | |||
@@ -7,8 +7,10 @@ package ch.epfl.xblast; | |||
7 | * @author Timothée FLOURE (257420) | 7 | * @author Timothée FLOURE (257420) |
8 | */ | 8 | */ |
9 | public enum PlayerID { | 9 | public enum PlayerID { |
10 | |||
10 | PLAYER_1, | 11 | PLAYER_1, |
11 | PLAYER_2, | 12 | PLAYER_2, |
12 | PLAYER_3, | 13 | PLAYER_3, |
13 | PLAYER_4 | 14 | PLAYER_4 |
15 | |||
14 | } | 16 | } |
diff --git a/src/ch/epfl/xblast/server/Bomb.java b/src/ch/epfl/xblast/server/Bomb.java index 4b89752..12e8888 100644 --- a/src/ch/epfl/xblast/server/Bomb.java +++ b/src/ch/epfl/xblast/server/Bomb.java | |||
@@ -1,14 +1,14 @@ | |||
1 | package ch.epfl.xblast.server; | 1 | package ch.epfl.xblast.server; |
2 | 2 | ||
3 | import ch.epfl.xblast.PlayerID; | ||
4 | import ch.epfl.xblast.Cell; | ||
5 | import ch.epfl.cs108.Sq; | 3 | import ch.epfl.cs108.Sq; |
6 | import ch.epfl.xblast.ArgumentChecker; | 4 | import ch.epfl.xblast.ArgumentChecker; |
5 | import ch.epfl.xblast.Cell; | ||
7 | import ch.epfl.xblast.Direction; | 6 | import ch.epfl.xblast.Direction; |
7 | import ch.epfl.xblast.PlayerID; | ||
8 | 8 | ||
9 | import java.util.Objects; | ||
10 | import java.util.List; | ||
11 | import java.util.ArrayList; | 9 | import java.util.ArrayList; |
10 | import java.util.List; | ||
11 | import java.util.Objects; | ||
12 | 12 | ||
13 | /** | 13 | /** |
14 | * A Bomb. | 14 | * A Bomb. |
@@ -17,6 +17,7 @@ import java.util.ArrayList; | |||
17 | * @author Timothée FLOURE (257420) | 17 | * @author Timothée FLOURE (257420) |
18 | */ | 18 | */ |
19 | public final class Bomb { | 19 | public final class Bomb { |
20 | |||
20 | private PlayerID ownerId; | 21 | private PlayerID ownerId; |
21 | private Cell position; | 22 | private Cell position; |
22 | private Sq<Integer> fuseLengths; | 23 | private Sq<Integer> fuseLengths; |
@@ -26,18 +27,20 @@ public final class Bomb { | |||
26 | * Generates one arm of explosion. | 27 | * Generates one arm of explosion. |
27 | */ | 28 | */ |
28 | private Sq<Sq<Cell>> explosionArmTowards(Direction dir) { | 29 | private Sq<Sq<Cell>> explosionArmTowards(Direction dir) { |
29 | return Sq.constant( Sq.iterate(position, position -> position.neighbor(dir)).limit(range)).limit(Ticks.EXPLOSION_TICKS); | 30 | return Sq |
31 | .constant(Sq.iterate(position, position -> position.neighbor(dir)).limit(range)) | ||
32 | .limit(Ticks.EXPLOSION_TICKS); | ||
30 | } | 33 | } |
31 | 34 | ||
32 | /** | 35 | /** |
33 | * Instantiates a new Bomb. | 36 | * Instantiates a new Bomb. |
34 | * | 37 | * |
35 | * @param ownerId id of the owner of the bomb | 38 | * @param ownerId id of the owner of the bomb |
36 | * @param position position of the bomb | 39 | * @param position position of the bomb |
37 | * @param fuseLengths length of the bomb's fuse | 40 | * @param fuseLengths length of the bomb's fuse |
38 | * @param range range of the bomb | 41 | * @param range range of the bomb |
39 | * @throws IllegalArgumentException if range is negative or fuseLenghts is empty | 42 | * @throws IllegalArgumentException if range is negative or fuseLenghts is empty |
40 | * @throws NullPointerException if ownerId, position or fuseLengths is null | 43 | * @throws NullPointerException if ownerId, position or fuseLengths is null |
41 | */ | 44 | */ |
42 | public Bomb(PlayerID ownerId, Cell position, Sq<Integer> fuseLengths, int range) { | 45 | public Bomb(PlayerID ownerId, Cell position, Sq<Integer> fuseLengths, int range) { |
43 | this.ownerId = Objects.requireNonNull(ownerId); | 46 | this.ownerId = Objects.requireNonNull(ownerId); |
@@ -53,15 +56,15 @@ public final class Bomb { | |||
53 | /** | 56 | /** |
54 | * Instantiates a new Bomb. | 57 | * Instantiates a new Bomb. |
55 | * | 58 | * |
56 | * @param ownerId id of the owner of the bomb | 59 | * @param ownerId id of the owner of the bomb |
57 | * @param position position of the bomb | 60 | * @param position position of the bomb |
58 | * @param fuseLength length of the bomb's fuse | 61 | * @param fuseLength length of the bomb's fuse |
59 | * @param range range of the bomb | 62 | * @param range range of the bomb |
60 | * @throws IllegalArgumentException if range or fuseLengths is negative | 63 | * @throws IllegalArgumentException if range or fuseLengths is negative |
61 | * @throws NullPointerException if ownerId, position or fuseLengths is null | 64 | * @throws NullPointerException if ownerId, position or fuseLengths is null |
62 | */ | 65 | */ |
63 | public Bomb(PlayerID ownerId, Cell position, int fuseLength, int range) { | 66 | public Bomb(PlayerID ownerId, Cell position, int fuseLength, int range) { |
64 | this(ownerId, position, Sq.iterate(fuseLength, fl -> fl - 1 ), range); | 67 | this(ownerId, position, Sq.iterate(fuseLength, fl -> fl - 1), range); |
65 | } | 68 | } |
66 | 69 | ||
67 | /** | 70 | /** |
@@ -109,4 +112,5 @@ public final class Bomb { | |||
109 | } | 112 | } |
110 | return explosion; | 113 | return explosion; |
111 | } | 114 | } |
115 | |||
112 | } | 116 | } |
diff --git a/src/ch/epfl/xblast/server/Player.java b/src/ch/epfl/xblast/server/Player.java index 0548125..7b5ac26 100644 --- a/src/ch/epfl/xblast/server/Player.java +++ b/src/ch/epfl/xblast/server/Player.java | |||
@@ -1,11 +1,7 @@ | |||
1 | package ch.epfl.xblast.server; | 1 | package ch.epfl.xblast.server; |
2 | 2 | ||
3 | import ch.epfl.xblast.ArgumentChecker; | ||
4 | import ch.epfl.xblast.Direction; | ||
5 | import ch.epfl.xblast.Cell; | ||
6 | import ch.epfl.xblast.SubCell; | ||
7 | import ch.epfl.xblast.PlayerID; | ||
8 | import ch.epfl.cs108.Sq; | 3 | import ch.epfl.cs108.Sq; |
4 | import ch.epfl.xblast.*; | ||
9 | 5 | ||
10 | import java.util.Objects; | 6 | import java.util.Objects; |
11 | 7 | ||
@@ -16,10 +12,12 @@ import java.util.Objects; | |||
16 | * @author Timothée FLOURE (257420) | 12 | * @author Timothée FLOURE (257420) |
17 | */ | 13 | */ |
18 | public final class Player { | 14 | public final class Player { |
15 | |||
19 | /** | 16 | /** |
20 | * The life state of a player. | 17 | * The life state of a player. |
21 | */ | 18 | */ |
22 | public static final class LifeState { | 19 | public static final class LifeState { |
20 | |||
23 | /** | 21 | /** |
24 | * Enum containing all the possible life states. | 22 | * Enum containing all the possible life states. |
25 | */ | 23 | */ |
@@ -65,13 +63,15 @@ public final class Player { | |||
65 | public boolean canMove() { | 63 | public boolean canMove() { |
66 | return (state() == State.INVULNERABLE || state() == State.VULNERABLE); | 64 | return (state() == State.INVULNERABLE || state() == State.VULNERABLE); |
67 | } | 65 | } |
66 | |||
68 | } | 67 | } |
69 | 68 | ||
70 | /** | 69 | /** |
71 | * The "directed" position of a player. | 70 | * The "directed" position of a player. |
72 | */ | 71 | */ |
73 | public static final class DirectedPosition { | 72 | public static final class DirectedPosition { |
74 | private final SubCell position; | 73 | |
74 | private final SubCell position; | ||
75 | private final Direction direction; | 75 | private final Direction direction; |
76 | 76 | ||
77 | /** | 77 | /** |
@@ -91,7 +91,7 @@ public final class Player { | |||
91 | /** | 91 | /** |
92 | * Instantiates a new DirectedPos | 92 | * Instantiates a new DirectedPos |
93 | * | 93 | * |
94 | * @param position the position of the player | 94 | * @param position the position of the player |
95 | * @param direction the direction of the player | 95 | * @param direction the direction of the player |
96 | * @throws IllegalArgumentException if position or direction is null | 96 | * @throws IllegalArgumentException if position or direction is null |
97 | */ | 97 | */ |
@@ -122,11 +122,12 @@ public final class Player { | |||
122 | } | 122 | } |
123 | 123 | ||
124 | /** | 124 | /** |
125 | * @return a new directed position with the previous position and the given direction | 125 | * @return a new directed position with the previous position and the given direction |
126 | */ | 126 | */ |
127 | public DirectedPosition withDirection(Direction newDirection) { | 127 | public DirectedPosition withDirection(Direction newDirection) { |
128 | return new DirectedPosition(position, newDirection); | 128 | return new DirectedPosition(position, newDirection); |
129 | } | 129 | } |
130 | |||
130 | } | 131 | } |
131 | 132 | ||
132 | /** | 133 | /** |
@@ -156,7 +157,7 @@ public final class Player { | |||
156 | LifeState.State.VULNERABLE | 157 | LifeState.State.VULNERABLE |
157 | ); | 158 | ); |
158 | 159 | ||
159 | return Sq.repeat(Ticks.PLAYER_INVULNERABLE_TICKS,invulnerability).concat(Sq.constant(vulnerability)); | 160 | return Sq.repeat(Ticks.PLAYER_INVULNERABLE_TICKS, invulnerability).con |