Rubyrush: Пишу игру «Волшебный шар»

Ruby для новичков [Rubyrush]

Вчера допоздна засиделся у них на сайте. Просмотрел пять уроков. Начало было простым и лёгким. Много повторялось из предыдущих курсов. Но я ничего не пропускал. Смотрел видосики до конца, кликал, лайкал.

Помимо всего прочего выполнил домашку, в которой нужно было развёрнуто ответить на вопрос почему и зачем я решил изучать программирование. Я сделал это в виде отдельной статьи, в которой я просто прошёлся фрирайдом (без правок и редактуры текста) и описал все что было на тот момент в моей голове. Статья в разделе ежедневника. Если интересно переходите по ссылочке.

Rubyrush: Пишу игру "Волшебный шар"
Скриншот выполненных шагов по курсу «Путь Rubyrush» (пройдено 5 из 149).

Шаг шестой «Пишем волшебный шар»

В этом уроке нам предлагают написать свою первую содержательную программу. Приступим!

Для начала я заведу на своём Github аккаунте отдельную папку для файликов с заданиями. А то как то давно я не верстал и соответственно не пушил на репозиторий новых коммитов. Пора исправляться.

Урок примечателен тем, что они обещают что мы не только напишем программу, но и научимся находить и исправлять ошибки в программе написанной на Ruby.

Если честно, как раз понимания как читать логи в консоли, при выводе ошибок мне не хватало на предыдущем курсе от Hexlet. Поэтому я путался, тупил и гадал при исправлениях в практической части заданий.

Написание программы по шагам

1. Постановка задачи

Любая программа начинается с постановки задачи — это важнейший принцип, который следует взять на вооружение. Давайте определимся с тем что нам требуется написать.

Наш волшебный шар — это игрушка, которая показывает нам случайный ответ на предварительно заданный вопрос. От нас требуется написать программу, которая повторяет поведение игрушки «Волшебный шар».

2. Создание файла для написания программы

Ну тут все просто — идём в рабочую папку и создаём файлик на английском языке. название должно быть содержательным, что бы сразу было понятно что делает наша программа.

3. Проводим исследование

Цель исследования собрать информацию по вариантам ответов, которые возвращает нам программа. На википедии берём найденные варианты ответов и сохраняем их как подсказку в файл программы.

Rubyrush: Пишу игру "Волшебный шар"
Пример сохранения собранной информации для написания программы, в качестве закомментированной подсказки.

4. Создаём массив с вариантами ответов

Для того что бы создать массив мы используем конструкцию состоящую из переменной, которой присваивается сам массив с данными, и как полагается в программировании, оборачиваем весь массив квадратными скобками.

Элементы массива оборачиваем в двойные кавычки, что бы отделить их друг от друга. После каждого элемента массива мы ставим запятую и перенос строки.

Rubyrush: Пишу игру "Волшебный шар"
Массив с данными = вариантами ответов.

5. пишем выражение вывода варианта ответа

Для того что бы запрограммировать вывод варианта ответа мы прописываем конструкцию, состоящую из оператора puts после которого указываем имя нашего массива и применяем к нему метод sample который будет случайным образом выводить один из элементов массива — вариант ответа.

Rubyrush: Пишу игру "Волшебный шар"
программа готово! у нас есть массив с вариантами ответа и команда вывода случайного варианта ответа на экран.

6. Запускаем программу

Запускаем нашу программу и проверяем что она возвращает. Мы ожидаем что она будет возвращать случайные варианты ответов. Если вы всё сделали правильно — так и будет.

Команда выглядит так:

puts answers.sample

Какие методы объектов мы использовали в этом уроке

  • puts — это оператор. Вывод строки на экран
  • sample — передаёт один случайный элемент массива

Как исправлять ошибки в программах

Для начала можно проверить синтаксис программы. Для этого в консоли запускаем команду ruby -c. В результате запуска команды компилятор проверит файл на синтаксические ошибки и укажет на них.

Пример запуска команды проверки синтаксиса:

ruby -c file-name.rb

Указывает на ошибки в виде текстового сообщения, которое состоит из уточнения номера строки, сообщения syntax error и дальше текстового сообщения что именно в синтаксисе не так. Текст будет выводиться на английском, поэтому вам или через словарик нужно проводить, или со временем просто запомнить что именно и когда пишется в тексте.

Как искать ошибку с указанной строкой — не всегда ошибка находится именно на той строке, номер которой указан в ошибке. Проверяйте всегда плюс/минус одна строка.

Так же стоит понимать, что если на строке все нормально, но выводится ошибка — есть смысл проверить парный элемент- скобку или кавычку. очень часто проверка ругается на закрывающий символ симметричной конструкции, в то время, как открывающий символ в начале программы отсутствует.

Если в результате проверки синтаксиса у вас в консоли вывелось сразу несколько ошибок — всегда начинайте с самой верхней ошибки, потому что почти всегда одна самая первая влечёт за собой эффект домино и синтаксис сыпется. При этом, исправив первую, вы автоматически исправите и последующие (иногда).

Если ошибок нет — вам вернётся сообщение вида Syntax OK. Это значит что грубых синтаксических ошибок не найдено.

Немного улучшим программу

Я не так давно смотрел ревью кода программы написанной на Ruby и там говорили про фишку руби, по сокращённому варианту записи элементов в текстовом массиве. Так вот. перед открывающей квадратной скобкой они ставили модификатор %w.

Прикольная вещь!

МодификаторыЧто он делает
% q []не интерполированное String (за исключением \\\[и \])
% Q []Интерполированная строка (по умолчанию)
%р[ ]Интерполированное регулярное выражение (флаги могут появляться после закрывающего разделителя)
% i []Неинтерполированный массив символов, разделенных пробелами (после Ruby 2.0)
% I []Интерполированный массив символов, разделенных пробелами (после Ruby 2.0)
% w []Неинтерполированный массив строк, разделенных пробелами
% W []Интерполированный массив слов, разделенных пробелами
%Икс[ ]Интерполированная команда оболочки
% s []Неинтерполированный символ
Варианты существующих модификаторов в Ruby.

Нашёл я эту табличку и понял что таких модификаторов несколько. Некоторые из них мне понятны, а вот с остальными пока что непоняточки.

Сразу стало интересно что такое интерполяция. Снова полез гуглить.

Интерполяция переменных — это получение значения одной переменной в зависимости от другой или других переменных.

Тут я понял что вязну и ухожу куда то не туда и пришлось прерваться. Но программку я все же немного улучшил. Вот ссылочка на исходный код программы «Волшебный ШАР», кому интересно.


Юрий Ронин