1. 數獨 4X4 遊戲程式設計

有點做太久

namespace Q1
{
    public partial class Form1 : Form
    {

        TextBox[,] tb = new TextBox[4, 4];
        public Form1()
        {
            InitializeComponent();
        }

        int? lcx;
        int? lcy;

        private void button3_Click(object sender, EventArgs e)
        {
            tryPlace(1);
        }

        private void button4_Click(object sender, EventArgs e)
        {
            tryPlace(2);
        }

        private void button5_Click(object sender, EventArgs e)
        {
            tryPlace(3);
        }

        private void button6_Click(object sender, EventArgs e)
        {
            tryPlace(4);
        }

        void tryPlace(int i)
        {
            if (lcx == null || lcy == null) return;
            tb[lcx.Value, lcy.Value].Text = i.ToString();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            int i = 0;
            foreach (var item in Controls)
            {
                if (!(item is TextBox tbb)) continue;
                int x = 3 - i % 4;
                int y = 3 - i / 4;
                tb[x, y] = tbb;
                tbb.Click += (e, k) =>
                {
                    lcx = x;
                    lcy = y;
                };
                i++;
            }
            int v = 0;
            tb[v, v++].Text = v.ToString();
            tb[v, v++].Text = v.ToString();
            tb[v, v++].Text = v.ToString();
            tb[v, v++].Text = v.ToString();
        }

        List<int> findNumber(int x, int y)
        {
            List<int> k = new List<int>() { 1, 2, 3, 4 };

            for (int i = 0; i < 4; i++)
            {
                if (tb[i, y].Text != "" && !tb[i, y].Text.Contains(","))
                    k.Remove(int.Parse(tb[i, y].Text));
                if (tb[x, i].Text != "" && !tb[x, i].Text.Contains(","))
                    k.Remove(int.Parse(tb[x, i].Text));
            }

            return k;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            for (int x = 0; x < 4; x++)
            {
                for (int y = 0; y < 4; y++)
                {
                    if (tb[x, y].Text == "")
                        tb[x, y].Text = String.Join(",", findNumber(x, y));
                }
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            sys.Text = "正確";
            for (int i = 0; i < 4; i++)
            {
                int xs = 0, ys = 0;
                for (int z = 0; z < 4; z++)
                {
                    if (tb[i, z].Text != "" && !tb[i, z].Text.Contains(","))
                    {
                        xs += int.Parse(tb[i, z].Text);
                    }
                    if (tb[z, i].Text != "" && !tb[z, i].Text.Contains(","))
                    {
                        ys += int.Parse(tb[z, i].Text);
                    }
                }
                if (xs != 10 || ys != 10)
                {
                    sys.Text = "錯誤";
                    return;
                }
            }
        }
    }
}

Last updated