Пример #1
0
        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);
        }
Пример #2
0
        //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);
        }
Пример #3
0
        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);
        }