//---------- // Khởi tạo mảng ô cờ (cấp phát vùng nhớ cho từng ô cờ) public void KhoiTaoMangOCo() { for (int i = 0; i < _Banco.SoDong; i++) { for (int j = 0; j < _Banco.SoCot; j++) { _MangOCo[i, j] = new Oco(i, j, new Point(j * Oco._ChieuRong, i * Oco._ChieuCao), 0); } } }
public void Redo(Graphics g) { if (stkCacNuocUndo.Count != 0) { if (_LuuCheDoChoi == 2 || _LuuCheDoChoi == 3) { Oco oco1 = stkCacNuocUndo.Pop(); stkCacNuocDaDi.Push(new Oco(oco1.Dong, oco1.Cot, oco1.Vitri, oco1.SoHuu)); Oco oco2 = stkCacNuocUndo.Pop(); stkCacNuocDaDi.Push(new Oco(oco2.Dong, oco2.Cot, oco2.Vitri, oco2.SoHuu)); _MangOCo[oco2.Dong, oco2.Cot].SoHuu = 0; _MangOCo[oco1.Dong, oco1.Cot].SoHuu = 0; if (oco1.SoHuu == 1) { _Banco.VeQuanCo_X(g, oco1.Vitri); } else { _Banco.VeQuanCo_O(g, oco1.Vitri); } if (oco2.SoHuu == 1) { _Banco.VeQuanCo_X(g, oco2.Vitri); } else { _Banco.VeQuanCo_O(g, oco2.Vitri); } } else { Oco oco = stkCacNuocUndo.Pop(); stkCacNuocDaDi.Push(new Oco(oco.Dong, oco.Cot, oco.Vitri, oco.SoHuu)); _MangOCo[oco.Dong, oco.Cot].SoHuu = oco.SoHuu; if (oco.SoHuu == 1) { _Banco.VeQuanCo_X(g, oco.Vitri); } else { _Banco.VeQuanCo_O(g, oco.Vitri); } if (_LuotDi == 1) { _LuotDi = 2; } else if (_LuotDi == 2) { _LuotDi = 1; } } } }
public void KhoiDongComputer(Graphics g) { if (_LuotDi == 1) { if (stkCacNuocDaDi.Count == 0) { DanhCo(_Banco.SoCot / 2 * Oco._ChieuRong + 1, _Banco.SoDong / 2 * Oco._ChieuCao + 1, g); _DaDanhCo = true; } else { Oco oco = TimKiemNuocDi(); DanhCo(oco.Vitri.X + 1, oco.Vitri.Y + 1, g); _DaDanhCo = true; } } }
//----------------------------------------------------- // Đánh cờ public bool DanhCo(int MouseX, int MouseY, Graphics g) { int Cot = MouseX / Oco._ChieuRong; int Dong = MouseY / Oco._ChieuCao; if (_MangOCo[Dong, Cot].SoHuu != 0) { return(false); } switch (_LuotDi) { case 1: _MangOCo[Dong, Cot].SoHuu = 1; _Banco.VeQuanCo_X(g, _MangOCo[Dong, Cot].Vitri); _DaDanhCo = true; _LuotDi = 2; break; case 2: _MangOCo[Dong, Cot].SoHuu = 2; _Banco.VeQuanCo_O(g, _MangOCo[Dong, Cot].Vitri); _DaDanhCo = true; _LuotDi = 1; break; default: MessageBox.Show("Có lỗi"); break; } stkCacNuocUndo = new Stack <Oco>(); Oco oco = new Oco(_MangOCo[Dong, Cot].Dong, _MangOCo[Dong, Cot].Cot, _MangOCo[Dong, Cot].Vitri, _MangOCo[Dong, Cot].SoHuu); stkCacNuocDaDi.Push(oco); return(true); }