public bool DanhCo(int MouseX, int MouseY, Graphics g) { int Cot = MouseX / Ô_cờ._chieuRong; int Dong = MouseY / Ô_cờ._chieuCao; if (_MangOCo[Dong, Cot].SoHuu != 0) { return(false); } switch (luotdi) { case 1: _MangOCo[Dong, Cot].SoHuu = 1; _BanCo.VeQuanCo(g, _MangOCo[Dong, Cot].Vitri, sbblack); luotdi = 2; break; case 2: _MangOCo[Dong, Cot].SoHuu = 2; _BanCo.VeQuanCo(g, _MangOCo[Dong, Cot].Vitri, sbwhite); luotdi = 1; break; default: MessageBox.Show("Lỗi"); break; } stkcacnuocUndo = new Stack <Ô_cờ>(); Ô_cờ oco = new Ô_cờ(_MangOCo[Dong, Cot].Dong, _MangOCo[Dong, Cot].Cot, _MangOCo[Dong, Cot].Vitri, _MangOCo[Dong, Cot].SoHuu); stkcacnuocdadi.Push(oco); return(true); }
public void KhoiTaoMangOCo() { for (int i = 0; i < _BanCo.Sodong; i++) { for (int j = 0; j < _BanCo.Sodong; j++) { _MangOCo[i, j] = new Ô_cờ(i, j, new Point(j * Ô_cờ._chieuRong, i * Ô_cờ._chieuCao), 0); } } }
public void KhoiDongCOM(Graphics g) { if (stkcacnuocdadi.Count == 0) { DanhCo(_BanCo.Sodong / 2 * Ô_cờ._chieuRong + 1, _BanCo.Sodong / 2 * Ô_cờ._chieuCao + 1, g); } else { Ô_cờ oco = TimKiemNuocDi(); DanhCo(oco.Vitri.X + 1, oco.Vitri.Y + 1, g); } }
public void Redo(Graphics g) { if (stkcacnuocUndo.Count != 0) { Ô_cờ oco = stkcacnuocUndo.Pop(); stkcacnuocdadi.Push(new Ô_cờ(oco.Dong, oco.Cot, oco.Vitri, oco.SoHuu)); _MangOCo[oco.Dong, oco.Cot].SoHuu = oco.SoHuu; _BanCo.VeQuanCo(g, oco.Vitri, oco.SoHuu == 1 ? sbblack : sbwhite); if (luotdi == 1) { luotdi = 2; } else { luotdi = 1; } } }
public void Undo(Graphics g) { if (stkcacnuocdadi.Count != 0) { Ô_cờ oco = stkcacnuocdadi.Pop(); stkcacnuocUndo.Push(new Ô_cờ(oco.Dong, oco.Cot, oco.Vitri, oco.SoHuu)); _MangOCo[oco.Dong, oco.Cot].SoHuu = 0; _BanCo.XoaQuanCo(g, oco.Vitri, sbcontroldark); if (luotdi == 1) { luotdi = 2; } else { luotdi = 1; } } }
private Ô_cờ TimKiemNuocDi() { Ô_cờ Ocoresult = new Ô_cờ(); long DiemMax = 0; for (int i = 0; i < _BanCo.Sodong; i++) { for (int j = 0; j < _BanCo.Socot; j++) { if (_MangOCo[i, j].SoHuu == 0) { long DiemTanCong = DiemTanCong_DuyetDoc(i, j) + DiemTanCong_DuyetNgang(i, j) + DiemTanCong_DuyetCheoXuoi(i, j) + DiemTanCong_DuyetCheoNguoc(i, j); long DiemPhongThu = DiemPhongThu_DuyetDoc(i, j) + DiemPhongThu_DuyetNgang(i, j) + DiemPhongThu_DuyetCheoXuoi(i, j) + DiemPhongThu_DuyetCheoNguoc(i, j); long DiemTam = DiemTanCong > DiemPhongThu ? DiemTanCong : DiemPhongThu; if (DiemMax < DiemTam) { DiemMax = DiemTam; Ocoresult = new Ô_cờ(_MangOCo[i, j].Dong, _MangOCo[i, j].Cot, _MangOCo[i, j].Vitri, _MangOCo[i, j].SoHuu); } } } } return(Ocoresult); }