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

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

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

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

2021-06-30 41
Назначение каждой метке случайного значка 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.012 с.