История и игра: Gorillas — скрытая игра MS‑DOS

Содержание
- В чём простота и магия Gorillas
- Как игра оказалась в MS‑DOS
- Наследие и почему это важно
- Как запустить Gorillas сегодня
- Быстрый синтаксис и пример кода
- Модели мышления для игры и разработки
- Альтернативы и восстановление в других языках
- Контрольный список для разных ролей
- Часто возникающие вопросы
В чём простота и магия Gorillas
Gorillas — яркий пример «малого кода, большого эффекта». Это двухпользовательская игра, где каждый игрок по очереди вводит угол и силу броска для метания взрывных бананов с крыши небоскрёба. На траекторию влияет ветер и выбранное значение гравитации.
Ключевые свойства в одном предложении:
- Простые правила: введите угол и силу — наблюдайте траекторию.
- Параметры можно менять: скорость, гравитация, влияние ветра.
- Исходный код открыт и редактируем в QBasic — учебный материал для начинающих.
Опыт игроков, знакомых с Scorched Earth или Worms, перекликается с Gorillas: та же базовая механика артиллерии, но в компактной и доступной форме.

Важно: Gorillas — это не только игра, но и демонстрация, как небольшой образец кода может стать образовательной платформой: дети могли открывать исходник, менять константы и видеть результат сразу.
Как игра оказалась в MS‑DOS
Коротко о вехах:
- 1981 — появление PC‑DOS с IBM PC.
- 1991 — выход MS‑DOS 5.0; Microsoft впервые серьёзно позиционирует DOS как розничный продукт.
- В комплект MS‑DOS 5.0 добавили QBasic и четыре примера программ, чтобы помочь новым пользователям и начинающим программистам.
Компания хотела сделать MS‑DOS привлекательнее в розничной продаже: нужны были заметные функции и демо‑программы, которые покупатель мог бы оценить сразу. QBasic получил набор примеров: MONEY.BAS, REMLINE.BAS, NIBBLES.BAS и GORILLA.BAS.
Исходный код Gorillas был создан небольшой группой студентов из программы “co‑op” Microsoft: Ричард Мо (дизайн, музыка, графика), Лэнс Деларм и Лайл Хейзл (код механики и генерации городского пейзажа). Игра была переписана в QBasic из более ранних образцов артиллерийных игр, чтобы соответствовать лицензированию и правам Microsoft.

Зачем именно гориллы? Разработчики сознательно отказались от танковых баталий по правовым причинам и искали «смешной» и непротиворечивый образ. Король‑Конг и гориллы выглядели уместнее, чем клоуны, кидающие пироги с крыш.
Наследие и почему это важно
Gorillas стала доступным входом в программирование для целого поколения. Причины влияния:
- Исходный код был виден и редактируем — идеальный учебный материал.
- Небольшой объём кода (примерно 1 134 строки) позволяет понять архитектуру простой игры целиком.
- Распространение в составе MS‑DOS означало, что её видели миллионы пользователей по всему миру.
Истории: многие разработчики вспоминают Gorillas как первый пример, который «заинтересовал» их в коде; для некоторых это стала прямая дорога в индустрию игр.
Важно: игра распространялась с каждым пакетом MS‑DOS и многими версиями Windows до Windows 2000. Позже игры были убраны по мере смены платформ и перехода на новые версии ОС.

Как запустить Gorillas сегодня — пошагово
Варианты запуска, перечисленные по простоте:
В браузере через Internet Archive (самый простой):
- Откройте страницу с GORILLA.BAS на Internet Archive.
- Нажмите кнопку питания в центре эмулятора. Эмулятор загрузит MS‑DOS и QBasic.
- Чтобы запустить игру из кода, кликните по окну эмулятора и нажмите Shift+F5.
Локально в DOSBox:
- Установите DOSBox (доступен для Windows, macOS, Linux).
- Смонтируйте папку с GORILLA.BAS как виртуальный диск и запустите QBASIC.EXE.
- Запустите файл или отредактируйте и запустите программу.
Перенос кода в современный интерпретатор или среду:
- Портируйте логику в Python (Pygame), JavaScript (Canvas) или Swift; это хороший учебный проект.

Примечание: исходная игра не включает компьютер‑контролируемого игрока — только два человека за одной клавиатурой.
Быстрые шаги для игры
- Запустите игру.
- Введите имена игроков.
- Установите количество очков для окончания партии.
- При необходимости измените гравитацию (меньше — значит более длинная дуга полёта).
- Нажмите P для начала. Игроки вводят угол (в градусах) и силу (единицы внутри игры).
Простейшая физика: как думает Gorillas
Gorillas использует классическую задачу баллистики для расчёта траектории с учётом ветра и гравитации. Здесь краткая математическая модель, полезная при портировании или настройке параметров:
- Начальная скорость v (в «единицах игры»).
- Угол запуска θ (в градусах); в формулах переводите в радианы: θ_rad = θ * π / 180.
- Компоненты скорости: vx = v cos(θ_rad), vy = v sin(θ_rad).
- С учётом ветра можно добавить постоянное ускорение ax (положительное — в сторону x): ax = wind * k (k — масштабный коэффициент).
- Обычные уравнения движения по осям:
- x(t) = x0 + vx t + 0.5 ax * t^2
- y(t) = y0 + vy t - 0.5 g * t^2 (g — гравитация, положительная величина)
Критерий попадания — пересечение координаты бомбы с позицией гориллы (с учётом радиуса поражения).
Важно: в классическом QBasic и в оригинальной игре все параметры дискретизованы и масштабированы под экранную сетку; при портировании используйте нормализацию координат и шаг времени dt ≈ 0.02–0.05 с для гладкой анимации.
Пример настройки переменных в QBasic (фрагмент)
REM Пример изменения скорости и гравитации в GORILLA.BAS
SPEEDCONST = 3 ' уменьшает или увеличивает общую скорость игры
GRAVITY = 9.8 ' значение гравитации, можно менять: 1–20
WIND = -2 ' отрицательное значение дует влевоЭтот псевдофрагмент демонстрирует, какие константы обычно встречаются и как их менять, чтобы поиграть с поведением снаряда.
Альтернативные подходы и порты
Если вы хотите поиграть, отладить или использовать идею Gorillas в учебных проектах, рассмотрите следующие варианты:
- Переосмысление в JavaScript + Canvas: даёт мгновенную публикацию в браузере и простой обмен URL.
- Порт в Python с Pygame: учебный проект для освоения событийной модели и отрисовки спрайтов.
- Swift/SwiftUI: порт для iOS/macOS с сенсорным управлением.
- Современные физические движки (Box2D) для более реалистичных столкновений и взаимодействий.
Контрпример/когда это не сработает:
- Если цель — сложная многопользовательская сетевка — исходный дизайн слишком прост и потребует переработки сетевого стека.
- Если необходима современная графика и звук — легче взять идею и переписать визуальный слой, чем пытаться адаптировать оригинальный код.
Ментальные модели и эвристики
- «Модель траектории»: думайте в терминах vx и vy отдельно — горизонтальная скорость меняется медленно (ветер), вертикальная — постоянно уменьшается (гравитация).
- «Сетчатая итерация»: при подборе угла начинайте с 45° и корректируйте по направлению и силе; при сильном ветре увеличивайте силу и компенсируйте угол.
- «Изменяй одну переменную»: чтобы понять эффект гравитации или ветра, меняйте только одну константу за раз.
Контрольные списки по ролям
Для учителя, желающего использовать Gorillas в классе:
- Убедиться, что у учащихся есть доступ к Internet Archive или DOSBox.
- Подготовить лист с задачами: изменить гравитацию, добавить автоматический ветер, реализовать счетчик попаданий.
- Провести мини‑лекцию по баллистике и показать пример расчёта.
- Попросить студентов документировать свои изменения в версии программы.
Для ученика/студента, кто портирует игру:
- Считать исходник GORILLA.BAS.
- Выделить модули: ввод, физика, генерация городского пейзажа, отрисовка, звуки.
- Выбрать целевую платформу и API отрисовки.
- Написать единичные тесты для функции расчёта положения снаряда.
Для ретро‑геймера:
- Попробовать Internet Archive для аутентичности.
- Если нужно ускорение/замедление игры — использовать SPEEDCONST.
- Сохранить любимые настройки гравитации и ветра отдельно.
Сценарий разработки: мини‑методология порта (шаги)
- Изучение: откройте GORILLA.BAS и найдите ключевые функции.
- Валидация: запустите оригинал в эмуляторе, зафиксируйте поведение по умолчанию.
- Абстрагирование: выделите уравнения движения и параметры (g, wind, speed).
- Рефакторинг: сделайте отдельные функции для расчёта траектории.
- Тестирование: напишите набор входных значений (угол, сила, ветер) и ожидаемые траектории.
- UI: сделайте удобный ввод и визуальную индикацию попадания.
- Оптимизация: сгладьте отрисовку и добавьте эффект взрыва и анимацию.
Совместимость, миграции и советы для локали
- DOSBox работает на всех популярных платформах; рекомендован для локального запуска.
- Internet Archive даёт мгновенный доступ без установки.
- При портировании следите за масштабом пикселей и соотношением сторон: экран оригинала часто 4:3; современные экраны 16:9.
Риски:
- При переносе точность расчётов может измениться из‑за иной частоты кадров и шага времени.
- Неправильно масштабированные координаты приведут к «плавающим» или слишком коротким траекториям.
Примеры тестов и критерии приёмки
Критерии приёмки для порта:
- Траектории при одних и тех же параметрах должны быть схожи на визуальном уровне.
- Попадание детектируется корректно и стабильно.
- Управление углом и силой интуитивно понятно.
Тест‑кейсы:
- Угол 45°, сила 50, ветер 0: ожидается симметричная дуга, достигающая максимальной дальности при текущей скорости.
- Ветер сильный вправо: увеличьте силу и уменьшите угол для попадания по дальним целям.
Часто возникающие вопросы
Q: Где найти оригинальный GORILLA.BAS? A: В дистрибутиве MS‑DOS 5.0 и в онлайн‑архивах вроде Internet Archive. Там можно запускать его в эмуляторе прямо в браузере.
Q: Можно ли добавить компьютерного соперника? A: Да — достаточно реализовать алгоритм поиска угла и силы (например, перебор/бинарный поиск по силе с учётом ветра).
Q: Почему игра отредактирована или удалена из поздних версий Windows? A: Смена платформ, обновления экосистемы и фокус на новых продуктах привели к исключению старых примеров из некоторых сборок.
Факты и числа (факт‑бокс)
- Год появления в MS‑DOS: 1991 (версия 5.0).
- Примерный размер исходного кода: ~1 134 строки.
- Изначальный язык: QBasic (интерпретатор шёл в комплекте MS‑DOS).
Примеры кода и сниппет для портирования (псевдо‑Python)
# Псевдо‑функция для расчёта траектории в портированном проекте
import math
def trajectory(v, angle_deg, wind, g, dt=0.02, max_t=10):
angle = math.radians(angle_deg)
vx = v * math.cos(angle)
vy = v * math.sin(angle)
x, y = 0.0, 0.0
ax = wind # подберите масштаб для соответствия игре
t = 0.0
path = []
while t < max_t and y >= 0:
path.append((x, y))
x += vx * dt + 0.5 * ax * dt * dt
vy -= g * dt
y += vy * dt
vx += ax * dt
t += dt
return pathЭтот пример иллюстрирует базовую идею и пригодится при портировании поведения игры.
Заключение
Gorillas — это значимый культурный и образовательный феномен эпохи MS‑DOS: простая механика, открытый исходный код и широкое распространение сделали её отправной точкой для многих будущих разработчиков. Сегодня легко запустить оригинал в эмуляторе, а идея — переосмыслить в современных языках — остаётся отличным учебным проектом.
Важно: если ваша цель — обучение, используйте исходник как демонстрацию принципов: ввод параметров, базовая физика, генерация уровней и работа со звуком.
Краткая сводка
- Gorillas — двухпользовательская артиллерийская игра, поставлявшаяся с MS‑DOS 5.0.
- Исходный код открыт, что сделало её учебной платформой для многих программистов.
- Сегодня играть удобно через Internet Archive или DOSBox, а портирование — популярная задача для обучения.
Однострочный глоссарий
- QBasic — интерпретатор BASIC, входивший в состав MS‑DOS 5.0; простой язык для обучения.
- DOSBox — эмулятор DOS для современных ОС.
- Траектория — путь полёта снаряда, определяемый скоростью, углом, ветром и гравитацией.
Похожие материалы
Отключить автосохранение Instagram и скачать посты
Еженедельный планер в Canva: шаблон и инструкция
Проверка данных в Excel: выпадающие списки и правила
Включить подсветку клавиатуры на Windows и Mac
Windows Update завис — что делать