private void BtSoDia_Click(object o, EventArgs e) { int so; try { so = int.Parse(this.TbSoDia.Text); } catch { MessageBox.Show("Nhập Cho Đúng Đi Mà!\n\tOK?"); this.TbSoDia.Text = string.Empty; return; } if (so <= 20) { this.Controls.Remove(this.CacThap[0]); this.CacThap[0] = Thap.TaoKhoiDau(int.Parse(this.TbSoDia.Text)); this.CacThap[0].Location = new Point(0, 220); this.Controls.Add(this.CacThap[0]); this.Controls.Add(this.BtKhoiDongLai); this.LbSoDia.Text = "Số lần đã chuyển: " + this.SoLanChuyen; this.LbSoDia.ForeColor = Color.GreenYellow; this.LbSoDia.Location = new Point(340, 68); this.LbSoDiaDung.Text = "Số đĩa đã chuyển hoàn thành: " + this.CacThap[2].SoDiaDung(int.Parse(this.TbSoDia.Text)); this.BtDiChuyen = new Button(); this.BtDiChuyen.Location = new Point(355, 150); this.AutoSize = true; this.BtDiChuyen.BackgroundImage = global::ThapHaNoi.Properties.Resources.dichuyenon; this.BtDiChuyen.BackgroundImageLayout = ImageLayout.Stretch;; this.BtDiChuyen.Click += new EventHandler(ThuatGiaiThapHaNoi); this.Controls.Add(this.BtDiChuyen); this.TbSoDia.Hide(); this.BtSoDia.Hide(); } else { MessageBox.Show("Không đủ màn hình để biểu diễn!\n Xin vui lòngnhập số <= 20"); } }
//Tính số đĩa đúng vị trí so với Tháp khởi đầu public int SoDiaDung(int sodia) { //Tạo 1 Tháp tương đương Tháp khởi đầu để so sánh Thap tam = Thap.TaoKhoiDau(sodia); int kq = 0; //Kiểm tra từ dưới lên int k = tam.CacDia.Length - 1; for (int i = this.CacDia.Length - 1; i >= 0; i--) { //Nếu đĩa đúng vị trí thì đếm được thêm 1 đĩa if (this.CacDia[i].Width == tam.CacDia[k--].Width) { kq++; } //Ngược lại dừng else { break; } } return(kq); }