Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм для Игры королевский квадрат 
:(
    Опции темы
Abbath1349
Дата 11.6.2011, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



Пишу игру королевский квадрат.Имеется двумерный массив лейблов 3*3. Подскажите с алгоритмом как лучше сделать. Нужен алгоритм,чтоб при клике на ячейке квадрата(Label) он определял можно ли записать в неё букву(Если рядом есть квадрат с буквой то можно если нету то нельзя). 
Пробовал через циклы,но тут он до ума не доведен да и мне кажется не лучший это способ. 
Код

 private void Label_click(object sender, EventArgs e)
        {
            int imin,imax,jmin,jmax;
            
            Label lclick = (Label)sender;
            Point n =(Point)lclick.Tag;
            int x = n.X;
            int y = n.Y;

            for (int i = 0; i < 5; i++)
                for (int j = 0; j < 5; j++)
                    if (Royals[i, j].Text != String.Empty)
                        IsEmpty[i, j] = false;

                    if (!IsEmpty[x, y])
                        textBox5.Text = "Uncorrect";
                    else
                    {
                        if (x > 0) imin = x - 1;
                        else imin = x;
                        if (y > 0) jmin = y - 1;
                        else jmin = y;
                        if (x < 4) imax = x + 1;
                        else imax = x;
                        if (y < 4) jmax = y + 1;
                        else jmax = y;
                        for (int i = imin; i <= imax; i++)
                            for (int j = jmin; j <=jmax; j++)
                                if (!IsEmpty[i, j])
                                {
                                    textBox5.Text = "Correct";
                                 
                                    Royals[i, j].Text = "X";
                                    goto Finish;
                                }
                                else
                                    textBox5.Text = "XX";
                        
                    }
                Finish:
                    textBox5.Text = "XXX";
        }



Это сообщение отредактировал(а) Abbath1349 - 11.6.2011, 16:59
PM MAIL   Вверх
Peter
Дата 13.6.2011, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 28.7.2003
Где: Ставрополь

Репутация: нет
Всего: 1



Да, задание невнятное. Массив как будто 3 на 3, а в программе - 5 на 5. Да и сколько ячеек проверяется? Одна или все?
Если квадрат 3 на 3 и проверяем всего лишь одну ячейку с координатами (x, y), то:
Код
for (int i = 0; i < 3; i++)
  for (int j = 0; j < 3; j++)
    IsEmpty[i][j] = String.IsNullOrEmpty(Royals[i][j].Text);
if(!IsEmpty[x][y])
  textBox5.Text = "Incorrect";
else
{
  bool bCanBeWritten = false;
  if(x > 0 && IsEmpty[x-1][y])
    bCanBeWritten = true;
  if(y > 0 && IsEmpty[x][y-1])
    bCanBeWritten = true;
  if(x < 3 && IsEmpty[x+1][y])
    bCanBeWritten = true;
  if(y < 3 && IsEmpty[x][y+1])
    bCanBeWritten = true;
  // and so on...
}



--------------------
всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23).
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0356 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.