В программе пользователю предлагается задумать число, выполнить над ним несложные вычисления, ввести число, которое получится после всех вычислений, а затем нажать кнопку «Показать ответ» - программа показывает число, которое пользователь загадал.
Программа достаточно простая для реализации, зато при ее создании вы узнаете как преобразовывать число в строку и наоборот, а также как добавить в программу проверки вводимых пользователем данных.
Создание приложения
1. В среде Visual C# 2010 Express создайте новое приложение Windows Forms, в качестве имени проекта введите GuessNum.
2. С помощью окна свойств установите значение свойства формы:
Text | Отгадывание числа |
3. Разместите на форме необходимые элементы управления таким образом, чтобы форма выглядела так же, как на рисунке выше.
4. Установите для текстовых элементов значение свойства Font по своему усмотрению.
5. Создайте обработчик события Click кнопки «Показать ответ» и напишите следующий код:
MessageBox.Show("Вы загадывали число " +
(Convert.ToInt32(textBox1.Text) - 2).ToString());
6. Сохраните проект, имя проекта и решения оставьте GuessNum.
7. Запустите программу и проверьте ее работу.
В чем секрет?
Никакого секрета здесь нет, все сводится к решению уравнения: (х*3 + 6) / 3 = у, где х – задуманное игроком число, у – результат, который получился у игрока после выполнения всех вычислений. Упростив это уравнение, вы легко заметите, что для того чтобы найти число х, нужно от у отнять 2.
Источник: Игры, ребусы, загадки для младших школьников. Популярное пособие для родителей и педагогов/ Сост. Т.И. Линго. – Ярославль: «Академия развития», «Академия Ко», 1998.
Дополнительные задания
Проверка ввода символов в TextBox
Иногда встает задача ограничивать возможность ввода в поле элемента TextBox определенных символов. К примеру, мы хотим, чтобы в данное поле пользователь мог вводить только числа. Для проверки вводимых символов необходимо написать обработчик события KeyPress для данного элемента TextBox.
Следующий пример запрещает пользователю нажимать любые клавиши, кроме клавиши BackSpace (код этого символа равен 8):
/* Следующий код запрещает нажатие пользователем любых символов на клавиатуре, за исключением цифр и клавиши BackSpace */
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != 8 && (e.KeyChar < 48 || e.KeyChar > 57))
e.Handled = true;
}
Если достаточно проверять только ввод цифр, то можно воспользоваться методом Char.IsDigit:
if (!Char.IsDigit(e.KeyChar))
e.Handled = true;
Проверка является ли поле TextBox пустым
Проверку является ли поле пустым можно реализовать несколькими способами, например можно написать проверку:
if (textBox1.Text == "")
а можно проверять свойство Length строки:
if (textBox1.Text.Length == 0)
Ограничение вводимого в TextBox значения
Если сейчас вы запустите программу отгадывания числа, введете в поле число, превышающее значение, допустимое для типа данных int (т.е. большее чем 2147483647), например число 99999999, то программа выдаст сообщение об ошибке. Избежать ошибки можно добавив проверку в обработчик события TextChanged текстового поля и вывод какого-то сообщения. Если в программе не предполагается вводить большие числа (как в нашем случае вряд ли в детской игре кто-то будет загадывать большое число), тогда проще всего для текстового поля в свойстве MaxLength установить максимально допустимое количество вводимых символов.
В следующем примере приведен код программы отгадывания числа с добавленными проверками на водимое пользователем значение.
// GuessNum2 - Отгадывание числа с проверкой ввода символов
using System;
using System.Windows.Forms;
namespace GuessNum2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Вы загадывали число " +
(Convert.ToInt32(textBox1.Text) - 2).ToString());
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != 8 && (e.KeyChar < 48 || e.KeyChar > 57))
e.Handled = true;
}
private void Form1_Load(object sender, EventArgs e)
{
// При запуске программы кнопка "Показать ответ" выключена
button1.Enabled = false;
// Устанавливаем ограничение на длину вводимого числа,
// чтобы не было ошибки при преобразовании Convert.ToInt32
textBox1.MaxLength = 5;
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length > 0)
{
// Если введен хотя бы один символ - включаем кнопку
button1.Enabled = true;
}
else
{
// Если пользователь удалит все цифры - выключаем кнопку
button1.Enabled = false;
}
}
}
}