Exemplo n.º 1
0
        private void DrawAStone(Revive item)
        {
            int   x   = item.X;
            int   y   = item.Y;
            STONE s   = item.Stone;
            int   seq = item.Seq;

            // 바둑판[x,y] 에 돌을 그린다
            Rectangle r = new Rectangle(
                margin + 눈Size * x - 돌Size / 2,
                margin + 눈Size * y - 돌Size / 2,
                돌Size, 돌Size);

            // 검은돌 차례
            if (s == STONE.black)
            {
                if (imageFlag == false)
                {
                    g.FillEllipse(bBrush, r);
                }
                else
                {
                    Bitmap bmp = new Bitmap("../../Images/black.png");
                    g.DrawImage(bmp, r);
                }
                DrawStoneSequence(seq, Brushes.White, r);
                바둑판[x, y] = STONE.black;
            }
            else
            {
                if (imageFlag == false)
                {
                    g.FillEllipse(wBrush, r);
                }
                else
                {
                    Bitmap bmp = new Bitmap("../../Images/white.png");
                    g.DrawImage(bmp, r);
                }
                DrawStoneSequence(seq, Brushes.Black, r);
                바둑판[x, y] = STONE.white;
            }
            CheckOmok(x, y);
        }
Exemplo n.º 2
0
        // 저장된 파일을 읽고 수순대로 복기
        private void 복기ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.InitialDirectory = dirName;
            ofd.Filter           = "Omok files(*.omk)|*.omk";
            ofd.ShowDialog();
            string fileName = ofd.FileName;

            sequenceFlag = true;

            InitializeOmok(); // 현재 게임 중이라면 초기화

            try
            {
                StreamReader r    = File.OpenText(fileName);
                string       line = "";

                // 파일 내용을 한 줄 씩 읽어서 lstRevive 리스트에 넣는다
                while ((line = r.ReadLine()) != null)
                {
                    string[] items = line.Split(' ');
                    Revive   rev   = new Revive(int.Parse(items[0]), int.Parse(items[1]),
                                                items[2] == "black" ? STONE.black : STONE.white, int.Parse(items[3]));
                    lstRevive.Add(rev);
                }
                r.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            // 복기 준비
            reviveFlag = true;
            sequence   = 0;
        }
Exemplo n.º 3
0
        private void panel1_MouseDown(object sender, MouseEventArgs e)
        {
            if (reviveFlag == true)
            {
                ReviveGame();
                return;
            }

            // e.X는 픽셀단위, x는 바둑판 좌표
            int x = (e.X - margin + 눈Size / 2) / 눈Size;
            int y = (e.Y - margin + 눈Size / 2) / 눈Size;

            if (바둑판[x, y] != STONE.none)
            {
                return;
            }

            STONE stoneColor;

            if (flag == false) // 검은돌 차례
            {
                stoneColor = STONE.black;
                flag       = true;
            }
            else
            {
                stoneColor = STONE.white;
                flag       = false;
            }
            Revive aStone = new Revive(x, y, stoneColor, stoneCnt++);

            lstRevive.Add(aStone);
            DrawAStone(aStone);

            // 바둑판[x,y] 에 돌을 그린다
            //Rectangle r = new Rectangle(
            //  margin + 눈Size * x - 돌Size / 2,
            //  margin + 눈Size * y - 돌Size / 2,
            //  돌Size, 돌Size);
            //if (flag == false)
            //{
            //  if (imageFlag == false)
            //    g.FillEllipse(bBrush, r);
            //  else
            //  {
            //    Bitmap bmp = new Bitmap("../../Images/black.png");
            //    g.DrawImage(bmp, r);
            //  }
            //  lstRevive.Add(new Revive(x, y, STONE.black, stoneCnt));
            //  DrawStoneSequence(stoneCnt++, Brushes.White, r);
            //  flag = true;
            //  바둑판[x, y] = STONE.black;
            //}
            //else
            //{
            //  if (imageFlag == false)
            //    g.FillEllipse(wBrush, r);
            //  else
            //  {
            //    Bitmap bmp = new Bitmap("../../Images/white.png");
            //    g.DrawImage(bmp, r);
            //  }
            //  lstRevive.Add(new Revive(x, y, STONE.white, stoneCnt));
            //  DrawStoneSequence(stoneCnt++, Brushes.Black, r);
            //  flag = false;
            //  바둑판[x, y] = STONE.white;
            //}
            //CheckOmok(x, y);
        }