黑白棋游戏色彩检测

时间:2013-01-04 19:15:47

标签: c# winforms visual-studio-2010 multidimensional-array

我正在使用c#重新创建经典游戏Reversi,以提高我的编程技巧 但是当我检查颜色时我遇到了问题。到目前为止,我已设法从左侧和顶部反转颜色,但它无法正常工作,只有当我击中板上的最后一个方块时才会反转颜色。

非常感谢任何帮助

这是一张图片,可以解释我的意思(代码如下)enter image description here意味着

我的代码:

namespace praprevers
{
    public partial class Form1 : Form
    {
        private Button[,] squares;
        //private Button[,] r0;
        public Form1()
        {
            InitializeComponent();

            squares = new Button[4, 4];
            squares = new Button[,] {
                                    {btn_0_0, btn_0_1, btn_0_2, btn_0_3},
                                    {btn_1_0, btn_1_1, btn_1_2, btn_1_3},
                                    {btn_2_0, btn_2_1, btn_2_2, btn_2_3},
                                    {btn_3_0, btn_3_1, btn_3_2, btn_3_3}
                                    };

        }

        int _turn = 0;
        private void DrawColor(object sender, EventArgs e)
        {

           Button b = sender as Button;
            string[] btnData = b.Name.Split('_');
            int x = int.Parse(btnData[1]);
            int y = int.Parse(btnData[2]);

            //check for possible combinations 
            int top = x - 3;
            int botton = x +3;

            int left = y - 3;
            int right = y + 3;

           for (int l = 0; l < 4; ++l)
            {
                if (top >= 0 && squares[top, y].BackColor == Color.Black)
                {
                    squares[top + l, y].BackColor = Color.Black;

                }
                else if (left >= 0 && squares[x, left].BackColor == Color.Black)
                {
                    squares[x, left + l].BackColor = Color.Black;
                }
           }
            if (_turn == 0)
            {
                _turn = 1;
                b.BackColor = Color.Black;


            }
            else
            {
                _turn = 0;
                b.BackColor = Color.Red;


            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            foreach (Button sqrr in squares)
            {
                sqrr.Click += new System.EventHandler(this.DrawColor);
            }

        }

    }
}

0 个答案:

没有答案