Ejemplo n.º 1
0
 private void ptbBanCo_Click(object sender, EventArgs e)
 {
     if (BanCo.QuanCoDuocChon != null)
     {
         BanCo.Dehighlight();
         BanCo.AnDiemDich();
         BanCo.RefreshBanCo(); //*Offline*
         BanCo.QuanCoDuocChon = null;
     }
 }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        /* 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*
        }