Проект "Случайные фразы"
Идея проекта заключается в составлении фраз из заданного набора слов. Пользователь имеет перед собой несколько списков, в каждом из которых находятся слова одной части речи в необходимой форме. Если взять по одному слову из каждого списка и затем разместить их в нужном порядке, получится грамматически верно составленное предложение. Однако слова подобраны так, что смысла в них зачастую - ни гроша. В этом и заключается изюминка, побуждающая детей к работе над проектом!
Итак, этапы разработки:
Создайте три списка (ListBox). В первом будут существительные в именительном падеже, во втором - наречия, в третьем глаголы третьего лица. В первом списке: Вася, Машина, Земля, Утка, Диван, Компьютер. Во втором списке: быстро, медленно, томно, редко, шумно, остро. В третьем списке: рисует, танцует, бегает, отдыхает, смотрит, болит. Набор слов можно менять по желанию аудитории. Хорошо срабатывает просьба назвать по очереди по одному слову для каждого списка. Добавьте также надпись и кнопку "Сгенерировать!". Запрограммируйте случайный выбор трех слов (по одному из каждого списка), их склеивание и вывод в надпись. Для начала позволь детям решить задачу "в лоб", используя число элементов вместо ListBox.Items.Count для получения верхней границы рандома
Измените число слов в каждом столбце: попроси всех предложить еще по одному слову. После этого покажи, что программа "сломалась", так как "магическое число" никто не менял. Позволь детям исправить ошибку. Затем спроси "А если мы захотим опять что-нибудь поменять?". На этом примере покажи необходимость автоматического получения числа слов в каждом столбце. Перепишите с использованием Items.Count
Добавьте возможность пользовательского изменения списка: добавьте по одной кнопке "Добавить слово!" по одному TextBox для каждого списка. Реализуйте удаление слов из списка (через событие SelectedIndexChanged у ListBox или по нажатию на Delete)
Добавьте еще несколько списков с другими частями речи. Дети сами придумывают, но ты следишь за связностью получающегося текста. Эта часть необязательна, но неплохо выступает в качестве домашнего задания
Проект "Крестики-нолики"
Наверняка и ты, и дети знаете обычную игру, которая всегда оканчивается "вничью", если оба соперника играют хорошо. Именно ее и предлагается реализовать!
Этапы разработки:
Добавьте на форму девять кнопок игрового поля (квадратом 3х3) и еще две управляющие: новая игра и выход. Кнопки игрового поля нужно сделать большими и квадратными, а текст из них удалить полностью. Подберите размер шрифта, подходящий к созданной "клетке" игрового поля: для этого постепенно увеличивайте шрифт до тех пор, пока символ "Х" не займет около 80% размера кнопки. Примените эту настройку ко всем остальным кнопкам игрового поля. Дайте элементам управления правильные имена. Для кнопок игрового поля подойдут "fieldButton01", что означает нулевой столбец и первую строку. Это должна быть средняя кнопка левого ряда. Спроси у ребят, почему нумерация идет с нуля. Ответ: массивы всегда нумеруются с нуля, и поэтому в программировании правильно именно так
Начните писать код. Создайте метод Init(), который настроит форму для новой игры. Он должен очищать игровое поле (другими словами - очищать текст кнопок). Создайте метод CheckForWin(), который будет проверять текущее состояние игрового поля: не победил ли кто? Создайте обработчики события Click по каждой кнопке игрового поля. В нем нужно проверить, что клетка пустая (button.Text == ""), и если да, записать туда символ "О" или "Х" в зависимости от текущего хода. Для отслеживания этого состояния заведите переменную bool Xmove = true (не забудьте в Init сбрасывать ее значение!). Она будет содержать значение, показывающее, кто из соперников сейчас ходит. После изменения содержимого кнопки нужно вызвать CheckForWin() для проверки состояния игрового поля. В нем - проверить все строки, столбцы и диагонали на наличие в них одинаковых непустых символов. Нашли - показываем сообщение типа "Выиграли Х! Хотите начать новую? Да/Нет". В зависимости от ответа пользователя игра либо закрывается, либо начинается новая. Не забудьте добавить проверку на заполненность всех клеток! В этом случае сообщение должно быть "Ничья! Новую игру? Да/Нет"
Перепишите игру с использованием массивов. Для проверки на победу используйте циклы
Если будут ребята, которые хотят серьезного программирования, начни с ними писать "Крестики-нолики v2.0": в них размер поля и длина линии, необходимой для победы, выбираются пользователем перед началом игры. Описание процесса создания этой игры выходит за рамки пособия, но мы уверены: ты справишься!
