public bool DanhCo(int MouseX, int MouseY, Graphics gr) { if (MouseX % QuanCo._Width == 0 || MouseY % QuanCo._Height == 0) { return(false); } int Cot = MouseX / QuanCo._Width; int Dong = MouseY / QuanCo._Height; if (MangOCo[Dong, Cot].SoHuu != 0) { return(false); } System.Media.SoundPlayer sound = new SoundPlayer(@"C://Users\pc\Downloads\Documents\Visual Studio 2015\Projects\GameCaro\GameCaro\Resources\DanhCoSound.WAV"); switch (Luotdi) { case 1: MangOCo[Dong, Cot].SoHuu = 1; _BanCo.VeQuanCo(gr, MangOCo[Dong, Cot].ViTri, ImageO); Luotdi = 2; sound.Play(); break; case 2: MangOCo[Dong, Cot].SoHuu = 2; _BanCo.VeQuanCo(gr, MangOCo[Dong, Cot].ViTri, ImageX); Luotdi = 1; sound.Play(); break; } QuanCo quanco = new QuanCo(MangOCo[Dong, Cot].Row, MangOCo[Dong, Cot].Column, MangOCo[Dong, Cot].ViTri, MangOCo[Dong, Cot].SoHuu); StackQuanCoDaDi.Push(quanco); return(true); }
//tiến hành đánh cờ, nhận vào vị trí trỏ chuột và cọ vẽ public bool DanhCo(int MouseX, int MouseY, Graphics g) { //kiểm tra các đường vạch thì k đánh đc if (MouseX % OCo._ChieuRong == 0 || MouseY % OCo._ChieuCao == 0) { return(false); } //tính ra ô cờ từ vị trí trỏ chuột 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(g, _MangOCo[Dong, Cot].ViTri, sbBlack); _LuotDi = 2; break; } case 2: { _MangOCo[Dong, Cot].SoHuu = 2; _BanCo.VeQuanCo(g, _MangOCo[Dong, Cot].ViTri, sbRed); _LuotDi = 1; break; } default: MessageBox.Show("Error!"); break; } //tiến hành vẽ quân cờ tương ứng , gọi hàm vẽ quân cờ //lưu quân cờ đã đi vào stack cho undo , redo và vẽ quân cờ ////////////stk_CacNuocDaDi.Push(_MangOCo[Dong, Cot])////////;-->nên tạo mới vùng nhớ //tránh lỗi sử dụng cùng vùng nhớ khi undo và redo stk_CacNuocUndo = new Stack <OCo>(); OCo oco = new OCo(_MangOCo[Dong, Cot].Dong, _MangOCo[Dong, Cot].Cot, _MangOCo[Dong, Cot].ViTri, _MangOCo[Dong, Cot].SoHuu); stk_CacNuocDaDi.Push(oco); return(true); }
public bool DanhCo(int MouseX, int MouseY, Graphics g) { if (MouseX % OCo._ChieuRong == 0 || MouseY % OCo._chieuCao == 0) { return(false); } 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(g, _MangOCo[Dong, Cot].ViTri, pBlue); _LuotDi = 2; break; case 2: _MangOCo[Dong, Cot].SoHuu = 2; _BanCo.VeQuanCo(g, _MangOCo[Dong, Cot].ViTri, pRed); _LuotDi = 1; break; default: MessageBox.Show("false"); break; } stk_Redo = new Stack <OCo>(); OCo oco = new OCo(_MangOCo[Dong, Cot].Dong, _MangOCo[Dong, Cot].Cot, _MangOCo[Dong, Cot].ViTri, _MangOCo[Dong, Cot].SoHuu); stk_CacNuocDaDi.Push(oco); return(true); }