В каком-то далеком будущем году неизвестный мне, вроде бы латиноамериканский, но могу и ошибаться, программист создал предельно простую головоломку, что лично меня покорила. Она называется 2048 и построена на удвоении чисел.
Суть до безобразия проста: поле четыре на четыре клетки. В начале появляются две плитки с номиналом “2”. Игрок выбирает направление – вверх, вниз, влево или вправо – и все плитки одновременно скользят до упора. Если сталкиваются две одинаковые – они складываются. Двойка с двойкой дают четверку, две четверки – восьмерку и так далее по степеням двойки, нежно любимым в айти-сообществе, пока не соберешь заветные 2048. Для наглядности ячейки оформляются разными цветами в зависимости от номинала.
Можно и дальше, я встречал модифицированные версии, где порог выигрыша повышался до 4096 или 8192. В конце каждого хода на пустом месте спавнится новая двойка или, если бог рандома пожелает, то четверка. Поле забилось и доступных ходов нет – потрачено, гейм овер. Настоящая дофаминовая петля, не хуже, чем с тетрисом, во всяком случае, для меня.
Базовую логику я однажды уже релизил – на джаваскрипте и реакте, дабы работало в браузере. Повторить ее в текстовом режиме убогого яблочного бейсика – задача уровня школьника. Как же удачно, что я и есть школьник! Расчертил квадрат при помощи тире и черточек. В центр каждой клетки число. Какое же убожество получилось!
А в графическом режиме lo-res не хватило разрешения. При ширине поля в 40 точек на каждое число отводится 10 пикселей и уже с трёхзначными числами начинаются проблемы, не говоря о 1024 и 2048. Естественно, спрайты чисел надо рисовать попиксельно. От одной мысли о перспективе связываться с цветомузыкой высокого разрешения начинало тошнить. Но куда деваться?
Придерживаемся имеющегося набора цветов – царство фиолетового, зеленого, оранжевого и синего с примесью белого и черного. Двигаем их исключительно на четное число пикселей. Анимация нам не нужна – схлопываем фигуры мгновенно. Так как картинка статическая, за производительностью не гонимся, а потому не лезем в ассемблер и не набиваем шишки об упоротую фрагментированную адресацию видеопамяти.
Ночь, она зовёт меня…
Закончил в четыре утра, записал на аудиокассету и вырубился, даже копирайт не успел добавить. И всё-таки я жаворонок. Или дело в молодом организме. Но после пары часов сна поднялся на ноги почти нормально. Ну, штормило слегка, однако кофе выручил и придал сил. Велосипед, школа… не заснуть на уроке пропаганды… не заснуть на английском…
– Мистер Колон, вы что, храпели? – спросила миссис Уайт.
– Простите. Я писал всю ночь и не выспался, – признался честно.
– Стихи?! – глаза старушки, скрытые за большими очками, алчно блеснули.
– Да, мэм, – куда уж деваться, лучше отмазка, чем обидеть добрую бабушку. – Если вам интересно, я запишу вам копию по памяти.
И записал. “Ночь… она зовёт меня”. Дифирамбов после уроков дожидаться не стал – сбежал к Миллеру. Нелегко живется нам, гениям готической поэзии, не позволяют выспаться ни на физике, ни на математике. Ну хоть к доске не вызвали.
Кажется, я начал понимать “Сонного Джо”, встречающегося нам по субботам. Только сел за парту в зале самоподготовки и протянул Линде половинку обеда, как обнаружил, что девушка трясет меня за плечо, призывая проснуться по окончанию перерыва. Хорошо хоть, что сегодняшний дежурный учитель – негр с сэндвичем, ему плевать, сплю я или нет, главное, что не шумлю.
– Крис, почему ты такой сонный второй день подряд? Я за тебя волнуюсь, – сказала подруга на выходе из 104-го.
– Писал всю ночь игру! – блистательно улыбнулся и удержался от зевка.
– А какую? Покажешь?!
– Логическая головоломка. Покажу.
И кто сказал, что приманивать девушек на компьютерные игры – провальная стратегия? У вас девчонки неправильные, если она не срабатывает. Конкретно с данной няшной азиаткой, судя по жадному интересу в прекрасных глазах – очень даже действенная.
– У меня все вечера на неделе забиты доставкой, – грустно протянула Линда, – давай в субботу после того, как ты всех обыграешь в шахматы.
То, что вероятность моего поражения даже не рассматривается – приятно, но Миллер сегодня же после уроков наглядно доказал, что не все у меня так и хорошо с древней игрой. Да, виноват недосып, но 4:1 не в мою пользу – настоящий разгром.
И как только я доехал до прачечной, не закемарив прямо на велике? В заведении Ковальски меня ждал сюрприз – Фроггер. Жадный бобр не смог дотерпеть до официального открытия аркадного зала и втиснул лягушачий автомат в прачечной.
– Ненавижу эту игру! – поведала Мария, пытавшаяся перевести лягушку. – Она слишком сложная! Почему нельзя делать игры простыми, чтобы и нормальные люди имели шансы их проходить?
Мигель от кассы сказал ей что-то на испанском и ребята синхронно рассмеялись. Никакой ревности с моей стороны! Даже наоборот, пусть сходятся и живут долго и счастливо!
А ответ на озвученный девушкой вопрос в том, что контента в игру пока что вмещается самый мизер, так как память дорогая. И чтобы удерживать игроков, приходится задирать кривую сложности. Лишь СуперМарио, что выйдет через несколько лет, сломает тенденцию умещать весь контент в одном экране.
– Кристобаль, ты выглядишь так, будто не спал неделю, – заметила меня Машенька.
– Всего пару ночей. Простирните мне спортивную форму, пожалуйста. Я в бар.
Залез внутрь Галаги, измерил выходное напряжение на БП – 4 вольта. Мистер Феликс, вы настоящий “тыж”, а я так, ваш жалкий подражатель. Привет, сто долларов! Нашел винтик, отвечающий за регулировку, подкрутил, померил, еще подкрутил, пока не получил на мультиметре ровно 5. Включаю, громкий, но мелодичный писк – звуки восьмибитной музыки при включении игры.
– Адмирал Ковальски, сэр, докладывает энсин Колон из инженерного. Шесть из семи новых кораблей вашего флота в строю, – выдал вслух рапорт, не вылезая из автомата.
– Починил-таки, сынок, – я чуть головой о плату не стукнулся от неожиданности. Поляк, оказывается, ниндзя или умеет становиться невидимым, как Дракс Разрушитель.
– Да, сэр. Для ремонта седьмого нужна новая плата за пятьсот долларов. Ее я заказать не могу, так как нет денег на предоплату.
– Подождем с этим, я и так много денег в ремонт вложил. Еще не факт, что автомат отобьет затраты. Но ты молодец, Колон. Рад, что не ошибался в тебе.
– Сэр, мне нужна ваша помощь. Купите мне бутылку бурбона.
– Сынок, я знаю, что тебе нелегко, пришлось. Брат арестован, перспектива оказаться в приемной семье. Но пьянство – это…
Хороший ты мужик, бобр Ковальски. Но не угадал.
– Мне не для того, чтобы пить, это в оплату за услуги одного полезного пьяницы. Я могу вам хоть на библии поклясться, что не сделаю ни глотка из той бутылки.
Поляки – католики, как и латиноамериканцы, клятва на святом питании для них что-то да значит. Хотя, если честно, и не планировал обманывать. Я не трезвенник и в конвульсиях от капли C2H5OH не бьюсь, скорее, равнодушен к алкоголю и не нахожу в нем удовольствия.
– Хорошо, пацан. Я тебе поверю, но если узнаю, что обманул, а Джон Ковальски всегда узнаёт, разочаруюсь в тебе… и стану платить меньше.
– Не уволите, сэр?
– И где ещё я найду дешевого механика аркадных автоматов? Наведи тут порядок. Расставь игры… как их положено ставить, протяни к каждому ящику провода, вынеси мусор и получишь свой бурбон. Но не сегодня, спешить некуда, лицензия на зал оформляется долго. А сегодня свободен, тебе нужно выспаться.
– Спасибо, сэр, – я чуть не выразил ему благодарность от лица командования Звездного Флота, но даже слегка затуманенным сознанием сообразил, что бобр не в теме Звездного Пути и как бы не заподозрил меня в том, что уже под мухой или чего похуже. Смолчал.
Сотня баксов! Космические деньги для подростка. Жалкие гроши для мужчины, какому надо обеспечивать семью. Заехал в супермаркет и нагрузился в очередной раз борщевым набором овощей, потратив десятку. Хочу, блин, машину! Набитый продуктами рюкзак уже стал слишком тяжелым. Но к пятничному визиту из службы опеки стоит подготовиться, не Елене же ответственную миссию доверять.
Выгрузив покупки в холодильник, понял, что сил не осталось. А потому взял Дюке, чтобы побегал, и пошел гонять с пацанами в футбол. Играл плохо, постоянно тупил, но не заснул и то уже хорошо.
Заработанные деньги спрятал в системнике – устроил тайник за платой бывшего телевизора, какую поленился демонтировать.
Ночь, она… нет. Едва дотерпев до ужина, забрался на верхнюю полку и вырубился до звонка будильника. Во сне Мисс Июль громила меня в шахматы с лёгкостью гроссмейстера, обещая снять купальник, если выиграю. Без шансов!
Сон не сон, но идея шикарная. В девяностых мы играли с компьютером в порношашки. Обыгрываешь алгоритм – и девушка снимает с себя вещь, вплоть до полного разоблачения. Шашки закодить несложно, но проблема, внезапно для современного человека, в картинках с раздетыми девушками. Не в каких-то моральных нормах, забери их Слаанеш. У убогих компов начала восьмидесятых попросту нет столько памяти, чтобы держать порнографию высокого разрешения.
Всю дорогу до школы я думал о том, как порадовать молодое поколение шашистов нарисованными чичис. Ну и стрип-покер заодно на том же движке стоит запилить. Алгоритмы сжатия мне в помощь? Я, признаться, не настолько хорош, чтобы помнить наизусть детали реализации того же джипега. Но пусть им умные люди в очках и лысинах занимаются. Всё равно процессор в один мегагерц ни сжатие, ни распаковку в приличном качестве не осилит. Что потяну, пожалуй, так перевод картинок в векторный формат. Изначально рисовать арты на черном фоне линиями, легко кодирующимися через “нарисуй линию от сих до сих”. И, пожалуй, алгоритм, упаковывающий в вектор любую картинку.
Есть смутное чувство, что изобретаю даже не велосипед, а колесо, что всё уже придумано до нас. Но и пофиг. Меня от самого процесса создания алгоритма штырит так, что никакой алкоголь не нужен. Отрешаюсь от всего.
И как удачно, что совсем недавно я видел в журнале статью о создании самодельного графического сканера. Найти бы еще талантливого художника, способного создать из одних простых по форме линий соблазнительную прелестницу. Оригинальный Крис рисовал в тетрадке отличные груди, но я его талантами не наделен. Может быть, кто-то из парикмахерш втайне рисует? Линда? Мария? Да что я гадаю? В политехнической школе наверняка существует класс искусств, где обучают рисованию.
– Мистер Колон, задержитесь на минуту, пожалуйста, – попросила миссис Уайт после английского и аккуратно поправила свои большие очки.
– Да, мэм?
– Кристобаль... я прочитала то, что вы мне вчера оставили. Просто поразительно! Рада, что не ошиблась в оценке таланта. “Ночь... она зовёт меня”. В ваших строках столько первобытной тоски и глубокого понимания человеческого одиночества…
– Спасибо, миссис Уайт. Я на самом деле писал всю ночь и стихи сами пришли ко мне, – не говорить же чудесной бабушке, что писал я на бейсике.
– Я взяла на себя смелость прочитать ваши строки профессору Кроуфорду и Аластер разделил моё мнение. Юноша, в вас есть потенциал стать современным Эдгаром Алланом По. Скажите, а ваша дама сердца оценила их? Не вздумайте стесняться. Покажите ей! Пообещайте мне!
– Пока не успел, но покажу.
Ах, миссис Уайт, вы мой персональный купидон.
Пацан сказал – пацан сделал. Протянул Линде листочек и с удовольствием наблюдал, как расширяются ее красивые глаза. Быть может, не очень правильно использовать плагиат чужих стихов, чтобы понравиться девушке. Но с Вольтером я обязательно рассчитаюсь, а его песня на самом деле находит отклик в моей душе. Я и сам бы написал что-то похожее, если бы имел хоть каплю таланта.
“Это потрясающе, Крис. Звучит так, будто ты заглянул мне в голову. День и правда бывает слишком громким. Ночь… она зовёт и меня тоже”.
Ох, как жаль, что сегодня дежурным физруком выступал Бак, что сверлил нас с подругой маленькими, полными ненависти глазками и даже очередную записку передать не позволил.
– Соблюдайте дисциплину, мистер Колон! Вы на гауптвахте, чтобы отбывать наказание! – потребовал злодей.
Зато как я оторвался в блице после автомеханики. Свежая голова и прилив мотивации от общения с Линдой принесли мне сухую победу. Миллер даже ворчать по поводу того, что недостаточно стараюсь, не стал.
– В субботу утром у ворот школы, мистер Колон. Автобус уходит в семь-тридцать. Не забудьте про дресс-код. Никаких джинсов и футболок. Если у вас нет нормальной одежды, купите. Брюки, туфли, рубашка под ремень или хотя бы свитер с вырезом. Мы отправимся в приличное общество. Как бы вас еще из-за лица не отстранили, но про синяки в правилах ничего нет.
– Могли бы и заранее предупредить, сэр, – не стал скрывать недовольства.
– Это и есть заранее. Доехать до комиссионки “Армии Спасения” и купить себе обувь вы сможете хоть сегодня. Я говорю о базовых правилах приличия, мистер Колон, вам в любом случае рано или поздно придется уйти от стиля уличного хулигана, если собираетесь претендовать на что-то в жизни. Считайте уроком.
– Спасибо, сэр!
И, совершенно внезапно, Миллер прав – мне надо в комиссионку. Только не Армии Спасения, про которую я периодически встречал упоминания на уровне идиом то в кино, то в книгах, но ни разу не видел. Моя цель – комиссионный магазин дядюшки Манни, о каком говорил Гектор. На две штуки баксов за краденый комп рассчитывать, конечно, не стоит, но хотя бы тысячу получить было бы отлично. А косарь – это больше трех месяцев аренды трейлера или так нужная мне машина, для которой еще правами стоит озаботиться.
– Сэр, не подскажете, как мне сдать на водительские права? – почему бы и не получить от Миллера хоть какой-то толк.
– Вы поражаете меня, мистер Колон, – Миллер насмешливо выгнул бровь, убирая шахматы в деревянную коробку. – Вы способны стратегически мыслить, просчитывая ход партии на доске, но не в состоянии одолеть простейшую бюрократическую процедуру? Или в вашем баррио принято просто заводить двигатель, соединяя провода, не утруждая себя документами?
– Потребность в правах возникла у меня лишь сейчас, сэр.
– Запоминайте алгоритм, мистер Колон.
Шаг первый: Получаете письменное разрешение опекуна.
Шаг второй: Садитесь в автобус, платите пятьдесят центов и едете в даунтаун, в Департамент транспортных средств, где проходите проверку зрения и сдаёте элементарный теоретический тест. Получаете ученические права. С ними вам разрешено практиковаться в присутствии совершеннолетнего водителя.
Шаг третий: Ждете ровно тридцать дней, улучшаете навыки вождения.
Шаг четвертый: Возвращаетесь в департамент, сдаёте инспектору практический экзамен и забираете полноценное удостоверение.
– Спасибо, сэр. Я воспользуюсь вашими советами.
Всё же не полная он сволочь, хоть и старается выглядеть таковым. Про автобус за пятьдесят центов и вовсе откровение! Я в своей наивности считал, что в штатах у каждого бомжа есть собственная машина и общественный транспорт отсутствует, как класс, кроме метро и междугородних “Грейхаундов”. Во всяком случае, такое впечатление сложилось. А мог бы вспомнить шикарный боевик “Скорость” с Киану Ривзом и Сандрой Баллок, где действие происходит в городском автобусе в – сюрприз, Крис – Лос-Анджелесе.
Сегодня, впрочем, я продолжил оставаться велосипедистом – поехал в комиссионку дядюшки Манни, выяснить насчет первого Эппл 2 Плюс. Деньги за него манили почище ночи. Надеюсь, меня там не убьют и не ограбят. Вроде бы всё еще наш район, не должны привязаться.