Skip to content

Commit 2cc92bc

Browse files
committed
zetaCiv implemented
1 parent 2f5c9c7 commit 2cc92bc

3 files changed

Lines changed: 58 additions & 1 deletion

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,31 @@
11
package hotciv.helpers.winnerManagers;
22

3+
import hotciv.framework.Player;
4+
import hotciv.framework.Position;
35
import hotciv.helper_Interfaces.winnerManager;
6+
import hotciv.standard.GameImpl;
7+
48
public class zetaWinnerManager implements winnerManager{
9+
@Override
10+
public Player getWinner(GameImpl game) {
11+
if (game.getRoundNumber() <= 20) {
12+
Position city1 = new Position(1, 1);
13+
Position city2 = new Position(1, 4);
14+
if ((game.getCityAt(city1).getOwner() == game.getCityAt(city2).getOwner())) {
15+
return game.getCityAt(city1).getOwner();
16+
}
17+
return null;
18+
}
19+
20+
else{
21+
int[] numAttacks = game.getNumberOfSuccessfulAttacks();
22+
for (int i = 0; i < game.getNumberOfPlayers(); i++){
23+
if (numAttacks[i] >= 3){
24+
return Player.values()[i];
25+
}
26+
}
27+
}
28+
return null;
29+
}
530
}
31+

src/main/java/hotciv/standard/GameImpl.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public class GameImpl implements Game {
5353
private int age;
5454
private GameType version;
5555
private int[] numberSuccessfulAttacks;
56+
private int roundNumber;
5657

5758
private ManagerFactory manager_factory;
5859

@@ -238,6 +239,9 @@ public void incrementNumberOfSuccessfulAttacks(Position p) {
238239
numberSuccessfulAttacks[getUnitOwner(p).ordinal()]++;
239240
}
240241

242+
public int getRoundNumber(){
243+
return roundNumber;
244+
}
241245

242246
//---------------------Destructors-----------------------------//
243247

@@ -295,6 +299,7 @@ public void progressRounds(int n) {
295299
for (int i = 0; i < (n * numberOfPlayers); i++) {
296300
this.endOfTurn();
297301
}
302+
roundNumber = n + 1;
298303
}
299304

300305
public attackManager getAttack_manager(){

src/test/java/hotciv/standard/zetaCiv_tests.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,43 @@
55
import org.junit.Before;
66
import org.junit.Test;
77

8+
import static hotciv.framework.GameConstants.ARCHER;
89
import static org.hamcrest.CoreMatchers.is;
910
import static org.junit.Assert.assertNull;
1011
import static org.junit.Assert.assertThat;
1112

1213
public class zetaCiv_tests {
13-
private Game game;
14+
private GameImpl game;
1415
/**
1516
* Fixture for zetaCiv testing.
1617
*/
1718
@Before
1819
public void setUp() {
1920
game = new GameImpl(GameType.zetaCiv, 2);
2021
}
22+
23+
@Test
24+
public void zetaCiv_FirstPlayerThatConquersWorldWins() {
25+
Position city1 = new Position(1, 1);
26+
Position city2 = new Position(1, 4);
27+
28+
game.setCityAt(city1, Player.BLUE);
29+
game.setCityAt(city2, Player.BLUE);
30+
31+
assertThat(game.getCityAt(city1).getOwner(), is(Player.BLUE));
32+
assertThat(game.getWinner(), is(Player.BLUE)); // Blue owns both cities and should win
33+
}
34+
@Test
35+
public void winnerAfter20Rounds(){
36+
game.progressRounds(20);
37+
38+
Position unit1 = new Position(1, 1);
39+
game.createUnitAt(unit1, ARCHER, Player.RED);
40+
game.incrementNumberOfSuccessfulAttacks(unit1);
41+
assertNull(game.getWinner());
42+
game.incrementNumberOfSuccessfulAttacks(unit1);
43+
assertNull(game.getWinner());
44+
game.incrementNumberOfSuccessfulAttacks(unit1);
45+
assertThat(game.getWinner(), is(Player.RED));
46+
}
2147
}

0 commit comments

Comments
 (0)