Magic 8 ball - игрушка, о которой не знает только ленивый. Принцип работы прост. Игрок задает вопрос и трясет шар в руках. После тряски в специальном месте на шаре (или на экране, в зависимости от "технологичности" игрушки) отображается случайный ответ (ответы делятся на 4 группы: положительные, нерешительно положительные, отрицательные, нейтральные). Версий игры множество, в их числе есть и десктопные.
В этой статье мы разберем процесс создания десктопного аналога этой игрушки на C# (Windows Forms) в Microsoft Visual Studio 2015.
Нам понадобится одна единственная форма (назовем ее MainForm.cs) со следующими элементами:
- PictureBox1 (PictureBox) - в свойствах выберем значение Top для поля "Dock"
- Label1 (labelT) - "Задай свой вопрос"
- Button1 (ButAnswer) - "Получить ответ"
- TextBox1 (tbAnswer) - в свойствах укажем полю "ReadOnly" значение True, полю "TextAlign" значение Center
Подберем изображение старца в гугле, я остановился на этом:
В описании игры на Википедии приведен список возможных ответов игрушки. Можно воспользоваться ими.
Положительные:
- Бесспорно
- Предрешено
- Никаких сомнений
- Определенно да
- Можешь быть уверен в этом
Нерешительно-положительные:
- Мне кажется - «да»
- Вероятнее всего
- Хорошие перспективы
- Знаки говорят - «да»
- Да
Нейтральные:
- Пока не ясно, попробуй снова
- Спроси позже
- Лучше не рассказывать
- Сейчас нельзя предсказать
- Сконцентрируйся и спроси опять
Отрицательные:
- Даже не думай
- Мой ответ - «нет»
- По моим данным - «нет»
- Перспективы не очень хорошие
- Весьма сомнительно
Теперь закидываем в PictureBox наше изображение и переходим к коду обработки клика по ButAnswer:
Random randomAnswer = new Random();
int n = randomAnswer.Next(0,19);
string[] answer = new string[20] { "Бесспорно", "Предрешено", "Никаких сомнений", "Определённо да", "Можешь быть уверен в этом", "Мне кажется — «да»", "Вероятнее всего", "Хорошие перспективы", "Знаки говорят — «да»", "Да", "Пока не ясно, попробуй снова", "Спроси позже", "Лучше не рассказывать", "Сейчас нельзя предсказать", "Сконцентрируйся и спроси опять", "Даже не думай", "Мой ответ — «нет»", "По моим данным — «нет»", "Перспективы не очень хорошие", "Весьма сомнительно" };
tbAnswer.Text = answer[n];
В этом коде мы сперва генерируем случайное число от 0 до 19 (количество чисел соответствует количеству возможных ответов). Затем мы создаем массив из 20 возможных ответов. В конце выводим в TextBox содержимое массиво, находящееся на случайно сгенерированной позиции.
На этом создание игры завершено. Можно выбрать для формы подходящую иконку (а также для итогового файла в свойствах проекта), собрать её в виде релиз-версии и играть в свое удовольствие. Готовый проект игры можно скачать на странице проектов и статей. Спасибо за внимание!