Так, если пользователь загадал камень, а компьютер — ножницы, то выиграл человек, ведь «камень затупляет ножницы». Для других случаев есть еще пара выигрышных правил: «ножницы разрезают бумагу» и «бумага заворачивает камень». На этом алгоритме мы научимся программировать конструкции с многочисленными ветвлениями.
Разумеется, вы уже загрузили бесплатную редакцию Visual Studio 2010 с сайта www.microsoft.com/express/downloads и установили ее на компьютер. Нажимаем «Пуск • Программы • Microsoft Visual Studio 2010 Express • Microsoft Visual Studio 2010 Express». Если программа попросит ввести регистрационный ключ для Visual Studio, выдаваемый абсолютно бесплатно, щелкните на кнопке «Получить регистрационный ключ через Интернет» и заполните соответствующую анкету. Регистрационный ключ появится по ссылке. Нажмите «Зарегистрировать». В открывшемся окне Visual Basic 2010 зайдите в меню «Файл • Создать проект», в появившемся списке выберите строку «Консольное приложение», затем задайте имя проекта (по умолчанию оно будет ConsoleApplication2, ведь ConsoleApplication1 — проект «Угадай-ка»). И опять в рабочем окне появятся четыре строки нашей будущей программы:
Module Module1
Sub Main ()
End Sub
End Module
Между второй и третьей вставляем наш игровой код (разберем его чуть ниже). А чтобы запустить алгоритм на исполнение, идем в меню «Отладка • Начать отладку» или нажимаем клавишу
В строке 10 мы объявили пару целочисленных переменных с помощью оператора DIM. В нашем случае: a — случайный выбор компьютера, b — сознательный выбор пользователя.
В строке 20 меняем стандартный заголовок окна будущей игры на более логичный — «Камень, ножницы, бумага».
Иногда возникает необходимость в выводе на экран обычных кавычек. В Visual Basic для этого используются два последовательных знака кавычек, т. е. "" — именно так мы и поступили в строке 30. Отметим, что парные кавычки, представленные в строке, могут ставиться как в середине, так и в ее начале или конце. В других языках программирования все могло быть сложнее. Например, в C# (читается как «Си шарп») пришлось бы использовать специальный код — x0022. Согласитесь, на VB все куда проще.
Строки с 40‑ю по 90‑ю выводят в консоль нужный для пользователя текст. Здесь особого внимания заслуживает строка 50 — с помощью свойства Console.ForegroundColor можно задавать цвет текста. Кстати, попробуйте самостоятельно поэкспериментировать еще со свойством Console.BackgroundColor. Да и работу с методами Console.ResetColor () и Console.Clear () возьмите на вооружение.
В строке 100 в ознакомительных целях мы разместили сразу две командных конструкции. Скажем больше: можно почти всю программу написать в одну строку, разделяя команды двоеточием. Но будет куда правильнее размещать все операторы на отдельных строках. Randomize () инициализирует генератор случайных чисел. Math.Round (Rnd () *2) округляет до целого произведение случайного вещественного числа (от 0 до 1) и 2. Затем к получившемуся значению прибавляется единица, ведь по замыслу 1 означает камень, 2 — ножницы и 3 — бумагу. Других значений в переменных a и b не подразумевается.
Метод Console.ReadLine в строке 130 считывает число, введенное пользователем в переменную b, — это выбор человека.
Конструкции в строках со 140‑й по 190‑ю и с 200‑й по 240‑ю — блоки операторов ветвления Select Case… End Select. Там в зависимости от значения переменных a и b выполняются определенные последовательности команд. Кстати, обратите внимание на строку 180. Она описывает любой другой случай, если человек вместо ожидаемых цифр 1, 2 или 3 введет что-то другое (например, 4). Еще уместно уточнить, что если человек введет любые нецифровые символы (в частности, напишет «камень»), то в строке 130 возникнет недопустимая ошибка, — нужно бы сделать так называемую «защиту от дураков».
Разумеется, более популярная конструкция с условиями — это If… End If. Именно она стоит в строках с 250‑й по 410‑ю. Здесь мы рассмотрели всевозможные варианты, сопоставляющие выбранные вещи. Кстати, если бы пользователь схитрил и в переменную b ввел значение 4 (или большее), то сработала бы ловушка в строках 390—400 для всех исключений.
А теперь давайте подумаем, как можно улучшить играбельность. Предлагаем строки 100—410 обернуть в цикл For… Next (см. статью «Visual Basic 2010: начинаем с нуля», «Мир ПК», № 8/10) и запустить 10 раундов противостояния «Компьютер против Человека». В строке 10 нужно «дообъявить» переменные i, p и n (i — счетчик цикла). В переменную p мы будем складывать победы человека — в строках 300, 320, 380 через двоеточие допишите команду p = p + 1. А в n сложим все победы компьютера — в строках 280, 340, 360 допишите n = n + 1. Теперь в конце каждого раунда надо выводить текущий счет — перед Next i вставьте два оператора
Console.WriteLine ("Чел — ПК"): Console.WriteLine (Str (p) + " — " + Str (n)).
Пусть эта небольшая доработка игрового алгоритма будет вашим домашним заданием. А в следующем номере мы разберем игру «Города».