Skip to content

Commit

Permalink
Merge branch 'star-battle' of https://github.com/Bram-Hub/LEGUP into …
Browse files Browse the repository at this point in the history
…star-battle
  • Loading branch information
sarah-min committed Apr 5, 2024
2 parents c789e5b + ee074b1 commit 81179e0
Show file tree
Hide file tree
Showing 10 changed files with 183 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public BlackoutDirectRule() {
super("STBL-BASC-0001",
"Blackout",
"If a row, column, or region has enough stars, its unknown spaces are black.",
"INSERT IMAGE NAME HERE");
"edu/rpi/legup/images/starbattle/rules/BlackOutDirectRule.png");
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public ClashingOrbitContradictionRule() {
super("STBL-CONT-0003",
"Clashing Orbit",
"No two stars can be adjacent to each other.",
"INSERT IMAGE NAME HERE");
"edu/rpi/legup/images/starbattle/contradictions/ClashingOrbitContradictionRule.png");
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public FinishWithStarsDirectRule() {
super("STBL-BASC-0004",
"Finish With Stars",
"Unknown spaces must be stars if there are just enough in a row, column, or region to satisfy the puzzle number.",
"INSERT IMAGE NAME HERE");
"edu/rpi/legup/images/starbattle/rules/FinishWithStarDirectRule.png");
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public SurroundStarDirectRule() {
super("STBL-BASC-0009",
"Surround Star",
"Any space adjacent to a star must be black.",
"INSERT IMAGE NAME HERE");
"edu/rpi/legup/images/starbattle/rules/SurroundStar.png");
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public TooFewStarsContradictionRule() {
super("STBL-CONT-0002",
"Too Few Stars",
"There are too few stars in this region/row/column and there are not enough places to put the remaining stars.",
"INSERT IMAGE NAME HERE");
"edu/rpi/legup/images/starbattle/contradictions/TooFewStarsContradictionRule.png");
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public TooManyStarsContradictionRule() {
super("STBL-CONT-0001",
"Too Many Stars",
"There are too many stars in this region/row/column.",
"INSERT IMAGE NAME HERE");
"edu/rpi/legup/images/starbattle/contradictions/TooManyStarsContradictionRule.png");
}

/**
Expand Down
69 changes: 69 additions & 0 deletions src/test/java/puzzles/starbattle/rules/BlackoutDirectRuleTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package puzzles.starbattle.rules;

import edu.rpi.legup.puzzle.nurikabe.Nurikabe;
import edu.rpi.legup.puzzle.nurikabe.NurikabeBoard;
import edu.rpi.legup.puzzle.nurikabe.NurikabeCell;
import edu.rpi.legup.puzzle.nurikabe.NurikabeType;
import legup.MockGameBoardFacade;
import legup.TestUtilities;
import edu.rpi.legup.model.tree.TreeNode;
import edu.rpi.legup.model.tree.TreeTransition;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

import edu.rpi.legup.puzzle.starbattle.StarBattle;
import edu.rpi.legup.puzzle.starbattle.StarBattleBoard;
import edu.rpi.legup.puzzle.starbattle.StarBattleCell;
import edu.rpi.legup.puzzle.starbattle.StarBattleCellType;
import edu.rpi.legup.puzzle.starbattle.rules.BlackoutDirectRule;
import edu.rpi.legup.save.InvalidFileFormatException;

import java.awt.*;

public class BlackoutDirectRuleTest {

private static final BlackoutDirectRule RULE = new BlackoutDirectRule();
private static StarBattle starbattle;

@BeforeClass
public static void setUp() {
MockGameBoardFacade.getInstance();
starbattle = new StarBattle();
}

@Test
public void BlackoutDirectRuleTest_ColumnBlackout() throws InvalidFileFormatException {
TestUtilities.importTestBoard("puzzles/starbattle/rules/BlackoutDirectRule/ColumnBlackout", starbattle);
TreeNode rootNode = starbattle.getTree().getRootNode();
TreeTransition transition = rootNode.getChildren().get(0);
transition.setRule(RULE);

StarBattleBoard board = (StarBattleBoard) transition.getBoard();

StarBattleCell cell1 = board.getCell(1, 1);
cell1.setData(StarBattleCellType.BLACK.value);
StarBattleCell cell2 = board.getCell(1, 2);
cell2.setData(StarBattleCellType.BLACK.value);
StarBattleCell cell3 = board.getCell(1, 3);
cell3.setData(StarBattleCellType.BLACK.value);

board.addModifiedData(cell1);
board.addModifiedData(cell2);
board.addModifiedData(cell3);

Assert.assertNull(RULE.checkRule(transition));

for (int i = 0; i < board.getHeight(); i++) {
for (int k = 0; k < board.getWidth(); k++) {
Point point = new Point(k, i);
if (point.equals(cell1.getLocation()) || point.equals(cell2.getLocation()) || point.equals(cell3.getLocation())) {
Assert.assertNull(RULE.checkRuleAt(transition, board.getCell(k, i)));
}
else {
Assert.assertNotNull(RULE.checkRuleAt(transition, board.getCell(k, i)));
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<Legup>
<puzzle name="Star Battle">
<board size="4" puzzle_num="1">
<region>
<cells>
<cell value="0" x="0" y="2">
<cell value="0" x="1" y="2">
<cell value="0" x="0" y="3">
<cell value="0" x="1" y="3">
</cells>
</region>
<region>
<cells>
<cell value="0" x="2" y="2">
<cell value="0" x="3" y="2">
<cell value="0" x="2" y="3">
<cell value="0" x="3" y="3">
</cells>
</region>
<region>
<cells>
<cell value="0" x="0" y="0">
<cell value="-2" x="1" y="0">
<cell value="0" x="0" y="1">
<cell value="0" x="1" y="1">
</cells>
</region>
<cells>
<cell value="0" x="2" y="0">
<cell value="0" x="3" y="0">
<cell value="0" x="2" y="1">
<cell value="0" x="3" y="1">
</cells>
</board>
</puzzle>
</Legup>
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<Legup>
<puzzle name="Star Battle">
<board size="4" puzzle_num="1">
<region>
<cells>
<cell value="0" x="0" y="2">
<cell value="0" x="1" y="2">
<cell value="0" x="0" y="3">
<cell value="0" x="1" y="3">
</cells>
</region>
<region>
<cells>
<cell value="0" x="2" y="2">
<cell value="0" x="3" y="2">
<cell value="0" x="2" y="3">
<cell value="0" x="3" y="3">
</cells>
</region>
<region>
<cells>
<cell value="0" x="0" y="0">
<cell value="-2" x="1" y="0">
<cell value="0" x="0" y="1">
<cell value="0" x="1" y="1">
</cells>
</region>
<cells>
<cell value="0" x="2" y="0">
<cell value="0" x="3" y="0">
<cell value="0" x="2" y="1">
<cell value="0" x="3" y="1">
</cells>
</board>
</puzzle>
</Legup>
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<Legup>
<puzzle name="Star Battle">
<board size="4" puzzle_num="1">
<region>
<cells>
<cell value="0" x="0" y="2">
<cell value="0" x="1" y="2">
<cell value="0" x="0" y="3">
<cell value="0" x="1" y="3">
</cells>
</region>
<region>
<cells>
<cell value="0" x="2" y="2">
<cell value="0" x="3" y="2">
<cell value="0" x="2" y="3">
<cell value="0" x="3" y="3">
</cells>
</region>
<region>
<cells>
<cell value="0" x="0" y="0">
<cell value="-2" x="1" y="0">
<cell value="0" x="0" y="1">
<cell value="0" x="1" y="1">
</cells>
</region>
<cells>
<cell value="0" x="2" y="0">
<cell value="0" x="3" y="0">
<cell value="0" x="2" y="1">
<cell value="0" x="3" y="1">
</cells>
</board>
</puzzle>
</Legup>

0 comments on commit 81179e0

Please sign in to comment.