Назначение каждой метке случайного значка — КиберПедия 

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Назначение каждой метке случайного значка

2021-06-30 42
Назначение каждой метке случайного значка 0.00 из 5.00 0 оценок
Заказать работу

1. Перед добавлением следующего кода разберитесь в принципе его работы. Есть новое ключевое слово foreach,

private void AssignIconsToSquares ()

{

   foreach (Control control in tableLayoutPanel1.Controls)

{

   Label iconLabel = control as Label;

   if (iconLabel!= null)

   {

       int randomNumber = random.Next(icons.Count);

       iconLabel.Text = icons[randomNumber];

       icons.RemoveAt(randomNumber);

   }

}

}

2. Добавьте метод AssignIconsToSquares(), как показано в предыдущем шаге. В методе AssignIconsToSquares() имеется определенное нововведение: цикл foreach можно использовать в любое время для выполнения одного и того же действия несколько раз. В этом случае требуется выполнять одни и те же операторы для каждого элемента управления Label в TableLayoutPanel, как показано в следующем коде. Первая строка создает переменную с именем control, которая хранит каждый элемент управления по одному, пока у этого элемента управления есть инструкции в цикле, выполняемом для него.

foreach (Control control in tableLayoutPanel1.Controls)

{

}

Примечание: Используются имена iconLabel и control, поскольку они являются описательными. Можно заменить эти имена на любые другие и это не повлияет на работу кода (при условии, что имена будут изменены имена в каждом операторе внутри цикла).
Метод AssignIconsToSquares() перебирает все элементы управления Label в TableLayoutPanel и выполняет одни и те же операторы для каждого из них. Помните, что каждый из этих значков является буквой в шрифте Webdings, поэтому в этом методе они выражены как текст. Вы включили в список по два значка. Это позволяет назначить пару значков случайным элементам управления Label.
Внимательнее рассмотрите код, выполняемый внутри цикла foreach Этот код воспроизведен здесь.

Label iconLabel = control as Label;

if (iconLabel!= null)

{

int randomNumber = random.Next(icons.Count);

iconLabel.Text = icons[randomNumber];

   icons.RemoveAt(randomNumber);

}

Первая строка преобразует переменную control в метку с именем iconLabel. Следующая строка представляет собой оператор if, проверяющий и обеспечивающий успешное выполнение преобразования. Если преобразование выполняется, выполняются операторы в операторе if. Первая строка в операторе if создает переменную с именем randomNumber, содержащую случайное число, соответствующее одному из элементов списка значков. Для этого используется метод Next() объекта Random, созданного ранее. Метод Next возвращает случайное число. Эта строка также использует свойство Count списка значков для определения диапазона, из которого выбирается случайное число. В следующей строке один из элементов списка значков присваивается свойству Text этой метки. Пояснения относительно строки с комментариям приводятся далее в этом разделе. Наконец, последняя строка в операторе if удаляет из списка значок, добавленный в форму.
Помните, если вы не уверены, что делает какая-либо часть кода, можно навести указатель мыши на элемент кода и посмотреть отображаемую подсказку. Можно также выполнять каждую строку кода пошагово после запуска программы, воспользовавшись отладчиком Visual Studio.

3. Чтобы быстро заполнить игровое поле значками, необходимо вызвать метод AssignIconsToSquares() сразу после запуска программы. Добавьте оператор после вызова метода InitializeComponent() в Form1 constructor. Так форма будет вызывать новый метод для настройки перед отображением. Конструкторы вызываются при создании нового объекта, такого как класс или структура.

public Form1 ()

{

InitializeComponent();

AssignIconsToSquares();

}

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

4. Закройте программу, а затем снова запустите ее. Обратите внимание, что теперь каждой метке назначены другие значки, как показано на следующем рисунке.

Игра "Подбери пару!" со случайными значками
Значки видимы, поскольку они не были скрыты. Чтобы скрыть их от игрока, можно задать для свойства ForeColor каждого элемента управления Label тот же цвет, что и у свойства BackColor.

5. Чтобы скрыть значки, остановите программу и удалите метки комментариев с соответствующей строки кода в цикле For Each.

iconLabel.ForeColor = iconLabel.BackColor;

6. На панели меню нажмите кнопку Сохранить все, чтобы сохранить программу, а затем запустите программу. Похоже, что значки исчезли. Отображается только голубой фон. Однако значки назначены случайным образом и по-прежнему существуют. Поскольку значки имеют тот же цвет, что и фон, они невидимы, т. е. скрыты от игрока. Наконец, игра станет неинтересной, если игрок будет сразу видеть все значки!

Игра "Подбери пару!" работает следующим образом.

1. Когда игрок выбирает один из квадратов со скрытым значком, программа показывает значок игроку, изменяя цвет значка на черный.

2. После этого игрок выбирает другой скрытый значок.

3. Если значки совпадают, они остаются видимыми. Если нет, оба значка снова скрываются.
Чтобы программа работала именно так, добавьте обработчик событий Click, изменяющий цвет выбираемого элемента управления Label.


Поделиться с друзьями:

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.006 с.