示例#1
0
 private void ButtonStartClick(object sender, System.Windows.RoutedEventArgs e)
 {
     this.ButtonStart.IsEnabled = false;
     Mouse.OverrideCursor       = Cursors.Wait;;
     try
     {
         int totalDisks = DiskFirstRow.Count();
         if (totalDisks > 0)
         {
             this.textDisk.Text        = totalDisks.ToString();
             this.textMovementCal.Text = (Math.Pow(2, totalDisks) - 1).ToString();
             movementSpreed            = new TimeSpan(0, 0, 0, 0, (int)slider.Value);
             myWorker.RunWorkerAsync();
         }
         else
         {
             throw new Exception("There is no Disk !");
         }
     }
     catch (Exception error)
     {
         Mouse.OverrideCursor = null;
         MessageBox.Show(error.Message, projectName, MessageBoxButton.OK, MessageBoxImage.Error);
         this.ButtonStart.IsEnabled = true;
     }
 }
示例#2
0
        private void addRemoveCollection(int from, int to)
        {
            DiskInfo tempdiskInfo = new DiskInfo();

            // tempdiskInfo = null;
            if (from.Equals(1))
            {
                tempdiskInfo = DiskFirstRow.LastOrDefault();
            }
            else if (from.Equals(2))
            {
                tempdiskInfo = DiskSecondRow.LastOrDefault();
            }
            else
            {
                tempdiskInfo = DiskThirdRow.LastOrDefault();
            }

            if (to.Equals(1))
            {
                DiskFirstRow.Add(tempdiskInfo);
            }
            else if (to.Equals(2))
            {
                DiskSecondRow.Add(tempdiskInfo);
            }
            else
            {
                DiskThirdRow.Add(tempdiskInfo);
            }

            if (from.Equals(1))
            {
                DiskFirstRow.Remove(tempdiskInfo);
            }
            else if (from.Equals(2))
            {
                DiskSecondRow.Remove(tempdiskInfo);
            }
            else
            {
                DiskThirdRow.Remove(tempdiskInfo);
            }
            this.textMovement.Text = (++diskMovment).ToString();
        }
示例#3
0
 private void ButtonAddClick(object sender, System.Windows.RoutedEventArgs e)
 {
     this.ButtonAdd.IsEnabled = false;
     Mouse.OverrideCursor     = Cursors.Wait;;
     try
     {
         if (this.TextBoxDiskSize.Text != string.Empty && !String.IsNullOrWhiteSpace(this.TextBoxDiskSize.Text))
         {
             int diskSize      = Convert.ToInt16(this.TextBoxDiskSize.Text);
             var sequenceCheck = DiskFirstRow.LastOrDefault(smallValue => smallValue.DiskSize <= diskSize);
             if (sequenceCheck == null)
             {
                 DiskFirstRow.Add(new DiskInfo {
                     DiskSize = diskSize
                 });
             }
             else
             {
                 throw new Exception(string.Format("Enter a Smaller Disk Size Than {0}", DiskFirstRow.LastOrDefault().DiskSize));
             }
         }
         else
         {
             throw new Exception("Please Enter a Disk Size Between 50 to 90 ");
         }
     }
     catch (Exception error)
     {
         Mouse.OverrideCursor = null;
         MessageBox.Show(error.Message, projectName, MessageBoxButton.OK, MessageBoxImage.Error);
     }
     finally
     {
         Mouse.OverrideCursor      = null;
         this.ButtonAdd.IsEnabled  = true;
         this.TextBoxDiskSize.Text = string.Empty;
     }
 }
示例#4
0
        void myWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker work = sender as BackgroundWorker;

            this.hanoi(1, 3, 2, DiskFirstRow.Count(), work);
        }