public void getAvaliablePlacementsFroShipReturns2PlacementsForShipOfLenght3InHorizontalGrid1x4() { Grid g = new Grid(1, 4); var result = g.GetAvailablePlacements(3); Assert.AreEqual(2, result.Count()); Assert.AreEqual(3, result.First().Count()); Assert.AreEqual(3, result.Last().Count()); }
public void getAvaliablePlacementsFroShipReturns3PlacementsForShipOfLenght2InHorizontalGrid1x6AfterSquareIsElimianted() { Grid g = new Grid(1, 6); g.eliminateSquares(new List <Square> { new Square(0, 2) }); var result = g.GetAvailablePlacements(2); Assert.AreEqual(3, result.Count()); }
public void getAvaliablePlacementsFroShipReturns3PlacementsForShipOfLenght3InVerticalGrid5x1() { Grid g = new Grid(5, 1); var result = g.GetAvailablePlacements(3); Assert.AreEqual(3, result.Count()); foreach (var seq in result) { Assert.AreEqual(3, seq.Count()); } }
private int CreateGrid() { int trigger = 1; int shipLength = 5; var availableSquares = gr.GetAvailablePlacements(shipLength); //dohvaćanje mogućih pozicija na gridu za ship duljine 5 if (ChooseRandomShipPositions_AddToFleet_Eliminate(availableSquares) == 404) { return(404); } ; //uzima random poziciju od mogućih pozicija, dodaje u flotu, te eliminira iz grida for (int i = 0; i < 9; ++i) { if (trigger < 3) { shipLength = 4; } if (trigger < 6 && trigger >= 3) { shipLength = 3; } if (trigger <= 10 && trigger >= 6) { shipLength = 2; } availableSquares = gr.GetAvailablePlacements(shipLength); if (ChooseRandomShipPositions_AddToFleet_Eliminate(availableSquares) == 404) { return(404); } ; ++trigger; } return(1); }
private int generateComputerGrid() { int trigger = 1; int shipLength = 5; var availableSquares = computerGrid.GetAvailablePlacements(shipLength); if (ChooseRandomShipPositions_AddToFleet_Eliminate(availableSquares) == 404) { return(404); } ; for (int i = 0; i < 9; ++i) { if (trigger < 3) { shipLength = 4; } if (trigger < 6 && trigger >= 3) { shipLength = 3; } if (trigger <= 10 && trigger >= 6) { shipLength = 2; } availableSquares = computerGrid.GetAvailablePlacements(shipLength); if (ChooseRandomShipPositions_AddToFleet_Eliminate(availableSquares) == 404) { return(404); } ; ++trigger; } return(1); }
public void getAvaliablePlacementsFroShipReturns2PlacementsForShipOfLenght2InVerticalGrid5x1AfterSquareIsElimianted() { Grid g = new Grid(5, 1); g.eliminateSquares(new List <Square> { new Square(1, 0) }); var result = g.GetAvailablePlacements(2); Assert.AreEqual(2, result.Count()); foreach (var seq in result) { Assert.AreEqual(2, seq.Count()); } }
private fleet placeShips(IEnumerable <int> shipLengths) { List <int> lengths = new List <int>(shipLengths.OrderByDescending(x => x)); Grid grid = new Grid(rows, columns); //squareTerminator terminator = new squareTerminator(rows,columns); fleet Fleet = new fleet(); while (lengths.Count() > 0) { var placements = grid.GetAvailablePlacements(lengths[0]); if (placements.Count() == 0) { return(null); } lengths.RemoveAt(0); int index = rand.Next(0, placements.Count()); Fleet.addShip(placements.ElementAt(index)); var toElimiante = terminator.ToEliminate(placements.ElementAt(index)); grid.eliminateSquares(toElimiante); } return(Fleet); }
private void playersButtonGridClickHandler(Button clickedButton) // event handler for buttons in pre game state (player choosing ships positions) { int x = 0, y = 0; foreach (var list in playerButtons) { if (list.IndexOf(clickedButton) != -1) // get index of clicked button { x = playerButtons.IndexOf(list); y = list.IndexOf(clickedButton); } } if (shipHead == null) // if button that's clicked is first square of ship { clickedButton.BackColor = shipPlacedOnGridColor; getCurrentPlacingShipLength(); shipHead = new modelNmspc.Square(x, y); currentShipMaking = new List <modelNmspc.Square> { shipHead }; List <modelNmspc.Square> s = checkForAvailableSquaresAfterSquareIsChosen(new modelNmspc.Square(x, y)); if (s.Count() == 0) { clickedButton.BackColor = Color.Green; shipHead = null; currentShipMaking.Clear(); } else { ChangeColorOfAvailableSquares(s); } } else { if (currentShipMaking[0].row < x) { for (int i = 1; i < currentPlacingShipLength; i++) { currentShipMaking.Add(new modelNmspc.Square(currentShipMaking[0].row + i, currentShipMaking[0].column)); } foreach (var s in currentShipMaking) { playerButtons[s.row][s.column].BackColor = shipPlacedOnGridColor; playerButtons[s.row][s.column].Enabled = false; } } if (currentShipMaking[0].row > x) { for (int i = 1; i < currentPlacingShipLength; i++) { currentShipMaking.Add(new modelNmspc.Square(currentShipMaking[0].row - i, currentShipMaking[0].column)); } foreach (var s in currentShipMaking) { playerButtons[s.row][s.column].BackColor = shipPlacedOnGridColor; playerButtons[s.row][s.column].Enabled = false; } currentShipMaking.Reverse(); } if (currentShipMaking[0].column < y) { for (int i = 1; i < currentPlacingShipLength; i++) { currentShipMaking.Add(new modelNmspc.Square(currentShipMaking[0].row, currentShipMaking[0].column + i)); } foreach (var s in currentShipMaking) { playerButtons[s.row][s.column].BackColor = shipPlacedOnGridColor; playerButtons[s.row][s.column].Enabled = false; } } if (currentShipMaking[0].column > y) { for (int i = 1; i < currentPlacingShipLength; i++) { currentShipMaking.Add(new modelNmspc.Square(currentShipMaking[0].row, currentShipMaking[0].column - i)); } foreach (var s in currentShipMaking) { playerButtons[s.row][s.column].BackColor = shipPlacedOnGridColor; playerButtons[s.row][s.column].Enabled = false; } currentShipMaking.Reverse(); } shipHead = null; playerFleet.addShip(currentShipMaking); var toElim = terminator.ToEliminate(currentShipMaking); playerGrid.eliminateSquares(toElim); var avaSquares = playerGrid.GetAvailablePlacements(1); foreach (var list in playerButtons) { foreach (var button in list) { if (button.BackColor == Color.Green) { button.BackColor = Color.Gray; button.Enabled = false; } } } foreach (var item in avaSquares) { foreach (var square in item) { playerButtons[square.row][square.column].BackColor = Color.Green; playerButtons[square.row][square.column].Enabled = true; } } currentShipMaking = null; changeLabel(); if (playerFleet.getNumberOfShips() == 10) { button_WOC1.Enabled = true; button_WOC1.ButtonColor = Color.DarkRed; } } }