private void ptbBanCo_Click(object sender, EventArgs e) { if (BanCo.QuanCoDuocChon != null) { BanCo.Dehighlight(); BanCo.AnDiemDich(); BanCo.RefreshBanCo(); //*Offline* BanCo.QuanCoDuocChon = null; } }
private void btnUndo_Click(object sender, EventArgs e) { DialogResult result = MessageBox.Show("Bạn muốn hoàn tác nước đi vừa rồi?", "Hoàn tác nước đi", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { btnUndo.Enabled = false; BanCo.Dehighlight(); BanCo.AnDiemDich(); BanCo.HoanTac(ptbBanCo); BanCo.DoiPhe(lblPheDuocDanh, lblSoLuotDi, btnNewGame); BanCo.HienThiNuocDiTruoc(ptbBanCo); } }
/* Những gì xảy ra khi click vào một RoundButton điểm bàn cờ để đi đến */ private void DiemBanCo_Click(object sender, EventArgs e) // BẢN OFFLINE { if (BanCo.QuanCoDuocChon == null) { return; // Dòng code chống lỗi lặp lại event ngoài ý muốn (chưa rõ nguyên nhân của lỗi này). Không được xóa! } BanCo.Dehighlight(); // chọn nước đi... BanCo.AnDiemDich(); // ...thì đồng thời sẽ bỏ chọn quân cờ luôn Point departure = new Point(BanCo.QuanCoDuocChon.Quan_Co.ToaDo.X, BanCo.QuanCoDuocChon.Quan_Co.ToaDo.Y); Point destination = ProgramConfig.ThongSo.ToaDoDonViCuaDiem(((ProgramConfig.RoundButton)sender).Location); // Lấy tọa độ của RoundButton điểm bàn cờ (điểm đích) BanCo.LoaiBoQuanCo(destination, ptbBanCo); // Loại bỏ quân cờ ở điểm đích BanCo.QuanCoDuocChon.DiChuyen(destination); // Di chuyển quân cờ đến điểm đích if (BanCo.HaiTuongDoiMatNhau()) // nước đi không hợp lệ nếu sau nước đi 2 tướng đối mặt nhau => hoàn tác nước đi { MessageBox.Show("Tướng phe bạn sẽ đối mặt với tướng đối phương sau nước đi này. Hãy chọn một nước đi khác.", "Nước đi không hợp lệ"); BanCo.QuanCoDuocChon.DiChuyen(departure); BanCo.QuanCoDuocChon = null; BanCo.TraLaiQuanCo(ptbBanCo, BanCo.QuanCoBiLoai); BanCo.RefreshBanCo(); return; } if (BanCo.CoChieuTuong(BanCo.PheDoiPhuong())) // nước đi không hợp lệ nếu sau nước đi tướng phe di chuyển bị đối phương chiếu => hoàn tác nước đi { MessageBox.Show("Tướng phe bạn sẽ gặp nguy sau nước đi này. Hãy chọn một nước đi khác.", "Nước đi không hợp lệ"); BanCo.QuanCoDuocChon.DiChuyen(departure); BanCo.QuanCoDuocChon = null; BanCo.TraLaiQuanCo(ptbBanCo, BanCo.QuanCoBiLoai); BanCo.RefreshBanCo(); return; } if (BanCo.CoChieuTuong(BanCo.PheDuocDanh)) // nếu sau nước đi phe di chuyển chiếu tướng phe đối phương => thông báo cho người chơi { if (BanCo.PheDoiPhuong() == 1) { MessageBox.Show("Phe Xanh hãy đối phó với nước đi này từ phe Đỏ.", "Chiếu tướng!"); } else { MessageBox.Show("Phe Đỏ hãy đối phó với nước đi này từ phe Xanh.", "Chiếu tướng!"); } } BanCo.HienThiNuocDi(departure, destination, ptbBanCo); BanCo.LuuNuocDi(departure, destination); BanCo.DoiPhe(lblPheDuocDanh, lblSoLuotDi, btnNewGame, btnUndo); //*Offline* }