https://github.com/syperolao/hammurabi_clone
Вам предлагается разработать клон игры Хаммурапи – Правитель Египта.
https://github.com/syperolao/hammurabi_clone
console-app console-game cplusplus-20
Last synced: 3 months ago
JSON representation
Вам предлагается разработать клон игры Хаммурапи – Правитель Египта.
- Host: GitHub
- URL: https://github.com/syperolao/hammurabi_clone
- Owner: SyperOlao
- Created: 2025-09-26T21:10:15.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2025-10-03T13:03:00.000Z (4 months ago)
- Last Synced: 2025-10-03T15:11:16.578Z (4 months ago)
- Topics: console-app, console-game, cplusplus-20
- Language: C++
- Homepage:
- Size: 49.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# #1: Hammurabi
## История
В 1968 году Дугом Диментом (Doug Dyment), сотрудником компании Digital
Equipment Corporation, была создана игра The Sumer Game – текстовая
экономическая игра, требующая от игрока управления экономическими
ресурсами города. Написана она была на языке программирования FOCAL ,
разработанном коллегой Димента Ричардом Мериллом (Richard Merrill).
Считается, что The Sumer Game была основана на игре 1966 года The
Sumerian Game, намного более сложным экономическим симулятором,
предназначенным для детей. Множество версий этой игры было затем
реализовано на языках программирования FOCAL и FOCAL-69, а в 1973
Дэвид Ал (David H. Ahl) выпустил книгу «BASIC Computer Games», содержащую
исходный код множества игр, написанных на языке программирования
BASIC. В том числе, в книге был код игры, основанной на The Sumer Game,
переписанной на BASIC. Эта расширенная версия игры, названная Hamurabi
(Хаммурапи), быстро приобрела популярность, благодаря как
популярности языка программирования BASIC, так и книги «BASIC Computer
Games», которая стала первой компьютерной книгой, проданной тиражом
более миллиона экземпляров. Игра Hamurabi повлияла на многие более
поздние стратегические игры и игры-симуляторы, и, фактически, является
родоначальником жанра градостроительных игр.
## Правила игры
Игра состоит из 10 раундов, в течение которых игрок, выступающий в роли
правителя древнего Вавилона Хаммурапи, распоряжается ресурсами
города.
**Ресурсами являются:** население, акры земли и бушели пшеницы.
Каждый **раунд** представляет **один год** правления.
Каждый гражданин возделывает некоторое количество акров земли, в результате чего
производится некоторое количество бушелей пшеницы.
Эта **пшеница** может использоваться либо **в качестве еды** для граждан (которые при
недостатке еды умирают от голода), либо **в качестве семян** для посева
урожая на следующий год.
Игрок также может покупать и продавать землю,
используя пшеницу как валюту.
Каждый раунд начинается с доклада советника «Мой повелитель,
соизволь поведать тебе» о текущем состоянии дел в городе, состоящем из
сборов пшеницы за прошлый год, акрах земли, занимаемых городом, и
изменении в населении. После чего, советник спрашивает, сколько земли
необходимо купить или продать в этом году, сколько пшеницы
использовать на семена, и сколько пшеницы использовать в качестве еды.
Игрок отвечает на эти вопросы вводя целые числа.
Игра скрывает от игрока некоторую часть важной информации: правила и
коэффициенты расчета параметров за раунд, но это сделано намеренно.
Подбор этих параметров является частью игрового процесса.
Разнообразие игре обеспечивает генератор случайных чисел. Цена земли
определяется случайным образом в начале каждого раунда. Так же
случайным образом определяются количество бушелей пшеницы
собранных с каждого акра земли, количество пшеницы, съеденной
крысами, и количество новых граждан, прибывших в город в прошлом году.
В каждом году есть некоторая вероятность чумы, уменьшающей
население города наполовину.
Игра заканчивается после 10 раундов, или ранее, если все население
города вымрет, или более 45 процентов населения умрут от голода в
течение одного раунда.
## Алгоритм
Игра начинается со следующими параметрами:
- В городе проживает 100 человек
- В закромах города 2800 бушелей пшеницы
- Город занимает 1000 акров земли
#### В начале каждого раунда игрок видит
- Номер раунда
- Количество людей, умерших от голода (если не было, то не
показывается)
- Количество людей, приехавших в город (если не было, то не
показывается)
- Была ли чума
- Текущее население города
- Сколько всего пшеницы было собрано и сколько пшеницы было
получено с акра
- Сколько пшеницы уничтожили крысы
- Сколько акров сейчас занимает город
- Какова цена одного акра земли в этом году
Цена акра определяется случайно в начале каждого раунда из диапазона
от 17 до 26
#### Затем игрок вводит:
- Количество акров земли, которые он хочет купить
- Количество акров земли, которые он хочет продать
- Количество бушелей пшеницы, которые будут использованы в
качестве еды
- Количество акров земли, которые необходимо засеять пшеницей
Игра контролирует вводимые значения, и, если значения оказываются
некорректными (например, количество земли, которое хочет купить игрок
не может быть оплачено имеющимся пшеницей, или введено
отрицательное количество акров земли), выводит соответствующие
предупреждения.
#### Для контроля используются следующие значения (некоторые из них скрыты от игрока, он должен определить их сам):
- Продажа и покупка земли выполняются по текущей цене
- Каждый житель потребляет 20 бушелей пшеницы в год
- Каждый житель может обрабатывать максимум 10 акров земли
- Каждый акр требует .5 бушелей пшеницы на семена
#### Переход к следующему раунду определяется правилами
- Количество пшеницы, собранного с акра определяется случайно из
диапазона от 1 до 6
- Крысы съедают случайное количество пшеницы из диапазона от 0 до
0.07*имеющееся количество бушелей с учетом сборов
- Каждый житель потребляет 20 бушелей пшеницы в раунд, те, кому не
хватает еды, умирают от голода
- Если за раунд умерли от голода более 45% населения, игрок сразу же
проигрывает
- Количество вновь прибывших определяется по формуле:
умерших_от_голода /2 + (5 – сбор_с_акра) * бушелей_пшеницы / 600 +
1
затем, если это количество меньше 0, берется 0, если больше 50, то
50
- Чума возникает с вероятностью 15%, если это происходит, то
население уменьшается наполовину с округлением вниз
#### После 10 раунда игра вычисляет следующие статистики:
- Среднегодовой процент умерших от голода P
- Количество акров земли на одного жителя L
и выставляет игроку оценку по результатам правления:
- Если P > 33% и L < 7 – плохо («Из-за вашей некомпетентности в
управлении, народ устроил бунт, и изгнал вас их города. Теперь вы
вынуждены влачить жалкое существование в изгнании»)
- Если P > 10% и L < 9 – удовлетворительно («Вы правили железной
рукой, подобно Нерону и Ивану Грозному. Народ вздохнул с
облегчением, и никто больше не желает видеть вас правителем»)
- Если P > 3% и L < 10 – хорошо («Вы справились вполне неплохо, у вас,
конечно, есть недоброжелатели, но многие хотели бы увидеть вас во
главе города снова»)
- В противном случае – отлично («Фантастика! Карл Великий,
Дизраэли и Джефферсон вместе не справились бы лучше»)
## Пример раунда
Ниже приведен пример одного раунда игры, значения, вводимые игроком
выделены жирным шрифтом
Мой повелитель, соизволь поведать тебе
в году 3 твоего высочайшего правления
12 человек умерли с голоду, и 30 человек прибыли в наш великий город;
Чума уничтожила половину населения;
Население города сейчас составляет 51 человек;
Мы собрали 600 бушелей пшеницы, по 3 бушеля с акра;
Крысы истребили 48 бушелей пшеницы, оставив 3103 бушеля в амбарах;
Город сейчас занимает 220 акров;
1 акр земли стоит сейчас 21 бушель.
Что пожелаешь, повелитель?
Сколько акров земли повелеваешь купить? **25**
Сколько бушелей пшеницы повелеваешь съесть? **4000**
Сколько акров земли повелеваешь засеять? **110**
О, повелитель, пощади нас! У нас только **51** человек, **3103** бушелей пшеницы и **220**
акров земли!
Сколько акров земли повелеваешь купить? **25**
Сколько бушелей пшеницы повелеваешь съесть? **1200**
Сколько акров земли повелеваешь засеять? **110**
Мой повелитель, соизволь поведать тебе
...
## Задание
Вам предлагается разработать клон игры Хаммурапи – Правитель Египта.
Игра должна представлять собой консольное приложение,
осуществляющее ввод/вывод при помощи . Игра должна давать
пользователю возможность прерваться (выйти из игры) в начале каждого
раунда и автоматически сохранить прогресс в файле. При повторном
запуске игры, если имеется сохраненный прогресс, игра должна спросить
надо ли продолжить предыдущую игру или начать игру заново. Для работы
с файлами используйте библиотеку .
Вы можете расширить экономическую модель игры, и ввести
дополнительные параметры, однако их количество не должно превышать
5