From 61eb05d66a805c03d8d9a30a3cb652b9f7560262 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B8rn=20Lunde=20Jensen?= Date: Thu, 20 Feb 2020 13:35:40 +0100 Subject: [PATCH] Adds a Grid class and GridTest class --- .../inf112/fiasko/roborally/objects/Grid.java | 71 +++++++++++++++++++ .../IGrid.java | 2 +- .../inf112/fiasko/roborally/GridTest.java | 50 +++++++++++++ 3 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 src/main/java/inf112/fiasko/roborally/objects/Grid.java rename src/main/java/inf112/fiasko/roborally/{element_properties => objects}/IGrid.java (94%) create mode 100644 src/test/java/inf112/fiasko/roborally/GridTest.java diff --git a/src/main/java/inf112/fiasko/roborally/objects/Grid.java b/src/main/java/inf112/fiasko/roborally/objects/Grid.java new file mode 100644 index 0000000..c72a8e0 --- /dev/null +++ b/src/main/java/inf112/fiasko/roborally/objects/Grid.java @@ -0,0 +1,71 @@ +package inf112.fiasko.roborally.objects; + +import java.util.ArrayList; +import java.util.List; + +public class Grid implements IGrid { + + private int height; + private int width; + private List> grid = new ArrayList<>(); + + /** + * Initializes a empty grid + * @param height sets the height of the grid + * @param width sets the width of the grid + */ + public Grid(int height, int width) { + this.height = height; + this.width = width; + for(int y = 0; y < height; y++) { + ArrayList row = new ArrayList<>(); + for(int x = 0; x < width; x++) { + row.add(null); + } + this.grid.add(row); + } + } + + /** + * Initializes a grid filled with standard tiles. + * @param height sets the height of the grid + * @param width sets the width of the grid + * @param tile gives the TileType the grid is to be filled with + */ + public Grid(int height, int width, K tile) { + this.height = height; + this.width = width; + for(int y = 0; y < height; y++) { + ArrayList row = new ArrayList<>(); + for(int x = 0; x < width; x++) { + row.add(tile); + } + this.grid.add(row); + } + } + + @Override + public int getWidth() { + return width; + } + + @Override + public int getHeight() { + return height; + } + + @Override + public K getElement(int x, int y) throws IllegalArgumentException { + if(x >= 0 && x <= width && y >= 0 && y <= height) { + return grid.get(y).get(x); + } + throw new IllegalArgumentException(); + } + + @Override + public void setElement(int x, int y, K element) { + if(x >= 0 && x <= width && y >= 0 && y <= height) { + grid.get(y).set(x, element); + } + } +} diff --git a/src/main/java/inf112/fiasko/roborally/element_properties/IGrid.java b/src/main/java/inf112/fiasko/roborally/objects/IGrid.java similarity index 94% rename from src/main/java/inf112/fiasko/roborally/element_properties/IGrid.java rename to src/main/java/inf112/fiasko/roborally/objects/IGrid.java index 29f0a4c..d509c66 100644 --- a/src/main/java/inf112/fiasko/roborally/element_properties/IGrid.java +++ b/src/main/java/inf112/fiasko/roborally/objects/IGrid.java @@ -1,4 +1,4 @@ -package inf112.fiasko.roborally.element_properties; +package inf112.fiasko.roborally.objects; /** * This Interface describes a grid diff --git a/src/test/java/inf112/fiasko/roborally/GridTest.java b/src/test/java/inf112/fiasko/roborally/GridTest.java new file mode 100644 index 0000000..f394fc1 --- /dev/null +++ b/src/test/java/inf112/fiasko/roborally/GridTest.java @@ -0,0 +1,50 @@ +package inf112.fiasko.roborally; + +import inf112.fiasko.roborally.element_properties.TileType; +import inf112.fiasko.roborally.objects.Grid; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class GridTest { + private Grid grid; + private Grid grid2; + + @Before + public void setUp() { + grid = new Grid<>(7, 4); + grid2 = new Grid<>(5,8, TileType.TILE); + } + + @Test + public void getWidthFromGrid() { + assertEquals(4, grid.getWidth()); + } + + @Test + public void getWidthFromGrid2() { + assertEquals(8, grid2.getWidth()); + } + + @Test + public void getHeightFromGrid() { + assertEquals(7,grid.getHeight()); + } + + @Test + public void getHeightFromGrid2() { + assertEquals(5,grid2.getHeight()); + } + + @Test + public void getElementFromGrid2() { + assertEquals(TileType.TILE, grid2.getElement(5,3)); + } + + @Test + public void setElementInGrid2() { + grid2.setElement(2,1, TileType.HOLE); + assertEquals(TileType.HOLE, grid2.getElement(2,1)); + } +} \ No newline at end of file