Esempio n. 1
0
        /// <summary>
        /// This event fire each time that user click on any button on panelMain
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TileButton_Click(object sender, EventArgs e)
        {
            //Get the button that fire the event
            TileButton btnClicked = (TileButton)sender;

            ChangebuttonState(btnClicked);
        }
Esempio n. 2
0
 private void CommonToolStripAction(ToolStripMenuItem toolStripMenuItemToMark)
 {
     UnselectAllDifficultyToolStrip();
     toolStripMenuItemToMark.Checked = true;
     btnInitial = null;
     btnFinal   = null;
     CreateControls();
 }
Esempio n. 3
0
        /// <summary>
        /// Create and asign controls to main form
        /// </summary>
        private void CreateControls()
        {
            //Get setup for selected difficulty
            SetSetupByDifficulty();

            //Clean panel and set enabled true
            mainPanel.Controls.Clear();
            mainPanel.Enabled = true;

            int iCountParcial     = 0;
            int iLocationA        = 0;
            int iLocationB        = 0;
            int sideSizeForButton = increase;

            //Get number of button to generate
            TotalNumOfButtons = (PnlSize / increase) * NumButtonsPerRow;

            for (int i = 0; i < TotalNumOfButtons; i++)
            {
                TileButton btnToAsign = new TileButton
                {
                    Name = ButtonPrefix + i,
                    BackgroundImageLayout = ImageLayout.Stretch
                };

                //Add events to button
                btnToAsign.Click += new EventHandler(TileButton_Click);

                btnToAsign.Location  = new Point(iLocationA, iLocationB);
                btnToAsign.Text      = string.Empty;
                btnToAsign.FlatStyle = FlatStyle.Flat;

                //Set Size
                btnToAsign.Size = new Size(sideSizeForButton, sideSizeForButton);

                //Add to the panel
                mainPanel.Controls.Add(btnToAsign);

                //Increase count of button set in panel
                iCountParcial++;

                //Increase referencial location point
                if (iCountParcial < NumButtonsPerRow)
                {
                    iLocationA += increase;
                }
                else
                {
                    iCountParcial = 0;
                    iLocationA    = 0;
                    iLocationB   += increase;
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Clean controls in panel
        /// </summary>
        private void CleanPanel()
        {
            foreach (Control item in mainPanel.Controls)
            {
                if (item.GetType() == typeof(TileButton))
                {
                    item.BackgroundImage = null;
                }
            }

            btnInitial = null;
            btnFinal   = null;
        }
Esempio n. 5
0
        /// <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();
            }
        }
Esempio n. 6
0
        /// <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);
        }
Esempio n. 7
0
        /// <summary>
        /// Generate initial and final tiles
        /// </summary>
        private void GenerateInitialAndFinalButton()
        {
            //Generate initial button
            int initialButtonIndex = randomize.Next(0, TotalNumOfButtons);

            btnInitial = (TileButton)mainPanel.Controls[initialButtonIndex];
            btnInitial.BackgroundImage = InitialTile;
            btnInitial.SetAsInitialTitle();

            //Generate final button
            int finalButtonIndex;

            do
            {
                finalButtonIndex = randomize.Next(0, TotalNumOfButtons);
            }
            // We need check that we don't use the same button and also that we have a minimun difference
            while (finalButtonIndex == initialButtonIndex || Math.Abs(initialButtonIndex - finalButtonIndex) < 45);

            btnFinal = (TileButton)mainPanel.Controls[finalButtonIndex];
            btnFinal.BackgroundImage = EndTile;
            btnFinal.SetAsFinalTitle();
        }