Код Hamurabi_2 (начало см.
http://vlkamov.livejournal.com/722060.html )
Переведенный на русскоперловый язык код игры стал существенно более прозрачным. Это позволило побороть почти все "макароны", остались две малосущественные, описывающие экстремальное увольнение. Вся программа разбита на последовательно исполняемые блоки с ясными функциями. Для красоты кода пришлось немножко изменить порядок исполнения блоков и привести его в соответствие естественному ходу вещей. В оригинальном коде первый годовой цикл отрабатывается без участия игрока, так что диалог начинается годового отчета. Я не поленился отчет перенести в конец, так что игрок отдает распоряжения с первого же года, а итоги года подводятся в его конце.
Чума, голодомор и прирост населения вынесены в отдельный демографический блок. Интересно отметить, что в формуле прироста население стоит в знаменателе, что заставляет сомневаться в ориентации авторов.
При сборке-разборке традиционно остались лишние детали:
$C = 0; # ?????????
Что делает эта вспомогательная переменная в операциях с землей и распределении зерна, понять так и не удалось.
Итоговые критерии весьма специфические - площадь земли на душу населения и смертность от голода. Поэтому чума здорово улучшает показатели - чем больше вымерло, тем джефферснее. А если "не повезло" - количество едоков не сокращается по естественным причинам - такая же смертность низведет управляющего в "иваны". Чисто невидимая рука рынка.
Игра сочинена в какие-то дремучие года, и уже тогда либеральная общественность пренебрегала состоянием общества в целом, выпячивая "витрину". Игрокам с детства внушали, что территорию можно сдать, население нехай уменьшается, лишь бы права отдельной личности были защищены.
( Собственно код )Update
Если ваш интерпретатор Perl не поддерживает русскоперловый язык, то конвертировать имена в латиницу можно с помощью вот этой программки:
http://vlkamov.narod.ru/rupl.zipСгрузите и распакуйте. Скопируйте код, находящийся под катом в файл hamurabi.rupl и команда
perl rupl2pl.pl hamurabi.rupl > tmp.pl ; perl tmp.pl
сразу конвертирует в латиницу и запускает исполнение.