Skip to content

Instantly share code, notes, and snippets.

View hedgesky's full-sized avatar

Anton Chuchkalov hedgesky

View GitHub Profile
class CreateUser
def self.call(*args)
new(*args).call
end
def initialize(name)
@name = name
end
def call
channel in1 = [4] of { int };
channel in2 = [4] of { int };
channel out = [8] of { int };
int turn;
int t1, t2;
proctype read() {
do
::
if
argument_values.map do |element|
"sin(#{element.round(3)})is #{sin(element)}"
end

Recreating versions with :from_version dependency

Imagine you have a version with :from_version:

class MyUploader < CarrierWave::Uploader::Base

  version :thumb do
    process resize_to_fill: [280, 280]
 end
Я достаточно сильно улучшил наши кораблики с момента нашего последнего скайп-разговора. Я добавил возможность смотреть текущее состояние корабля, список кораблей в текущей системе, ввел отношение других кораблей к игроку и даже возможность связи с другим кораблем!
Но мы затевали создание этой системы для того, чтобы ты мог изучить Ruby, поэтому вот тебе несколько заданий:
1. Если после прыжка в какую-либо систему посмотреть состояние корабля, остаток топлива будет показывать с большим количеством знаков после запятой. Попытайся понять, почему так происходит, и предложи пути решения проблемы.
2. Надо улучшить механизм заправки корабля: если происходит попытка заправить корабль на объем, больший доступного, надо бросать соответсвующее исключение.
3. Сделай так, чтобы при связи с кораблем выдавалось случайное сообщение из набора (сейчас доступно только одно).
В последнем коммите мы добавили нашему ассистенту навигационные возможности. Теперь он умеет показывать карту вселенной и прыгать в различные звездные системы.
Дальнейшие планы: планирование полета с помощью journal.rb, конечно же, хорошо, но никто не знает заранее, с чем столкнется капитан корабля во время полета. Поэтому было принято стратегическое решение о добавлении ассистенту возможности спрашивать капитана о следующем действии: на выбор предоставляется список возможных действий. Капитан выбирает - ассистент реализует. Итак, время не ждет, давайте скорее реализуем это!
Технические подробности:
Я добавил в проект Gemfile. Это файл с перечислением библиотек-зависимостей проекта. Чтобы установить их, выполни:
$ gem install bundler # устанавливается один раз и для всех проектов. Скачивает все зависимости и устанавливает их.
$ bundle # Выполняется для каждого проекта при изменении Gemfile. Обновляет зависимости.
@hedgesky
hedgesky / spaceship_task_1
Created March 8, 2015 15:08
Spaceship Assistant. Задание 1
1) склонировать репозиторий. Если настроил гит, то можно написать в консоли
git clone git@github.com:hedgesky/spaceship_assistant.git
Если не настроил, то просто скачать исходники:
https://github.com/hedgesky/spaceship_assistant/archive/master.zip
2) Добавить двигателю атрибут "количество топлива". При создании объекта он должет устанавливаться в 0. Должна быть возможность заправить корабль (отдельным методом fuel(fuel_amount)). При прыжках и движении топливо должно расходоваться каким-то образом (придумай сам, каким; но можем обсудить этот вопрос). При попытке движения или прыжка с недостаточным уровнем топлива должно выбрасываться исключение NotEnoughFuel.