1

プログラミングの腕を磨くために、昔のゲームのリバーシをc#で再現しているのですが、色のチェックに困っています。これまでのところ、左と上から色を反転させることができましたが、正しく機能せず、ボードの最後の四角を打ったときにのみ色が反転します。

どんな助けでも大歓迎です

ここに画像の説明を入力これは私が何を意味するかを説明するかもしれない画像です(コードは以下にあります)

私が持っているコード:

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);
            }

        }

    }
}
4

0 に答える 0