public bool chieuTuong(char luot, int x0, int y0, QuanCo cur) { int i, j = 0; for (i = 0; i < 8; i++) { for (j = 0; j < 8; j++) { QuanCo hienTai = mBanCo.banCo[i, j]; if (hienTai != null) { if (hienTai.LayMau() != luot && hienTai.LayTen() == 'K') { break; } } } if (j < 8) { break; } } if (i == 8 && j == 8) { return(false); } if (cur.MoveHopLe(x0, y0, i, j, mBanCo)) { return(true); } else { return(false); } } //Kiểm tra chiếu tướng
public override bool Save(BanCo mBanCo, FileStream fout) { if (!fout.CanWrite) { return(false); } for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { QuanCo hienTai = mBanCo.banCo[i, j]; string content; if (hienTai != null) { content = hienTai.LayMau() + "" + hienTai.LayTen() + "\n"; } else { content = 0 + "" + 0 + "\n"; } fout.Write(Encoding.ASCII.GetBytes(content), 0, content.Length); } } fout.Close(); return(true); }
public void Move() { int x0 = 0, y0 = 0, x1 = 0, y1 = 0; if (!vuaDauRoi(luot)) //Nếu vua không còn tồn tại thì thông báo GAME OVER { boardView.renderGameOver(luot); Environment.Exit(0); } tt: if (isChieuTuong) //Kiểm tra và cảnh báo chiếu tướng { boardView.printMessage("!!!......CHIEU TUONG......!!!\n"); isChieuTuong = false; } boardView.getMoveInput(ref x0, ref y0, ref x1, ref y1, luot); if (x1 < 0 || x1 > 7 || y1 < 0 || y1 > 7) { boardView.printMessage("Toa do khong hop le...\n"); goto tt; } QuanCo hienTai = mBanCo.banCo[x0, y0]; if (hienTai == null) { boardView.printMessage("Toa do khong hop le...\n"); goto tt; } if (hienTai.MoveHopLe(x0, y0, x1, y1, mBanCo) && hienTai.LayMau() == luot) { QuanCo temp = mBanCo.banCo[x1, y1]; mBanCo.banCo[x1, y1] = mBanCo.banCo[x0, y0]; mBanCo.banCo[x0, y0] = null; if (mBanCo.banCo[x1, y1].LayTen() == 'P') { phong(x1, ref mBanCo.banCo[x1, y1]); } isChieuTuong = this.chieuTuong(luot, x1, y1, mBanCo.banCo[x1, y1]); this.changeTurn(); } else { boardView.printMessage("Buoc di khong hop le...\n"); boardView.printMessage("Nhan phim bat ky de di lai...\n"); goto tt; } }
} //Kiểm tra chiếu tướng public bool vuaDauRoi(char luot) { for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { QuanCo hienTai = mBanCo.banCo[i, j]; if (hienTai != null) { if (hienTai.LayMau() == luot && hienTai.LayTen() == 'K') { return(true); } } } } return(false); }
public void phong(int x, ref QuanCo cur) { string color = cur.LayMau().ToString(); if (cur.LayTen() != 'P') { return; } if ((color == "W" && x == 7) || (color == "B" && x == 0)) { int ch; ch = boardView.luaChonPhong(); switch (ch) { case 1: cur = QuanCoFactory.taoQuanCo("Q", color); break; case 2: cur = QuanCoFactory.taoQuanCo("R", color); break; case 3: cur = QuanCoFactory.taoQuanCo("B", color); break; case 4: cur = QuanCoFactory.taoQuanCo("N", color); break; default: break; } boardView.printMessage("Da phong xong...!\n"); } }
public override int TuongAnToan(int i, int j) { bool turn = true; //Kiểm tra tướng an toàn if (turn == true) { int ho, co; QuanCo temp; temp = new QuanCo(); ho = this.Hang; co = this.Cot; if (BanCo.ViTri[i, j].Trong == false) { if (BanCo.ViTri[i, j].Ten == "tuong") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qTuong; } if (BanCo.ViTri[i, j].Ten == "sy") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qSy[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qSy[1]; } } if (BanCo.ViTri[i, j].Ten == "tinh") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qTinh[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qTinh[1]; } } if (BanCo.ViTri[i, j].Ten == "xe") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qXe[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qXe[1]; } } if (BanCo.ViTri[i, j].Ten == "phao") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qPhao[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qPhao[1]; } } if (BanCo.ViTri[i, j].Ten == "ma") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qMa[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qMa[1]; } } if (BanCo.ViTri[i, j].Ten == "chot") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[1]; } if (BanCo.ViTri[i, j].ThuTu == "2") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[2]; } if (BanCo.ViTri[i, j].ThuTu == "3") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[3]; } if (BanCo.ViTri[i, j].ThuTu == "4") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[4]; } } } //Giả sử quân cờ được đi để kiểm tra Tướng mình có bị chiếu ko VanCo.OCoTrong(Hang, Cot); BanCo.ViTri[i, j].Trong = false; BanCo.ViTri[i, j].Phe = Phe; BanCo.ViTri[i, j].Ten = Ten; BanCo.ViTri[i, j].ThuTu = ThuTu; this.Hang = i; this.Cot = j; if (temp.Phe != 2) { temp.TrangThai = 0; temp.picQuanCo.Visible = false; } //Kiểm tra if (VanCo.ChieuTuong(VanCo.NguoiChoi[Phe].qTuong) == true) { turn = false; } //Trả lại những gì đã giả sử ở trên ^^! this.Hang = ho; this.Cot = co; VanCo.OCoTrong(i, j); BanCo.ViTri[ho, co].Trong = false; BanCo.ViTri[ho, co].Phe = Phe; BanCo.ViTri[ho, co].Ten = Ten; BanCo.ViTri[ho, co].ThuTu = ThuTu; if (temp.Phe != 2) { temp.TrangThai = 1; temp.picQuanCo.Visible = true; BanCo.ViTri[i, j].Trong = false; BanCo.ViTri[i, j].Ten = temp.Ten; BanCo.ViTri[i, j].Phe = temp.Phe; BanCo.ViTri[i, j].ThuTu = temp.ThuTu; } } //Trả về kết quả if (turn) { return(1); } else { return(0); } }
public override int KiemTra(int i, int j) { bool turn = false; int ho, co; QuanCo temp; temp = new QuanCo(); if ((i >= 0 && i <= 2 && j >= 3 && j <= 5) || (i >= 7 && i <= 9 && j >= 3 && j <= 5)) { if ((i == Hang + 1 && j == Cot) || (i == Hang - 1 && j == Cot) || (i == Hang && j == Cot + 1) || (i == Hang && j == Cot - 1)) { if (BanCo.ViTri[i, j].Trong == true) { turn = true; } if (BanCo.ViTri[i, j].Trong == false) { if (BanCo.ViTri[i, j].Phe != this.Phe) { turn = true; } } } } if (Phe == 0) { int ct = 0; if (j == VanCo.NguoiChoi[1].qTuong.Cot) { if (BanCo.ViTri[i, j].Trong == true) { for (int t = Hang + 1; t < VanCo.NguoiChoi[1].qTuong.Hang; t++) { if (BanCo.ViTri[t, j].Trong == false) { ct++; } } if (ct == 0) { turn = false; } } else { if (BanCo.ViTri[i, j].Ten == "tuong") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qTuong; } if (BanCo.ViTri[i, j].Ten == "sy") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qSy[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qSy[1]; } } if (BanCo.ViTri[i, j].Ten == "tinh") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qTinh[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qTinh[1]; } } if (BanCo.ViTri[i, j].Ten == "xe") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qXe[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qXe[1]; } } if (BanCo.ViTri[i, j].Ten == "phao") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qPhao[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qPhao[1]; } } if (BanCo.ViTri[i, j].Ten == "ma") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qMa[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qMa[1]; } } if (BanCo.ViTri[i, j].Ten == "chot") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[1]; } if (BanCo.ViTri[i, j].ThuTu == "2") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[2]; } if (BanCo.ViTri[i, j].ThuTu == "3") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[3]; } if (BanCo.ViTri[i, j].ThuTu == "4") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[4]; } } ho = this.Hang; co = this.Cot; VanCo.OCoTrong(Hang, Cot); BanCo.ViTri[i, j].Trong = false; BanCo.ViTri[i, j].Phe = Phe; BanCo.ViTri[i, j].Ten = Ten; BanCo.ViTri[i, j].ThuTu = ThuTu; this.Hang = i; this.Cot = j; temp.TrangThai = 0; temp.picQuanCo.Visible = false; //kiem tra for (int t = Hang + 1; t < VanCo.NguoiChoi[1].qTuong.Hang; t++) { if (BanCo.ViTri[t, j].Trong == false) { ct++; } } if (ct == 0) { turn = false; } this.Hang = ho; this.Cot = co; VanCo.OCoTrong(i, j); BanCo.ViTri[ho, co].Trong = false; BanCo.ViTri[ho, co].Phe = Phe; BanCo.ViTri[ho, co].Ten = Ten; BanCo.ViTri[ho, co].ThuTu = ThuTu; if (temp.Phe != 2) { temp.TrangThai = 1; temp.picQuanCo.Visible = true; BanCo.ViTri[i, j].Trong = false; BanCo.ViTri[i, j].Ten = temp.Ten; BanCo.ViTri[i, j].Phe = temp.Phe; BanCo.ViTri[i, j].ThuTu = temp.ThuTu; } } } } if (Phe == 1) { int ct = 0; if (j == VanCo.NguoiChoi[0].qTuong.Cot) { if (BanCo.ViTri[i, j].Trong == true) { for (int t = Hang - 1; t > VanCo.NguoiChoi[0].qTuong.Hang; t--) { if (BanCo.ViTri[t, j].Trong == false) { ct++; } } if (ct == 0) { turn = false; } } else { if (BanCo.ViTri[i, j].Ten == "tuong") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qTuong; } if (BanCo.ViTri[i, j].Ten == "sy") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qSy[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qSy[1]; } } if (BanCo.ViTri[i, j].Ten == "tinh") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qTinh[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qTinh[1]; } } if (BanCo.ViTri[i, j].Ten == "xe") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qXe[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qXe[1]; } } if (BanCo.ViTri[i, j].Ten == "phao") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qPhao[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qPhao[1]; } } if (BanCo.ViTri[i, j].Ten == "ma") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qMa[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qMa[1]; } } if (BanCo.ViTri[i, j].Ten == "chot") { if (BanCo.ViTri[i, j].ThuTu == "0") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[0]; } if (BanCo.ViTri[i, j].ThuTu == "1") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[1]; } if (BanCo.ViTri[i, j].ThuTu == "2") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[2]; } if (BanCo.ViTri[i, j].ThuTu == "3") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[3]; } if (BanCo.ViTri[i, j].ThuTu == "4") { temp = VanCo.NguoiChoi[BanCo.ViTri[i, j].Phe].qChot[4]; } } ho = this.Hang; co = this.Cot; VanCo.OCoTrong(Hang, Cot); BanCo.ViTri[i, j].Trong = false; BanCo.ViTri[i, j].Phe = Phe; BanCo.ViTri[i, j].Ten = Ten; BanCo.ViTri[i, j].ThuTu = ThuTu; this.Hang = i; this.Cot = j; temp.TrangThai = 0; temp.picQuanCo.Visible = false; //kiem tra for (int t = Hang - 1; t > VanCo.NguoiChoi[0].qTuong.Hang; t--) { if (BanCo.ViTri[t, j].Trong == false) { ct++; } } if (ct == 0) { turn = false; } this.Hang = ho; this.Cot = co; VanCo.OCoTrong(i, j); BanCo.ViTri[ho, co].Trong = false; BanCo.ViTri[ho, co].Phe = Phe; BanCo.ViTri[ho, co].Ten = Ten; BanCo.ViTri[ho, co].ThuTu = ThuTu; if (temp.Phe != 2) { temp.TrangThai = 1; temp.picQuanCo.Visible = true; BanCo.ViTri[i, j].Trong = false; BanCo.ViTri[i, j].Ten = temp.Ten; BanCo.ViTri[i, j].Phe = temp.Phe; BanCo.ViTri[i, j].ThuTu = temp.ThuTu; } } } } //Trả về kết quả if (turn) { return(1); } else { return(0); } }
public RoundPictureBox(Point toaDoBanDau) { TenQuanCo = ""; if (toaDoBanDau == ThongSo.ToaDoNULL) { Quan_Co = new QuanCo(toaDoBanDau); TenQuanCo += "NULL"; } else if (global::CoTuongOffline.CoTuong.BanCo.MauPheTa == 2) { if (toaDoBanDau == ThongSoPheDo.ToaDoTuongXanh || toaDoBanDau == ThongSoPheDo.ToaDoTuongDo) { Quan_Co = new QuanTuong(toaDoBanDau); TenQuanCo += "Tuong"; } else if (toaDoBanDau == ThongSoPheDo.ToaDoXeXanh1 || toaDoBanDau == ThongSoPheDo.ToaDoXeXanh2 || toaDoBanDau == ThongSoPheDo.ToaDoXeDo1 || toaDoBanDau == ThongSoPheDo.ToaDoXeDo2) { Quan_Co = new QuanXe(toaDoBanDau); TenQuanCo += "Xe"; } else if (toaDoBanDau == ThongSoPheDo.ToaDoMaXanh1 || toaDoBanDau == ThongSoPheDo.ToaDoMaXanh2 || toaDoBanDau == ThongSoPheDo.ToaDoMaDo1 || toaDoBanDau == ThongSoPheDo.ToaDoMaDo2) { Quan_Co = new QuanMa(toaDoBanDau); TenQuanCo += "Ma"; } else if (toaDoBanDau == ThongSoPheDo.ToaDoTinhXanh1 || toaDoBanDau == ThongSoPheDo.ToaDoTinhXanh2 || toaDoBanDau == ThongSoPheDo.ToaDoTinhDo1 || toaDoBanDau == ThongSoPheDo.ToaDoTinhDo2) { Quan_Co = new QuanTinh(toaDoBanDau); TenQuanCo += "Tinh"; } else if (toaDoBanDau == ThongSoPheDo.ToaDoSiXanh1 || toaDoBanDau == ThongSoPheDo.ToaDoSiXanh2 || toaDoBanDau == ThongSoPheDo.ToaDoSiDo1 || toaDoBanDau == ThongSoPheDo.ToaDoSiDo2) { Quan_Co = new QuanSi(toaDoBanDau); TenQuanCo += "Si"; } else if (toaDoBanDau == ThongSoPheDo.ToaDoPhaoXanh1 || toaDoBanDau == ThongSoPheDo.ToaDoPhaoXanh2 || toaDoBanDau == ThongSoPheDo.ToaDoPhaoDo1 || toaDoBanDau == ThongSoPheDo.ToaDoPhaoDo2) { Quan_Co = new QuanPhao(toaDoBanDau); TenQuanCo += "Phao"; } else { Quan_Co = new QuanTot(toaDoBanDau); TenQuanCo += "Tot"; } } else if (global::CoTuongOffline.CoTuong.BanCo.MauPheTa == 1) { if (toaDoBanDau == ThongSoPheXanh.ToaDoTuongXanh || toaDoBanDau == ThongSoPheXanh.ToaDoTuongDo) { Quan_Co = new QuanTuong(toaDoBanDau); TenQuanCo += "Tuong"; } else if (toaDoBanDau == ThongSoPheXanh.ToaDoXeXanh1 || toaDoBanDau == ThongSoPheXanh.ToaDoXeXanh2 || toaDoBanDau == ThongSoPheXanh.ToaDoXeDo1 || toaDoBanDau == ThongSoPheXanh.ToaDoXeDo2) { Quan_Co = new QuanXe(toaDoBanDau); TenQuanCo += "Xe"; } else if (toaDoBanDau == ThongSoPheXanh.ToaDoMaXanh1 || toaDoBanDau == ThongSoPheXanh.ToaDoMaXanh2 || toaDoBanDau == ThongSoPheXanh.ToaDoMaDo1 || toaDoBanDau == ThongSoPheXanh.ToaDoMaDo2) { Quan_Co = new QuanMa(toaDoBanDau); TenQuanCo += "Ma"; } else if (toaDoBanDau == ThongSoPheXanh.ToaDoTinhXanh1 || toaDoBanDau == ThongSoPheXanh.ToaDoTinhXanh2 || toaDoBanDau == ThongSoPheXanh.ToaDoTinhDo1 || toaDoBanDau == ThongSoPheXanh.ToaDoTinhDo2) { Quan_Co = new QuanTinh(toaDoBanDau); TenQuanCo += "Tinh"; } else if (toaDoBanDau == ThongSoPheXanh.ToaDoSiXanh1 || toaDoBanDau == ThongSoPheXanh.ToaDoSiXanh2 || toaDoBanDau == ThongSoPheXanh.ToaDoSiDo1 || toaDoBanDau == ThongSoPheXanh.ToaDoSiDo2) { Quan_Co = new QuanSi(toaDoBanDau); TenQuanCo += "Si"; } else if (toaDoBanDau == ThongSoPheXanh.ToaDoPhaoXanh1 || toaDoBanDau == ThongSoPheXanh.ToaDoPhaoXanh2 || toaDoBanDau == ThongSoPheXanh.ToaDoPhaoDo1 || toaDoBanDau == ThongSoPheXanh.ToaDoPhaoDo2) { Quan_Co = new QuanPhao(toaDoBanDau); TenQuanCo += "Phao"; } else { Quan_Co = new QuanTot(toaDoBanDau); TenQuanCo += "Tot"; } } if (Quan_Co.Mau == 1) { base.BackColor = global::CoTuongOffline.CoTuong.BanCo.MauPheXanh; TenQuanCo += " Xanh"; } else if (Quan_Co.Mau == 2) { base.BackColor = global::CoTuongOffline.CoTuong.BanCo.MauPheDo; TenQuanCo += " Do"; } Height = ThongSo.DuongKinhQuanCo; Width = ThongSo.DuongKinhQuanCo; SizeMode = PictureBoxSizeMode.StretchImage; Location = ThongSo.ToaDoBanCoCuaQuanCo(toaDoBanDau); }
public RoundPictureBox() { Quan_Co = new QuanCo(); TenQuanCo = ""; this.BackColor = Color.DarkGray; }