Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.02.2011, 20:28   #1
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
Вопрос судоку

захотел написать программу для игры в судоку. но возникла проблема с заполнением двумерного массива случайными числами и проверкой с правилами игры. я пока ещё новичок в этом дле и пытаюсь делать как знаю и как проще. пока сделал это
Код:
 private void button11_Click(object sender, EventArgs e)
        {
            Random wer = new Random();
            int[,] m = new int[9, 9]; int o;

            for (int i = 0; i < 9; i++)
                for (int j = 0; j < 9; j++)
                {
                    m[i, j] = wer.Next(1,9);
                }

            for (int i = 0; i < 7; i++)
            {
              for (int j = 0; j < 7; j++)
              {
                for (int y = i + 1; y < 8; y++)
                {
                    if (m[i, j] == m[y, j])
                    {
                        o = wer.Next(1, 9);
                       if (o != m[i,j])

                        m[y, j] = o ;
                    } 
                } 
              } 

            }

            for (int i = 0; i <= 8; i++)
                for (int j = 0; j <= 8; j++)
                {
                    mas[n] = m[i,j];
                    n++;
                }
            n = 0;
            foreach (Control c in this.Controls)
            {
                if (c is TextBox)
                {
                    ((TextBox)c).Text = mas[n].ToString();
                    n++;
                }
            }
            }
        }

Последний раз редактировалось sergio11; 18.02.2011 в 08:12.
sergio11 вне форума Ответить с цитированием
Старый 17.02.2011, 22:56   #2
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Я бы посоветовал заполнить сперва правильным набором цифр от 1 до 9, а потом перемешать, не нарушая правил игры.... и случайно уже повыдергивать цифры
dampirik вне форума Ответить с цитированием
Старый 18.02.2011, 07:51   #3
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

а как перемешать их можно?
sergio11 вне форума Ответить с цитированием
Старый 18.02.2011, 12:09   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Удачи: http://www.codeproject.com/KB/game/sudokuincsharp.aspx
Hollander вне форума Ответить с цитированием
Старый 18.02.2011, 12:40   #5
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Hollander Посмотреть сообщение
на этом сайте я был и в обще в интернете искал по этому поводу, НО мне достаточно трудно разобрть чужой код, хоть и комментируемый.
sergio11 вне форума Ответить с цитированием
Старый 18.02.2011, 12:58   #6
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

мне, если не трудно, код где идет формирование двумерного массива
sergio11 вне форума Ответить с цитированием
Старый 18.02.2011, 17:58   #7
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

А зачем 2-мерный, тебе же надо 9*9.

Вообще судя по коду этот судоку не очень универсальный. Вот что он делает:
1. У него есть шаблон таблицы:
private int[,] _originalSet = {{7,9,2,3,5,1,8,4,6},
{4,6,8,9,2,7,5,1,3},
{1,3,5,6,8,4,7,9,2},
{6,2,1,5,7,9,4,3,8},
{5,8,3,2,4,6,1,7,9},
{9,7,4,8,1,3,2,6,5},
{8,1,6,4,9,2,3,5,7},
{3,5,7,1,6,8,9,2,4},
{2,4,9,7,3,5,6,8,1}
};

Т.е. тебе надо либо самому насоздавать правильных шаблонов либо научиться их правильно генерировать.
2. Зачем в зависимости от уровня сложности он вызывает метод UnMask(), где прячет клетки в случайном порядке.
3. Ну а дальше сама игра
Hollander вне форума Ответить с цитированием
Старый 18.02.2011, 22:03   #8
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

спасибо. за разъяснение. попробую с шаблонами.
sergio11 вне форума Ответить с цитированием
Старый 09.04.2011, 21:33   #9
sergio11
Пользователь
 
Аватар для sergio11
 
Регистрация: 18.02.2010
Сообщений: 96
По умолчанию

Возникла такая необходимость как поставить условие, которое проверяло бы есть ли элемент или нет
вот пример:
Код:
 private void textBox1_MouseDown(object sender, MouseEventArgs e)
        {
            if ()//нужно придумать усл.
                ((TextBox)sender).Text = Convert.ToString(label1.Text[8]);
            else
                MessageBox.Show("Нажмите любую кнопку");
        }
в общем если label1.Text[8] есть, то вывести в текстбокс его, а если нет , то сообщение об ошибке.
sergio11 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Судоку на Делфи Killerkod Помощь студентам 7 14.06.2011 14:52
Алгоритм судоку Rusprover Помощь студентам 3 13.12.2010 04:09
Судоку zmey31313 Софт 7 13.05.2010 16:12
Delphi судоку fawr Помощь студентам 4 18.03.2010 23:58
Создание судоку Beliuk Паскаль, Turbo Pascal, PascalABC.NET 3 18.03.2010 16:15