Роберта продолжила обсуждение и по возвращении домой – она раскатала на кухонном столе большой лист ватмана, весь разрисованный пузырями с текстом и соединительными линиями. В пузырях значились описания мест: «Крыльцо», «Кладбище», «Чердак».
Роберта говорила, а я внимательно слушал. Наконец-то она меня заинтересовала! Я начал размышлять, как можно сделать такую игру. На мой взгляд, это была тривиальная задачка по программированию – полдня работы, и готова игра на радость Роберте. У нее эта идея явно вызывала нешуточный энтузиазм.
Я размышлял вслух и спросил Роберту: «Интересно, можно ли сделать так, чтобы игра показывала еще и картинки – где происходит действие?» Роберта спросила, возможно ли это, и я ответил: «Не думаю, но было бы забавно попробовать». Если я и собирался на несколько дней оторваться от своего компилятора, то только ради какого-нибудь развлечения. И я уже начал задаваться вопросом, можно на Apple II отображать картинки или нет.
Я, конечно, высказал идею ввести в игру графику, но почти сразу пришлось дать заднюю. Было бы забавно поэкспериментировать в этом направлении, но я бы вряд ли хоть чего-то добился. Изображения требуют больших объемов данных. Даже на одну-единственную картинку нужна была целая стопка дискет.
Роберта была в восторге! Она не сомневалась, что я смогу что-нибудь придумать, и хотела, чтобы я немедленно бросил свою возню с компилятором Fortran и накодил ей игру.
Теперь у Роберты была цель в жизни. А когда Роберта чего-то хочет, единственное, что можно сделать, – не стоять у нее на пути.
Глава 8. (1980) Детища Роберты (это игра и компания!)
Я упряма, честолюбива и точно знаю, чего хочу. Если это делает меня стервой – окей.
Роберта твердо собралась не давать мне покоя, пока я не придумаю, как сделать ей игру. Текстовую игру написать было проще простого. Но на ватмане у Роберты было вычерчено штук тридцать или сорок пузырьков, и каждый изображал то или иное место в игре. Нарисовать в виде какой-то графики хотя бы одну такую локацию на компьютере Apple II было просто нереально. Я считал, что Роберта зря тратит время, но в то же время не мог перестать думать о том, как бы это реализовать.
Роберта была настолько уверена в моих способностях, что начала делать эскизы локаций. Я наблюдал за тем, как она рисует, и у меня-таки возникла идея.
В одном из немногочисленных тогда калифорнийских компьютерных магазинов я увидел штуковину под названием VersaWriter. С ее помощью можно было перенести рисунок в компьютер.
Моя идея заключалась в том, чтобы с помощью VersaWriter занести в память компьютера координаты только конечных точек линий вместо того, чтобы сохранять картинку пиксель за пикселем. Чтобы понять, что именно я тогда задумал: представьте себе координатную сетку и на ней простой прямоугольник. Его можно представить серией чисел, например 10, 20, 30, 40. Это может означать примерно следующее: «отсчитай 10 пикселей (точек) слева и 20 пикселей сверху и построй прямоугольник так, чтобы его нижний правый угол попал в другие координаты – 30 пикселей слева, 40 пикселей сверху». Таким же образом можно изобразить и линию, используя те же четыре байта (числа). Сейчас эта идея может казаться очевиднее некуда[14], но по тем временам это было что-то неслыханное. С таким подходом линию, прямоугольник или даже круг можно было описать с помощью ничтожного объема данных.
К VersaWriter прилагалось готовое программное обеспечение, но мне нужно было написать свою собственную программу, которая позволила бы Роберте «прорисовывать» свои рисунки на компьютере по одной точке за раз. Местный компьютерный магазин дал мне контакты разработчика VersaWriter – тот посчитал, что у меня клевая идея, и предоставил всю техническую информацию, чтобы я мог написать нужные для Роберты утилиты.
Роберта прилепила клейкой лентой свой рисунок к чертежной доске VersaWriter и стала отмечать конечные точки линий с помощью пантографа. В конце каждой линии она нажимала клавишу «Ввод» на клавиатуре Apple II. Несколько минут такой работы, и на экране появилась готовая картинка! Открывающее изображение дома заняло всего около 150 байт! Ну, положим, чуть более детализированная картинка заняла бы чуть больше памяти, но внезапно игра моей жены стала вполне возможной. Даже если бы картинки занимали по 200 байт каждая, семьдесят картинок заняли бы всего около 14 килобайт, или пятую часть дискеты!
14
Такой же метод рисования при помощи команды DRAW появился только в 1983 го- ду в популярном языке программирования MS BASIC. –