コード例 #1
0
ファイル: MainWindow.xaml.cs プロジェクト: CYAN4S/Mazel
        private void MenuGenerateButton(object sender, RoutedEventArgs e)
        {
            int inputRow = 0, inputCol = 0;

            #region EXCEPTION
            try
            {
                delayTime = int.Parse(DelayTimeTextBox.Text);
                if (delayTime < 0)
                {
                    throw new InvaildDelayTimeException("지연 시간은 0 이상이여야 합니다.");
                }
            }
            catch (FormatException)
            {
                MessageBoxResult result = MessageBox.Show("지연 시간 입력란에는 숫자만 입력할 수 있습니다.", "Wait...");
                return;
            }
            catch (InvaildDelayTimeException)
            {
                MessageBoxResult result = MessageBox.Show("지연 시간은 0 이상이여야 합니다.", "Wait...");
                return;
            }

            try
            {
                inputRow = int.Parse(RowInputTextBox.Text);
                inputCol = int.Parse(ColInputTextBox.Text);
                if (inputRow < 1 || inputCol < 1)
                {
                    throw new InvaildMazeSizeException("미로의 행과 열의 크기는 2 이상이여야 합니다.");
                }
            }
            catch (FormatException)
            {
                MessageBoxResult result = MessageBox.Show("미로의 크기 입력란에는 숫자만 입력할 수 있습니다.", "Wait...");
                return;
            }
            catch (InvaildMazeSizeException)
            {
                MessageBoxResult result = MessageBox.Show("미로의 행과 열의 크기는 2 이상이여야 합니다.", "Wait...");
                return;
            }
            #endregion

            ArrayPoint2D size = new ArrayPoint2D(inputRow, inputCol);
            mainMaze = new Maze(size, new ArrayPoint2D(0, 0), new ArrayPoint2D(9, 10));
            Prepare();

            switch (GenerateAlgComboBox.SelectedIndex)
            {
            case 0:
                MazeGenerator.RecursiveBacktracker(mainMaze, ShowMaze);
                mainMaze.isMaze = true;
                break;

            case 1:
                MazeGenerator.Kruskal(mainMaze, ShowMaze);
                mainMaze.isMaze = true;
                break;

            case 2:
                MazeGenerator.HuntAndKill(mainMaze, ShowMaze);
                mainMaze.isMaze = true;
                break;

            default:
                mainMaze.isMaze = false;
                break;
            }


            ShowMaze();
        }