diff --git a/.feature-model b/.feature-model index c543b91..1e29a90 100644 --- a/.feature-model +++ b/.feature-model @@ -3,6 +3,8 @@ Snake_Game Tile Food Spawn + Poison + MildPoison Blank Snake Update diff --git a/src/graphics/.feature-to-folder b/src/graphics/.feature-to-folder new file mode 100644 index 0000000..00212dd --- /dev/null +++ b/src/graphics/.feature-to-folder @@ -0,0 +1 @@ +Update Controls \ No newline at end of file diff --git a/src/logic/DataOfSquare.java b/src/logic/DataOfSquare.java index 092a1c7..def1121 100644 --- a/src/logic/DataOfSquare.java +++ b/src/logic/DataOfSquare.java @@ -15,6 +15,8 @@ public DataOfSquare(int color) { //Lets add the color to the arrayList C.add(Color.darkGray);// &line[Tile::Snake] C.add(Color.BLUE); // &line[Food] + C.add(Color.RED); // &line[Poison] + C.add(Color.YELLOW); // &line[MildPoison] C.add(Color.white); // &line[Playing_Area] square = new SquarePanel(C.get(color)); } diff --git a/src/logic/SquareToLightUp.java b/src/logic/SquareToLightUp.java index 5d73498..a860cd6 100644 --- a/src/logic/SquareToLightUp.java +++ b/src/logic/SquareToLightUp.java @@ -3,5 +3,7 @@ public enum SquareToLightUp { SNAKE, // &line[Tile::Snake] FOOD, // &line[Food] + POISON, // &line[Poison] + MILD_POISON, // &line[MildPoison] BACK_GROUND // &line[Blank] } diff --git a/src/logic/ThreadsController.java b/src/logic/ThreadsController.java index 416ca7d..42950b0 100644 --- a/src/logic/ThreadsController.java +++ b/src/logic/ThreadsController.java @@ -9,12 +9,13 @@ public class ThreadsController extends Thread { private final ArrayList> Squares; private final Tuple headSnakePos; - private int sizeSnake = 3; + private int sizeSnake = 4; private final long delay = 75; public static Direction directionSnake; - private final ArrayList positions = new ArrayList<>(); private Tuple foodPosition; // &line[Food] + private Tuple poisonPosition; // &line[Poison] + private Tuple mildPoisonPosition; // &line[MildPoison] //Constructor of ControllerThread public ThreadsController(Tuple positionDepart) { @@ -34,6 +35,22 @@ public ThreadsController(Tuple positionDepart) { foodPosition = new Tuple(Window.getWindowHeight() - 1, Window.getWindowWidth() - 1); spawnFood(foodPosition);//&line[Spawn] // &end[Food] + + // &begin[Poison] + poisonPosition = new Tuple(Window.getWindowHeight() - 3, Window.getWindowWidth() - 3); + spawnFood(poisonPosition); // &line[Spawn] + // &end[Poison] + + // &begin[MildPoison] + poisonPosition = new Tuple(Window.getWindowHeight() - 5, Window.getWindowWidth() - 5); + spawnFood(poisonPosition); // &line[Spawn] + // &end[MildPoison] + + // &begin[MildPoison] + // test functionality + //code + // &end[MildPoison] + } //Important part : @@ -69,6 +86,7 @@ private void checkCollision() { } } // &end[Collision] + // &begin[Food] boolean eatingFood = posCritique.getX() == foodPosition.y && posCritique.getY() == foodPosition.x; if (eatingFood) { @@ -79,6 +97,28 @@ private void checkCollision() { spawnFood(foodPosition); // &line[Spawn] } // &end[Food] + + + // &begin[Poison] + boolean eatingPoison = posCritique.getX() == poisonPosition.y && posCritique.getY() == poisonPosition.x; + if (eatingPoison) { + System.out.println("Ouch"); + sizeSnake = sizeSnake - 3; + poisonPosition = getTileNotInSnake(); + + spawnPoison(poisonPosition); // &line[Spawn] + } + // &end[Poison] + + // &begin[MildPoison] + boolean eatingMildPoison = posCritique.getX() == mildPoisonPosition.y && posCritique.getY() == mildPoisonPosition.x; + if (eatingMildPoison) { + System.out.println("Mild Poison eaten"); + sizeSnake = sizeSnake - 1; + mildPoisonPosition = getTileNotInSnake(); + spawnMildPoison(mildPoisonPosition); // &line[Spawn] + } + // &end[MildPoison] } //Stops The Game @@ -91,13 +131,21 @@ private void stopTheGame(String s) { } // &end[Collision] + //Put food in a position and displays it // &begin[Spawn] private void spawnFood(Tuple foodPositionIn) { Squares.get(foodPositionIn.x).get(foodPositionIn.y).lightMeUp(SquareToLightUp.FOOD); } + private void spawnPoison(Tuple poisonPositionIn) { + Squares.get(poisonPositionIn.x).get(poisonPositionIn.y).lightMeUp(SquareToLightUp.POISON); + } + private void spawnMildPoison(Tuple mildPoisonPositionIn) { + Squares.get(mildPoisonPositionIn.x).get(mildPoisonPositionIn.y).lightMeUp(SquareToLightUp.MILD_POISON); + } // &end[Spawn] + // &begin[Blank] //return a position not occupied by the snake private Tuple getTileNotInSnake() { @@ -194,3 +242,4 @@ private void deleteTail() { // &end[Tail] } +