/// <summary> /// Handle the 4 types of tile (Empty, Wall, Initial and Final) /// </summary> /// <param name="btnClicked"></param> private void ChangebuttonState(TileButton btnClicked) { //If empty can set as Wall if (btnClicked.IsEmptyTitle()) { //Set as wall btnClicked.BackgroundImage = TileBlock; btnClicked.SetAsWallTitle(); } else if (btnClicked.IsWallTile && btnInitial == null) { //Check if exist a previous Initial Tile if (btnInitial != null) { btnInitial.BackgroundImage = null; btnInitial.SetAsEmptyTitle(); } //Set as Initial Tile btnClicked.BackgroundImage = InitialTile; btnClicked.SetAsInitialTitle(); btnInitial = btnClicked; } else if (btnClicked.IsInitialTile) { btnClicked.SetAsEmptyTitle(); btnInitial = null; } else if (btnClicked.IsFinalTile) { btnClicked.SetAsEmptyTitle(); btnFinal = null; } else if (btnClicked.IsWallTile && btnFinal == null) { //Check if exist a previous Final Tile if (btnFinal != null) { btnFinal.BackgroundImage = null; btnFinal.SetAsEmptyTitle(); } btnClicked.BackgroundImage = EndTile; btnClicked.SetAsFinalTitle(); btnFinal = btnClicked; } else { btnClicked.SetAsEmptyTitle(); } }
/// <summary> /// Generate walls randomly, not checks if the path can be solved /// </summary> private void GenerateWalls() { int numOfWalls = TotalNumOfButtons / 3; int wallCount = 0; do { int wallIndex = randomize.Next(0, TotalNumOfButtons); TileButton btnWall = (TileButton)mainPanel.Controls[wallIndex]; if (btnWall.IsEmptyTitle()) { btnWall.BackgroundImage = TileBlock; btnWall.SetAsWallTitle(); wallCount++; } }while (wallCount < numOfWalls); }