Найти тему

Программирование на Бейсике. Создание игры «Виселица»

Суть игры: компьютер загадывает слово, пользователь угадывает, вводя буквы. Если введенной буквы нет в слове, то к виселице добавляется очередной элемент. Всего должно быть 10 элементов. Таким образом, если пользователь сделает 10 ошибок, то его «повесят» - он проиграл.

Тема для слов: названия штатов Америки.

Пример элементов виселицы:

Итак, задача, вроде бы, понятна. В принципе, у вас уже достаточно знаний, чтобы разработать рабочий код игры прямо сейчас, без наших подсказок. Создание псевдографического интерфейса оставляем на ваше творчество – старайтесь сделать красиво и интересно. Чтоб не стыдно было показать близким и друзьям.

Наш вариант:

-2

После того, как будет введена 10-я неправильная буква, игра закончится с проигрышем пользователя:

-3

Оператор ветвления 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] – «играть» и «выйти». Кнопки выполним с помощью псевдографики, например, так:

-4

По умолчанию выбран [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. Добавить снизу экрана меню подсказку для пользователя. Например, так:

-5

2. Добавить в игру второе меню с выбором тематики:

  • Штаты США
  • Столицы стран
  • Название брендов