diff --git a/snake&ladder/models/Board.java b/snake&ladder/models/Board.java new file mode 100644 index 0000000..813e8e7 --- /dev/null +++ b/snake&ladder/models/Board.java @@ -0,0 +1,85 @@ +package models; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +public class Board { + + private int rows; + private int columns; + private int[][] board; + private final List ladders; + private final List snakes; + HashMap ladderFootPositions; + HashMap snakeHeadPosition; + List players; + + public Board(int rows, int columns, int noOfladders, int noOfSnakes) + { + this.rows=rows; + this.columns=columns; + board = new int[rows][columns]; + ladders = new ArrayList<>(); + snakes = new ArrayList<>(); + players = new ArrayList<>(); + ladderFootPositions = new HashMap<>(); + snakeHeadPosition = new HashMap<>(); + } + + public void addLadder(Ladder ladder) + { + ladders.add(ladder); + ladderFootPositions.put(ladder.getLadderFootPosition(), ladder); + } + + public void addSnake(Snake snake) + { + snakes.add(snake); + snakeHeadPosition.put(snake.getSnakeHeadPosition(), snake); + } + + public void addPlayer(Player player) + { + players.add(player); + } + + public int getRows() { + return rows; + } + + public int getColumns() { + return columns; + } + + public List getPlayers() { + return players; + } + + public void setPlayers(List players) { + this.players = players; + } + + public int getNumberOfPlayers() + { + return this.players.size(); + } + + public HashMap getLadderFootPositions() { + return ladderFootPositions; + } + + public void setLadderFootPositions(HashMap ladderFootPositions) { + this.ladderFootPositions = ladderFootPositions; + } + + public HashMap getSnakeHeadPosition() { + return snakeHeadPosition; + } + + public void setSnakeHeadPosition(HashMap snakeHeadPosition) { + this.snakeHeadPosition = snakeHeadPosition; + } + + +} diff --git a/snake&ladder/models/Dice.java b/snake&ladder/models/Dice.java new file mode 100644 index 0000000..96f837c --- /dev/null +++ b/snake&ladder/models/Dice.java @@ -0,0 +1,28 @@ +package models; + +public class Dice { + + int firstNumber=1; + int lastNumber; + + public Dice(int lastNumber) + { + this.lastNumber = lastNumber; + } + + public int getLastNumber() { + return lastNumber; + } + + public void setLastNumber(int lastNumber) { + this.lastNumber = lastNumber; + } + + public int getFirstNumber() { + return firstNumber; + } + + + + +} diff --git a/snake&ladder/models/Ladder.java b/snake&ladder/models/Ladder.java new file mode 100644 index 0000000..e30a899 --- /dev/null +++ b/snake&ladder/models/Ladder.java @@ -0,0 +1,53 @@ +package models; + +public class Ladder { + + int id; + int ladderFootPosition; + int ladderTopPosition; + Location ladderFoot; + Location ladderTop; + + public Ladder(int startPositionNumber, int endPositionNumber, + int boardRows, int boardColumns) + { + this.ladderFootPosition = startPositionNumber; + this.ladderTopPosition = endPositionNumber; + ladderFoot = new Location(startPositionNumber, boardRows, boardColumns); + ladderTop = new Location(endPositionNumber, boardRows, boardColumns); + } + + public Location getLadderFoot() { + return ladderFoot; + } + + public void setLadderFoot(Location ladderFoot) { + this.ladderFoot = ladderFoot; + } + + public Location getLadderHead() { + return ladderTop; + } + + public void setLadderHead(Location ladderHead) { + this.ladderTop = ladderHead; + } + + public int getLadderFootPosition() { + return ladderFootPosition; + } + + public void setLadderFootPosition(int ladderFootPosition) { + this.ladderFootPosition = ladderFootPosition; + } + + public int getLadderTopPosition() { + return ladderTopPosition; + } + + public void setLadderTopPosition(int ladderTopPosition) { + this.ladderTopPosition = ladderTopPosition; + } + + +} diff --git a/snake&ladder/models/Location.java b/snake&ladder/models/Location.java new file mode 100644 index 0000000..82e7720 --- /dev/null +++ b/snake&ladder/models/Location.java @@ -0,0 +1,30 @@ +package models; + +public class Location { + + int row; + int column; + + Location(int positionNumber, int boardRows, int boardColumns) + { + this.row = (positionNumber-1)/boardColumns; + this.column = (positionNumber - 1)%boardColumns; + } + + public int getRow() { + return row; + } + + public void setRow(int row) { + this.row = row; + } + + public int getColumn() { + return column; + } + + public void setColumn(int column) { + this.column = column; + } + +} diff --git a/snake&ladder/models/Player.java b/snake&ladder/models/Player.java new file mode 100644 index 0000000..5ab2334 --- /dev/null +++ b/snake&ladder/models/Player.java @@ -0,0 +1,31 @@ +package models; + +public class Player { + String name; + Location location; + int positionNumber; + + public Player(String name, int positionNumber, int boardRows, int boardColumns) + { + this.name = name; + this.positionNumber = positionNumber; + this.location = new Location(positionNumber, boardRows, boardColumns); + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + public int getPositionNumber() { + return positionNumber; + } + + public void setPositionNumber(int positionNumber) { + this.positionNumber = positionNumber; + } + + +} diff --git a/snake&ladder/models/Snake.java b/snake&ladder/models/Snake.java new file mode 100644 index 0000000..c096a7c --- /dev/null +++ b/snake&ladder/models/Snake.java @@ -0,0 +1,34 @@ +package models; + +public class Snake { + + int id; + int snakeHeadPosition; + int snakeTailPosition; + Location tail; + Location head; + + public Snake(int headPosition, int tailPosition, int boardRows, int boardColumns) + { + this.head = new Location(headPosition, boardRows, boardColumns); + this.tail = new Location(tailPosition, boardRows, boardColumns); + } + + public int getSnakeHeadPosition() { + return snakeHeadPosition; + } + + public void setSnakeHeadPosition(int snakeHeadPosition) { + this.snakeHeadPosition = snakeHeadPosition; + } + + public int getSnakeTailPosition() { + return snakeTailPosition; + } + + public void setSnakeTailPosition(int snakeTailPosition) { + this.snakeTailPosition = snakeTailPosition; + } + + +} diff --git a/snake&ladder/module-info.java b/snake&ladder/module-info.java new file mode 100644 index 0000000..4f29e49 --- /dev/null +++ b/snake&ladder/module-info.java @@ -0,0 +1,2 @@ +module design { +} diff --git a/snake&ladder/services/DiceRoll.java b/snake&ladder/services/DiceRoll.java new file mode 100644 index 0000000..1e90885 --- /dev/null +++ b/snake&ladder/services/DiceRoll.java @@ -0,0 +1,16 @@ +package services; + +import models.Dice; + +public class DiceRoll { + + Dice dice; + DiceRoll(int diceSize) + { + this.dice = new Dice(diceSize); + } + int returnMoves() + { + return (int) ((Math.random() * ((this.dice.getLastNumber() - this.dice.getFirstNumber()) + 1)) + this.dice.getFirstNumber()); + } +} diff --git a/snake&ladder/services/Driver.java b/snake&ladder/services/Driver.java new file mode 100644 index 0000000..27b6a50 --- /dev/null +++ b/snake&ladder/services/Driver.java @@ -0,0 +1,51 @@ +package services; + +import java.util.Scanner; + +public class Driver { + + public static void main(String[] args) { + Scanner s=new Scanner(System.in); + /* + * First Take all inputs + */ + int noOfLadders=0, noOfSnakes = 0, noOfPlayers=0; + int ladders[][]; + int snakes[][]; + String playerNames[]; + + noOfLadders = s.nextInt(); + ladders = new int[noOfLadders][noOfLadders>0?2:0]; + for(int idx=0;idx0?2:0]; + for(int idx=0;idx