Добавление случайного объекта и списка значков — КиберПедия 

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

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Добавление случайного объекта и списка значков

2021-06-30 31
Добавление случайного объекта и списка значков 0.00 из 5.00 0 оценок
Заказать работу

Задание свойств формы

1. В окне Свойства задайте следующие значения свойств формы.

Измените свойство формы Text с Form1 на Matching Game. Этот текст отображается в верхней части окна игры.

Установите размер формы на 550 пикселей в ширину и 550 пикселей в высоту. Для этого установите для свойства Size значение 550, 550 или перетащите угол формы, чтобы требуемый размер отобразился в правом нижнем углу интегрированной среды разработки (IDE).

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

3. Перетащите элемент управления TableLayoutPanel из категории Контейнеры панели элементов, а затем установите для него следующие свойства.

1. Задайте для свойства BackColor значение CornflowerBlue. Для этого откройте диалоговое окно BackColor, щелкнув стрелку раскрывающегося списка рядом со свойством BackColor в окне Свойства. Затем перейдите на вкладку Веб в диалоговом окне BackColor, чтобы просмотреть список доступных имен цветов.
 Примечание:Цвета упорядочены не по алфавиту, и цвет CornflowerBlue находится в нижней части списка.

2. Задайте для свойства Dock значение Fill, нажав кнопку раскрывающегося списка рядом со свойством и щелкнув большую среднюю кнопку. Таблица будет растянута по всей форме.

3. Для свойства CellBorderStyle установите значение Inset. Между ячейками поля появятся видимые границы.

4. Нажмите треугольную кнопку в правом верхнем углу элемента управления TableLayoutPanel для отображения меню задач этой панели.

5. В меню задач дважды щелкните Добавить строку для добавления двух дополнительных строк, а затем дважды щелкните Добавить столбец для добавления двух дополнительных столбцов.

6. В меню задач выберите команду Изменить строки и столбцы, чтобы открыть окно Стили столбцов и строк. Выберите каждый из столбцов, нажмите кнопку Процент и установите ширину каждого столбца равной 25 процентам от общей ширины. Затем в раскрывающемся списке в верхней части окна выберите Строки и задайте высоту каждой строки равной 25 процентам. По завершении нажмите кнопку ОК.
Теперь на панели макета таблицы должна быть видна сетка размером 4х4, состоящая из шестнадцати одинаковых по размеру квадратных ячеек. Эти строки и столбцы задают места, в которых позже появятся изображения значков.

7. Убедитесь, что TableLayoutPanel выбран в редакторе формы. На это будет указывать надпись tableLayoutPanel1 в верхней части окна Свойства. Если этот элемент управления не выбран, выберите элемент управления TableLayoutPanel в форме или в раскрывающемся списке в верхней части окна Свойства.
При выбранном элементе управления TableLayoutPanel откройте панель элементов и добавьте элемент управления Label (находится в категории Стандартные элементы управления) в левую верхнюю ячейку TableLayoutPanel. Теперь элемент управления Label должен быть выбран в интегрированной среде разработки. Задайте для него следующие свойства:

Убедитесь, что свойство BackColor имеет значение CornflowerBlue.

Задайте свойству AutoSize значение False.

Задайте для свойства Dock значение Fill.

Задайте для свойства TextAlign значение MiddleCenter, нажав кнопку раскрывающегося списка рядом со свойством, а затем щелкнув среднюю кнопку. Это необходимо, чтобы значок отображался в середине ячейки.

Выберите свойство Font. Должна появиться кнопка с многоточием (…).

Нажмите кнопку с многоточием и установите для параметра Font значение Webdings, для параметра Font Style — значение Bold, а для параметра Size — значение 48.

Установите свойство Text равным букве с.
Теперь в левой верхней ячейке TableLayoutPanel должен располагаться черный квадрат на синем фоне, который выравнивается по центру.
 Примечание: Шрифт Webdings является шрифтом значков, который поставляется с операционной системой Windows. В вашей игре "Подбери пару!" игроку необходимо найти пары одинаковых значков, поэтому используйте этот шрифт для отображения значков. Вместо ввода буквы с в свойство Text попробуйте вводить разные буквы, чтобы увидеть, какие значки отображаются. Восклицательный знак соответствует пауку, прописная буква N — глазу, а запятая — перцу чили.

8. Выберите элемент управления Label и скопируйте его в следующую ячейку TableLayoutPanel. (Нажмите сочетание клавиш CTRL+C или в строке меню выберите Правка > Копировать.) Затем вставьте его. (Нажмите сочетание клавиш CTRL+V или в строке меню выберите Правка > Вставить.) Во второй ячейке элемента управления TableLayoutPanel появится копия первого элемента управления Label. Вставьте его снова, и в третьей ячейке появится еще один элемент управления Label. Продолжайте вставлять элементы управления Label, пока все ячейки не будут заполнены.
 Примечание: Если выполнить команду вставки слишком много раз, интегрированная среда разработки добавит новую строку в TableLayoutPanel, чтобы появилось место для добавления нового элемента управления Label. Можно выполнить откат. Чтобы удалить новую ячейку, нажмите сочетание клавиш CTRL+Z или в меню выберите Правка > Отменить.
Теперь ваша форма готова. Она будет выглядеть примерно так, как показано на рисунке ниже.

Исходная форма игры "Подбери пару!"

На следующем шаге будет создан набор парных символов для игры. Каждый символ добавляется в две случайные ячейки в TableLayoutPanel в форме. Для этого используются два оператора new, создающие два объекта. Первый является объектом Random. Такой же объект использовался в игре "Математическая головоломка". Он используется в этом коде для случайного выбора ячейки в TableLayoutPanel. Второй объект, который может показаться вам новым, это объект List<T>, используемый для хранения случайно выбранных символов.

Добавление ссылок на метки

public partial class Form1: Form

{

Label firstClicked = null;

// secondClicked points to the second Label control

// that the player clicks

Label secondClicked = null;

1.

2.  Важно!
Используйте элемент управления языка программирования в правом верхнем углу этой страницы, чтобы просмотреть фрагмент кода на C# или Visual Basic.


Ссылочные переменные похожи на операторы, которые вы использовали для добавления объектов (таких как объекты Timer, List<T> и Random) в форму. Но эти операторы не приводят к появлению в форме двух дополнительных элементов управления Label, так как в них не используется ключевое слово new. Без ключевого слова new объект не создается. Именно поэтому firstClicked и secondClicked называются ссылочными переменными — они просто отслеживают (или ссылаются на) объекты Label.
Когда переменная не отслеживает объект, ей задается специальное зарезервированное значение — null в C# и Nothing в Visual Basic. Поэтому при запуске программы переменным firstClickedи secondClicked задается значение null или Nothing. Это означает, что переменные ничего не отслеживают.

3. Измените свой обработчик событий Click для использования новой ссылочной переменной firstClicked. Удалите последний оператор (label_Click()) в методе обработчика событий clickedLabel.ForeColor = Color.Black; и замените его последующим оператором if. (Не забудьте включить комментарий и весь оператор if).

4. C#

5. Копировать

/// <summary>

/// Every label's Click event is handled by this event handler

/// </summary>

/// <param name="sender"> The label that was clicked </param>

/// <param name="e"></param>

private void label_Click (object sender, EventArgs e)

{

Label clickedLabel = sender as Label;

if (clickedLabel!= null)

{

   // If the clicked label is black, the player clicked

   // an icon that's already been revealed --

   // ignore the click

   if (clickedLabel.ForeColor == Color.Black)

       return;

   // If firstClicked is null, this is the first icon

   // in the pair that the player clicked,

   // so set firstClicked to the label that the player

   // clicked, change its color to black, and return

   if (firstClicked == null)

   {

       firstClicked = clickedLabel;

       firstClicked.ForeColor = Color.Black;

       return;

   }

}

}

6.

7. Сохраните и выполните программу. Выберите одну из меток и появится ее значок.

8. Выберите следующую метку и обратите внимание, что ничего не происходит. Программа уже отслеживает первую метку, которую выбрал игрок, поэтому firstClicked не равно null в C# или Nothing в Visual Basic. Когда оператор if проверяет, имеет ли переменная firstClicked значение null или Nothing, он обнаруживает, что это не так, и не выполняет операторы в блоке if. Поэтому только первый выбранный значок становится черным, а другие значки остаются невидимыми, как показано на следующем рисунке.

**Игра "Подбери пару!"*,_ _отображающая один значок*

Затем добавьте в игру "Подбери пару" элемент управления Timer. Таймер ожидает заданное число миллисекунд, а затем вызывает событие, называемое тактом. Это бывает удобно для запуска действия или повтора действия с определенной периодичностью. В этом случае таймер нужен для того, чтобы игроки могли выбрать два значка, а если они не совпадают, скрыть их через небольшой отрезок времени.

Добавление таймера

1. На панели элементов в конструкторе Windows Forms выберите Таймер (в категории Компоненты), а затем нажмите клавишу ВВОД или дважды щелкните таймер, чтобы добавить его в форму. Значок с именем таймера Timer1 должен появиться в пространстве под формой, как показано на следующем рисунке.

Таймер
 Примечание:Если панель элементов пуста, проверьте, что перед ее открытием был выбран конструктор форм, а не код формы.

2. Щелкните значок Timer1, чтобы выбрать таймер. В окне Свойства переключитесь с просмотра событий на просмотр свойств. Затем задайте для свойства Interval значение 750, но оставьте для свойства Enabled значение False. Свойство Interval задает время ожидания между тактами таймера или время активации события Tick. Значение 750 соответствует трем четвертям секунды (750 миллисекунд), по истечении которых происходит событие Tick. Метод Start() для запуска таймера будет вызван только после того, как игрок выберет вторую метку.

3. Выберите значок элемента управления "Таймер" в конструкторе Windows Forms, а затем нажмите клавишу ВВОД или дважды щелкните таймер, чтобы добавить пустой обработчик событий Tick. Замените код следующим кодом или вручную введите следующий код в обработчик событий.

private void timer1_Tick (object sender, EventArgs e)

{

  timer1.Stop();

firstClicked.ForeColor = firstClicked.BackColor;

secondClicked.ForeColor = secondClicked.BackColor;

   firstClicked = null;

secondClicked = null;

}
Обработчик события Tick выполняет три действия. Сначала он останавливает таймер, вызывая метод Stop(). Затем он использует две ссылочные переменные, firstClicked и secondClicked, чтобы снова сделать невидимыми значки двух меток, которые выбрал игрок. Наконец, он сбрасывает значения ссылочных переменных firstClicked и secondClicked на null. Это важный шаг, поскольку таким образом программа сбрасывает себя. Теперь она не отслеживает какие-либо элементы управления Label и снова готова к выбору метки игроком.
 Примечание: У объекта Timer есть метод Start(), который запускает таймер, и метод Stop(), который останавливает его. Если в окне Свойства свойству таймера Enabled задать значение True, он начнет отсчет сразу же, как только запустится программа. Но если в этом свойстве оставить значение False, отсчет не начнется, пока не будет вызван метод Start(). Как правило, таймер запускает событие Tick снова и снова, используя свойство Interval, чтобы определить, сколько миллисекунд ждать между тактами. Обратите внимание на вызов метода таймера Stop() внутри события Tick. Таймер переходит в режим однократного действия, означающий, что при вызове метода Start() он ожидает в течение заданного интервала, запускает одно событие Tick, а затем останавливается.

4. Чтобы увидеть работу нового таймера, перейдите к редактору кода и добавьте следующий код в начало и конец метода обработчика событий label_Click(). (Вы добавляете два оператора if в начало метода и три оператора в конец. Остальная часть метода остается неизменной.)

private void label_Click (object sender, EventArgs e)

{  if (timer1.Enabled == true)

   return;

Label clickedLabel = sender as Label;

if (clickedLabel!= null)

{  if (clickedLabel.ForeColor == Color.Black)

       return;

   if (firstClicked == null)

   {

       firstClicked = clickedLabel;

       firstClicked.ForeColor = Color.Black;

       return;

   }

   secondClicked = clickedLabel;

   secondClicked.ForeColor = Color.Black;

  timer1.Start();

}

}

5. Код в начале метода проверяет, запущен ли таймер, обращаясь к значению свойству Enabled. Таким образом, если игрок выбирает первый и второй элемент управления Label и таймер запускается, выбор третьего элемента управления Label ни к чему не приведет. Он также не позволяет проигрывателю быстро щелкнуть третий раз, прежде чем в игре можно будет щелкнуть первый раз.
Код в конце метода задает ссылочную переменную secondClicked таким образом, чтобы она отслеживала второй элемент управления Label, который щелкнул игрок, и задает этой метке черный цвет значка, чтобы сделать ее видимой. Затем таймер запускается в однократном режиме, то есть ожидает 750 миллисекунд и после этого вызывает одно событие Tick. Обработчик событий Tick таймера скрывает два значка и сбрасывает значения ссылочных переменных firstClicked и secondClicked; в результате форма будет снова готова к выбору игроком пары значков.

6. Сохраните и выполните программу. Выберите значок, и он станет видимым.

7. Выберите другой значок. Он появляется на короткое время, а затем оба значка исчезают. Повторите это несколько раз. В форме отслеживаются первый и второй значки, которые вы выбрали, и используется таймер, задающий время задержки до исчезновения значков.

Игра работает правильно, пока игрок выбирает только пары значков, которые не совпадают. Но давайте посмотрим, что произойдет, когда игрок выберет совпадающую пару. Вместо того чтобы значки исчезали благодаря включению таймера (с помощью метода Start()), игра должна сбрасываться и больше не отслеживать метки с помощью ссылочных переменных firstClicked и secondClicked. Но цвета двух меток, которые были выбраны, не должны сбрасываться.

Задание свойств формы

1. В окне Свойства задайте следующие значения свойств формы.

Измените свойство формы Text с Form1 на Matching Game. Этот текст отображается в верхней части окна игры.

Установите размер формы на 550 пикселей в ширину и 550 пикселей в высоту. Для этого установите для свойства Size значение 550, 550 или перетащите угол формы, чтобы требуемый размер отобразился в правом нижнем углу интегрированной среды разработки (IDE).

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

3. Перетащите элемент управления TableLayoutPanel из категории Контейнеры панели элементов, а затем установите для него следующие свойства.

1. Задайте для свойства BackColor значение CornflowerBlue. Для этого откройте диалоговое окно BackColor, щелкнув стрелку раскрывающегося списка рядом со свойством BackColor в окне Свойства. Затем перейдите на вкладку Веб в диалоговом окне BackColor, чтобы просмотреть список доступных имен цветов.
 Примечание:Цвета упорядочены не по алфавиту, и цвет CornflowerBlue находится в нижней части списка.

2. Задайте для свойства Dock значение Fill, нажав кнопку раскрывающегося списка рядом со свойством и щелкнув большую среднюю кнопку. Таблица будет растянута по всей форме.

3. Для свойства CellBorderStyle установите значение Inset. Между ячейками поля появятся видимые границы.

4. Нажмите треугольную кнопку в правом верхнем углу элемента управления TableLayoutPanel для отображения меню задач этой панели.

5. В меню задач дважды щелкните Добавить строку для добавления двух дополнительных строк, а затем дважды щелкните Добавить столбец для добавления двух дополнительных столбцов.

6. В меню задач выберите команду Изменить строки и столбцы, чтобы открыть окно Стили столбцов и строк. Выберите каждый из столбцов, нажмите кнопку Процент и установите ширину каждого столбца равной 25 процентам от общей ширины. Затем в раскрывающемся списке в верхней части окна выберите Строки и задайте высоту каждой строки равной 25 процентам. По завершении нажмите кнопку ОК.
Теперь на панели макета таблицы должна быть видна сетка размером 4х4, состоящая из шестнадцати одинаковых по размеру квадратных ячеек. Эти строки и столбцы задают места, в которых позже появятся изображения значков.

7. Убедитесь, что TableLayoutPanel выбран в редакторе формы. На это будет указывать надпись tableLayoutPanel1 в верхней части окна Свойства. Если этот элемент управления не выбран, выберите элемент управления TableLayoutPanel в форме или в раскрывающемся списке в верхней части окна Свойства.
При выбранном элементе управления TableLayoutPanel откройте панель элементов и добавьте элемент управления Label (находится в категории Стандартные элементы управления) в левую верхнюю ячейку TableLayoutPanel. Теперь элемент управления Label должен быть выбран в интегрированной среде разработки. Задайте для него следующие свойства:

Убедитесь, что свойство BackColor имеет значение CornflowerBlue.

Задайте свойству AutoSize значение False.

Задайте для свойства Dock значение Fill.

Задайте для свойства TextAlign значение MiddleCenter, нажав кнопку раскрывающегося списка рядом со свойством, а затем щелкнув среднюю кнопку. Это необходимо, чтобы значок отображался в середине ячейки.

Выберите свойство Font. Должна появиться кнопка с многоточием (…).

Нажмите кнопку с многоточием и установите для параметра Font значение Webdings, для параметра Font Style — значение Bold, а для параметра Size — значение 48.

Установите свойство Text равным букве с.
Теперь в левой верхней ячейке TableLayoutPanel должен располагаться черный квадрат на синем фоне, который выравнивается по центру.
 Примечание: Шрифт Webdings является шрифтом значков, который поставляется с операционной системой Windows. В вашей игре "Подбери пару!" игроку необходимо найти пары одинаковых значков, поэтому используйте этот шрифт для отображения значков. Вместо ввода буквы с в свойство Text попробуйте вводить разные буквы, чтобы увидеть, какие значки отображаются. Восклицательный знак соответствует пауку, прописная буква N — глазу, а запятая — перцу чили.

8. Выберите элемент управления Label и скопируйте его в следующую ячейку TableLayoutPanel. (Нажмите сочетание клавиш CTRL+C или в строке меню выберите Правка > Копировать.) Затем вставьте его. (Нажмите сочетание клавиш CTRL+V или в строке меню выберите Правка > Вставить.) Во второй ячейке элемента управления TableLayoutPanel появится копия первого элемента управления Label. Вставьте его снова, и в третьей ячейке появится еще один элемент управления Label. Продолжайте вставлять элементы управления Label, пока все ячейки не будут заполнены.
 Примечание: Если выполнить команду вставки слишком много раз, интегрированная среда разработки добавит новую строку в TableLayoutPanel, чтобы появилось место для добавления нового элемента управления Label. Можно выполнить откат. Чтобы удалить новую ячейку, нажмите сочетание клавиш CTRL+Z или в меню выберите Правка > Отменить.
Теперь ваша форма готова. Она будет выглядеть примерно так, как показано на рисунке ниже.

Исходная форма игры "Подбери пару!"

На следующем шаге будет создан набор парных символов для игры. Каждый символ добавляется в две случайные ячейки в TableLayoutPanel в форме. Для этого используются два оператора new, создающие два объекта. Первый является объектом Random. Такой же объект использовался в игре "Математическая головоломка". Он используется в этом коде для случайного выбора ячейки в TableLayoutPanel. Второй объект, который может показаться вам новым, это объект List<T>, используемый для хранения случайно выбранных символов.

Добавление случайного объекта и списка значков

1. В обозревателе решений выберите Form1.cs,, а затем в строке меню выберите Вид > Код. В качестве альтернативы можно нажать клавишу F7 или дважды щелкнуть Form1 в обозревателе решений.
Будет показан модуль кода формы Form1.

2. В имеющийся код добавьте следующий фрагмент.

public partial class Form1: Form

{

Random random = new Random();

List< string > icons = new List< string >()

{

   "!", "!", "N", "N", ",", ",", "k", "k",

   "b", "b", "v", "v", "w", "w", "z", "z"

};

3. При добавлении объекта List обратите внимание на открывшееся окно IntelliSense.

Окно IntelliSense
 Примечание
Окно IntelliSense отображается только при вводе кода вручную. При копировании и вставке кода оно не отображается.
Код проще понять, если рассматривать его (и примечания) небольшими частями. Объекты List можно использовать для отслеживания элементов множества различных типов. Список может содержать числа, значения true или false, текст и другие объекты. Объект List также может содержать другие объекты List. Объект List состоит из элементов, и каждый список содержит только один тип элементов. Поэтому список чисел может содержать только числа. В него нельзя добавить текст. Аналогично нельзя добавлять числа в список значений true или false.
При создании объекта List с помощью оператора new необходимо указать ему, данные какого типа будут храниться в этом объекте. Вот почему подсказка в верхней части окна IntelliSense указывает на тип элементов списка. Вот что значит код List<string>: это объект List, содержащий элементы типа string. Строка используется программой для хранения текста, о чем и сообщается в подсказке справа от окна IntelliSense.

Если значки оказываются в одной и той же ячейке каждую игру, игра становится слишком простой. Чтобы избежать этого, назначайте значки элементам управления Label случайным образом, используя для этого метод AssignIconsToSquares().


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

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

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

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

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



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

0.074 с.