Из этого туториала Вы узнаете, как создать собственную игру из командной строки «Камень, ножницы, бумага». Прежде чем вы начнете, вы должны быть достаточно хорошо знакомы с объектно-ориентированным программированием на Ruby. К концу у вас будет собственный Ruby Gem, который сможет скачать кто угодно где угодно. Сделайте жемчужину и распространите свой код!

Инициализируйте свой драгоценный камень

Что такое гем? Гем - это просто библиотека кода Ruby, размещенная на rubygems.org, которую может загрузить и использовать кто угодно. Давайте начнем!

  1. Создайте учетную запись на rubygems.org.
  2. Назовите свой драгоценный камень. Выберите оригинальное имя. Не стесняйтесь обыскивать все драгоценные камни и найти тот, который не был взят и разговаривает с вами.
  3. Установите сборщик. Откройте командную строку и установите сборщик гемов. Bundler - это драгоценный камень, который помогает вам управлять драгоценными камнями. Это позволяет вам иметь правильные версии всех других драгоценных камней, которые вам нужны для запуска вашего драгоценного камня, и инициализирует его за вас. [Примечание: вы можете использовать RVM для установки отдельной установки Ruby. Вот полезный Сообщение о переполнении стека.]
$ gem install bundler

4. Инициализировать Gem. Инициализируйте свой гем с помощью команды bundle gem. Я решил назвать свой камень «rps10k», поэтому везде, где вы видите «rps10k», подставляйте имя, которое вы выбрали для своего камня «Камень, ножницы, бумага». Следующая команда настроит ваше файловое дерево в соответствии со спецификациями гемов.

$ bundle gem rps10k
$ cd rps10k

Ваше файловое дерево теперь должно выглядеть так:

.
├── CODE_OF_CONDUCT.md
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── bin
│   ├── console
│   └── setup
├── lib
│   ├── rps10k
│   │   └── version.rb
│   └── rps10k.rb
├── rps10k.gemspec
└── spec
├── rps10k_spec.rb
└── spec_helper.rb

5. Инициализировать гем как репозиторий GitHub. Мы будем использовать GitHub в качестве связующего звена между вашим локальным гемом и rubygems.org, где будет размещен ваш гем. (Если на вашем компьютере не установлены git и GitHub, следуйте этим инструкциям.) Сначала создайте новый репозиторий на github.com с именем вашего гема. Не устанавливайте флажок Инициализировать этот репозиторий с помощью README. Теперь выполните следующие команды для инициализации репозитория. Когда вы добавляете удаленную ветку с именем origin, убедитесь, что вы добавили ссылку на свой репозиторий, а не на мой! (Убедитесь, что вы находитесь в каталоге драгоценных камней!)

$ git init
$ git add -A
$ git commit -m "Initialize gem"
$ git remote add origin https://github.com/hannahsquier/rps10k.git 
$ git push origin master

6. Отредактируйте файл .gemspec. Откройте файл rps10k.gemspec. Этот файл содержит все спецификации, необходимые для запуска вашего драгоценного камня. Чтобы ваш драгоценный камень работал, вам нужно будет заполнить все инструкции TODO. Внесите следующие изменения в свой файл, но, конечно же, укажите свою личную информацию.

Изменять

spec.summary = %q{TODO: Write a short summary, because Rubygems requires one.}

to

spec.summary = %q{Rock, Paper, Scissors}

Изменять

spec.description = %q{TODO: Write a longer description or delete this line.}

to

spec.description = %q{A simple rock, paper, scissors command line game.}

Изменять

spec.homepage = "TODO: Put your gem's website or public repo URL here."

в (подойдет любой действующий веб-сайт)

spec.homepage = "https://www.hannahsquier.com"

И, наконец, изменить

spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"

to

spec.metadata['allowed_push_host'] = 'https://www.rubygems.org'

Теперь вы готовы приступить к программированию!

Добавьте код скаффолда к своему драгоценному камню

  1. Общий обзор того, как будет работать игра. Класс Game будет инициализирован двумя игроками. У класса Game будет цикл воспроизведения, в котором каждый игрок будет двигаться до тех пор, пока кто-то не выиграет. Один игрок будет человеком, а другой - компьютером. И Human, и Computer классы будут подклассами Player. Объекты "Человек" и "Компьютер" будут иметь одинаковые общедоступные методы и атрибуты. Единственное различие между Человеком и Компьютером состоит в том, что Человек получит ход в качестве стандартного ввода из командной строки, а Компьютер будет выбирать между камнем, бумагой и ножницами наугад. Вот какой-то псевдокод, описывающий логику игры.

2. Для начала создайте файлы для каждого нужного класса в каталоге lib / rps10k. Вы должны быть в папке с драгоценными камнями, у которой есть имя вашего драгоценного камня. Введите в командную строку следующее.

$ touch lib/rps10k/game.rb
$ touch lib/rps10k/player.rb
$ touch lib/rps10k/human.rb
$ touch lib/rps10k/computer.rb

3. Затем откройте game.rb и начните превращать псевдокод в настоящий код.

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

5. Настройте класс Human, который является подклассом Player.

6. Затем настройте строительные леса для класса Computer, который является подклассом Player.

7. Наконец, добавьте метод класса в модуль Rps10k и потребуйте все классы, которые вы только что создали, чтобы игра могла быть запущена. Файл модуля (rps10k.rb) находится в каталоге lib.

Здорово! Вы создали базовые строительные леса для всех классов и модулей, которые вам понадобятся. Теперь просто заполните леса реальным кодом. Чтобы увидеть мою последнюю жемчужину, загляните в мой GitHub Repo.

На заметку:

  • Сохраните все свои классы в lib / rps10k.
  • Все классы должны входить в модуль Rps10k.
  • Не забудьте использовать require_relative для импорта других файлов классов.
  • Сохраняйте изменения в GitHub каждый раз, когда завершаете логически содержащуюся часть гема.

Раскройте свой жемчуг публике

  1. Добавьте исполняемый файл в свой гем, добавив в гем папку с именем exe и заполнив эту папку файлом exe (rps10k). Ваш исполняемый файл должен выглядеть так:

2. Теперь вы готовы отправить все свои изменения в репозиторий GitHub.

$ git add -A
$ git commit -m "Finish game logic"
$ git push --set-upstream origin master

3. Наконец, вы можете опубликовать свой гем на rubygems.org.

$ rake release

Вам может быть предложено ввести учетные данные rubygems.org. Теперь любой желающий может загрузить ваш драгоценный камень с помощью следующей команды. (Конечно, с вашим именем драгоценного камня вместо rps10k).

$ gem install rps10k

Поздравляю! Вы создали открытый исходный код и внесли свой вклад в сообщество разработчиков. Если есть вопросы, оставьте комментарий. Следите за новостями, чтобы увидеть больше уроков :).