Вывод игрового поля для судоку. C#

208
30 мая 2018, 12:20

У меня имеется двумерный массив, в котором хранятся различные значения. Мне необходимо реализовать вывод этих данных на форму, алгоритм должен быть примерно такой

Если значение массива равно нулю, то выводится NumericUpDown, чтобы пользователь сам ввел данные, если значение массива больше нуля, выводится Label со значением массива. Сам массив

int[,] EasyArray = new int[,]  {
            {1,0,1,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,5,0,0,0},
            {0,0,9,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,0},
            {0,0,0,0,0,0,0,0,1}
        };  

Так генерируется Label

    Label label = new Label();
    label.Location = new Point(30,30);
    label.Size = new Size(30,30);
    label.Text = "tyt bydet vipyska iz massiva";
    Controls.Add(label);

Так генерируется NumericUpDown

        NumericUpDown numericUpDown = new NumericUpDown();
        numericUpDown.Location = new Point(x,y);
        numericUpDown.Size = new Size(30,30);
        Controls.Add(numericUpDown);

Я пытался реализовать это с помощью if-else, но что-то шло не так и если программа замечала хотя-бы одно верное значение, то она его и выводила, то есть проверка else не происходила.

Подскажите алгоритм или готовый код если сможете, пожалуйста!

Answer 1

В итоге, после проб и ошибок, у меня получилось сделать все как я хотел. Происходит проверка по массиву, и матрица выводится ровно, то есть первая строка 9 элементов, потом переход и так 9 строк (до этого у меня выводилось все в ряд). Вот итоговый код:

void EasyToolStripMenuItemClick(object sender, EventArgs e)
    {
        int k=0;
        int l=30;
        int scoreX=0;
        int scoreY=0;
        int[,] EasyArray = new int[,] {
            {1,0,6,0,0,0,0,0,6},
            {5,0,0,8,0,0,0,0,8},
            {0,0,0,0,4,0,0,0,7},
            {0,0,0,0,0,0,0,0,6},
            {0,0,0,0,0,0,6,0,5},
            {0,0,0,0,2,0,0,0,4},
            {0,0,0,0,0,0,0,0,3},
            {0,0,0,0,0,0,0,0,2},
            {0,0,0,0,0,0,0,0,1}
        };
                for (int i = 0; i < 9; i++) {
                    for (int j = 0; j < 9; j++) {
                if(EasyArray[i,j] == 0) {
                        NumericUpDown numericUpDown = new NumericUpDown();
                        numericUpDown.Maximum = 9;
                        numericUpDown.Location = new Point(k,l);
                        numericUpDown.Size = new Size(30,30);
                        Controls.Add(numericUpDown);
                        scoreX++;
                    k=k+30;
                } else {
                        Label label = new Label();
                        label.Location = new Point(k,l);
                        label.Size = new Size(30,30);
                        label.Text = Convert.ToString(EasyArray[i,j]);
                        Controls.Add(label);
                    scoreY++;
                    k=k+30;
                }
            }
            l=l+30;
            k=0;
        }

P.S. Да, код ужасный, я постараюсь его почистить позже, я плохо разобрался с классами и прочим. Надеюсь что моя тема кому-нибудь поможет. Тому кто отвечал - спасибо!

READ ALSO
Вывести Image в GridControl DevExpress

Вывести Image в GridControl DevExpress

При отображении данных в GridControl столкнулся с такой сложностью: Имеется свойство в в модели для получения изображения из byte[]:

230
VK API | Лимит символом для отправки

VK API | Лимит символом для отправки

Данный текст не отправляется, но если отправлять в ручную, то отправка идет успешно

229
Разбить данные для отправки по UDP

Разбить данные для отправки по UDP

Есть данные 8 Кб, нужно по протоколу UDP отправить их клиенту по 32 байтаКак правильно разбить данные? и как правильно их принять?

174
Присвоить имя изображению

Присвоить имя изображению

Пользователь загружает текст и изображение в методе Get, а в Post методе над этим изображением происходят некие действия и создается новое изображение,которое...

195