Суть игры: компьютер загадывает слово, пользователь угадывает, вводя буквы. Если введенной буквы нет в слове, то к виселице добавляется очередной элемент. Всего должно быть 10 элементов. Таким образом, если пользователь сделает 10 ошибок, то его «повесят» - он проиграл.
Тема для слов: названия штатов Америки.
Пример элементов виселицы:
Итак, задача, вроде бы, понятна. В принципе, у вас уже достаточно знаний, чтобы разработать рабочий код игры прямо сейчас, без наших подсказок. Создание псевдографического интерфейса оставляем на ваше творчество – старайтесь сделать красиво и интересно. Чтоб не стыдно было показать близким и друзьям.
Наш вариант:
После того, как будет введена 10-я неправильная буква, игра закончится с проигрышем пользователя:
Оператор ветвления SELECT CASE
В процессе игры вам придется реализовать механизм случайного выбора одного слова из пятидесяти штатов Америки. Вы можете реализовать это с помощью оператора ветвления
IF THEN … ELSE IF … ELSE IF … END IF
Этот код будет работать. Но для подобных переборов значений в Бейсике существует другой оператор ветвления, более подходящий: SELECT CASE. Записывается эта конструкция таким образом:
SELECT CASE n
CASE 1:
…
CASE 2:
…
END SELECT
Здесь мы спрашиваем, чему равно значение переменной «n». Если n = 1, то делаем что-то одно (многоточие), если n = 2, то делаем что-то другое. В нашем случае будет 50 значений, потому что штатов Америки ровно 50.
Ожидание нажатия клавиши, функция INKEY$
В этом уроке мы научимся работать с клавиатурой. Реализуем механизм, при котором программа будет ожидать нажатия определенной клавиши для какого-то определенного действия.
В качестве примера создадим меню для нашей игры, состоящее всего из двух кнопок: [PLAY] и [QUIT] – «играть» и «выйти». Кнопки выполним с помощью псевдографики, например, так:
По умолчанию выбран [PLAY] – у нас это красный цвет. Теперь научимся менять цвет.
Логично, что для того, чтобы «переместить» красный цвет на кнопку справа, нужно нажать на стрелку вправо. Но в Бейсике довольно сложно работать с функциональными клавишами. Проще работать с символьными клавишами. Поэтому давайте реализуем это с помощью клавиш [P] и [Q].
Для того, чтобы программа ожидала нажатия какой-нибудь клавиши, применяется функция INKEY$. Вот как обычно это записывается:
a$ = INKEY$
Эта запись означает, что значение переменной a$ будет принимать код нажатой клавиши. Но действие это одномоментное. А нам необходимо, чтобы выполнение программы «затормозилось» на этом моменте, пока мы не выберем нужную кнопку и не подтвердим свой выбор, нажав, к примеру, клавишу пробела.
Чтобы заставить ожидать программу нажатия клавиши, логичным будет запустить бесконечный цикл, а внутри цикла уже проверять, какая клавиша нажата. Если нажата [P] или [Q], то переключать (зрительно) кнопки, а если нажата клавиша пробел, то запускать игру или заканчивать программу.
a$ = “”
WHILE a$ <> “p” AND a$ <> “q”
a$ = INKEY$
WEND
Следите за мыслью.
Сначала мы создаем переменную a$, которая будет отвечать за введенный символ. Присваиваем ей пустую строку. После этого запускаем условный цикл, который будет работать до того момента, когда a$ перестанет быть пустой строкой – т.е. с помощью INKEY$ ей присвоится значение одного из двух вариантов: «p» или «q».
Реализацию смены цвета кнопок в зависимости от нажатой клавиши оставляем за вами, т.к. вы уже в состоянии справиться самостоятельно.
После того, как пользователь определился с выбором, необходимо нажать на клавишу пробела, чтобы выбор состоялся, и игра началась, либо же программа завершилась. Как это реализовать – тоже оставим для вашего размышления. Единственное, что подскажем, так это то, что проверка пробела через INKEY$ ничем не отличается от проверки символьной клавиши – это “ ” (пробел в кавычках).
Можно, кстати, для выполнения того или иного кода после проверки нажатия той или иной клавиши воспользоваться не условным циклом WHILE, а оператором безусловного перехода GOTO. В стародавние времена, когда Бейсик был самым популярным языком программирования, это было в порядке вещей, но в настоящее время такой подход осуждается в программировании. Если не получится реализовать меню с помощью WHILE, реализовывайте с помощью GOTO.
Комменты приветствуются, за палец вверх - отдельное спасибо. Удачи!
Задания
1. Добавить снизу экрана меню подсказку для пользователя. Например, так:
2. Добавить в игру второе меню с выбором тематики:
- Штаты США
- Столицы стран
- Название брендов