По поводу замкнутости железнодорожных сетей...

Поговорим о транспортной стратегии от JoWood

Модераторы: celt, Группа модераторов

По поводу замкнутости железнодорожных сетей...

Сообщение Alexey » Ср дек 08, 2004 19:07

Всем привет!
Вот столкнулся с проблемой.

Не помню точно: то ли в мануале, то ли еще где-нить в инете на кракерских сайтах игрушек - вычитал, что можно обойти проблему замкнутости железнодорожных сетей двумя путями.
( Под замкнутостью я подразумеваю, что уже раз начав строить
ж/д пути в одном месте на карте, нельзя просто так начать строить
другую сеть в ином месте - вся система должна быть связяна.
Я думаю с этой проблемой сталкивались новички! )

Способ первый:
Если необходимо построить совершенно другую ж/д ветку, никак не относящуюся к уже существующим ,- то можно от какой-либо уже существующей станции достроить рельсы на предполагаемое новое место строительства, там поставить станцию (таким образом система останется целостной); а после обрубать эти ненужне рельсы, и начинать пясать от полученной новой станции.

Способ второй:
Я случайно заметил, что когда только-только ставишь станцию (кликаешь мышкой, когда на кончике ее курсора висит зеленый ее образ!), то в долю секунды кнопка "ОК" активна ,- и только после несколький итреаций программа понимает, что либо станция оторвана от всех остальных, либо денег на строительство не хватает (чем я кстати зачастую и пользуюсь!!!). Этот эффект особенно заметен если оперативки на компьютере мало, а игрушка ведь ее требует достаточно много. Так вот, клавиша Enter в любом из меню игры подтверждает совершение какой-либо оперции, в частности и подтверждения установки ж/д станции. Попробуйте, как только кликнув мышей, тут же нажать Enter - я не ручаюсь, что у вас сразу получиться, но раза с пятого вполне. Определите приблизительный пероид, когда кнопка ОК становится активной ,- тогда и дерзайте! :) Это в качестве совета.
Но я думаю и этот способ многим известен.

Так вот, в чем собственно у меня проблема в процессе игры возникла. Я долго думал, в чем же дело.
В начале расскажу симптомы: Начинаю я иргать всегда с самого раннего периода - 1850 год. где-то к году 1910-му, когда система моя приобретает вполне определенный и солидный вид - игра виснет, причем не спонтанно. Подвисает капитально (даже в Windows не выходит), когда на одной из последних рельсовых ветвей, которые я построил, я на нажимаю мышей на железнодорожный состав, дабы узнать график его передвижения, или из списка графиков движения (я думаю объяснять не надо). В это врямя над курсором мыши еще успевает всплыть посказка со свойствами данного локомотива. И в этот прекрастный момент игрушка зависает! Даже после перезагрузки компьютера - все повторяется с тем же успехом!
Причем при загрузке предыдущих сохранений, когда эта ветка еще не построена, или только-только начала функционировать, т.е. по ней пошел этот злополучный состав ,- все в порядке! - прекрастно можно просмотреть график движения, и подкорректировать при желании.
Долго думал - в чем проблема, пока не начал мыслить в русле программирования. И догадка моя состоит в следующем:

Почему же разработчики не смогли сделать так, чтобы система (причем только железнодороджая) могла быть разорвана, состоять из отдельный, несвыязных частей? Ведь игра так пристально пытается навязать соответствие с реальной жизнью, транспортных систем в реальной жизни. Почему все рельсы должны быть замкнуты (об этом даже в мануале написали с извинениями)? Неужели это так затруднительно организовать на уровне программирования? И скорее всего это так!

(// дальнейшие рассуждения будут понятны всем, кто хоть как-то шарит в программировании и высшей математике. Иным - можно следующий абзац пропустить)
Я думаю, что ж/д система разработчиками схематически представляется в виде графа - а этот граф обязан быть замкнутым, поскольку программа ищет кратчайшие пути передвижения, обычные маршруты в этом графе. В разорваном же графе это проделать невозможно простейшим алгоритмом. А как известно эти самые графы в программировании легко представляются в виде матриц - массивов, простыми словами. Да и вообще, наверняка там создан всего лишь один массив для хранения системы рельс, их пересечения и семафоров. Для разорванных систем потребовалось бы каждый раз создавать такие динамические массивы. Судя по всему разработчики решили не парить себе мозги.

Проще и короче говоря, программисты так решили - так и сделали, создав для меня проблему, хотя может кто-то еще с ней сталкивался.
Подчиняясь этим рассуждениям, я решил, что программа еще как-то справляется, когда я мельком нажимаю клавишу Enter, и что-то как-то там с трудом обрабатывает, когда моя ж/д система состоит из разорванных клочков, не соединенных друг с другом. Но где-то на восьмом таком "клочке" (программисты, я думаю, поймут почему именно на восьмом) - алгоритм сдыхает, ругается видимо про себя и тихонько так, отказывается работать! Причем строить такие отдельные ветки программа резрешеат сколько угодно, но вот как только ты решишь пустить по одной из них поезд - тут начнутся проблемы. Первые несколько ходок этото состав будет верно приносить тебе прибыль, и можно будет без проблем вызывать и изменять график его движения, количество загрузки товаров и т.д. Но по истечении определенного времени, в очередной раз замыслив изменить график, или просто при необходимости заменить локомотив на более новый ,- программа, как я уже говорил, подвисает.

Вот собственно у меня вопрос: может такое быть? Верны ли мои размышления? И вообще - кто-либо с таким еще сталкивался??? Или я один в поле воин! :)
// Хвала тому, кто дочитал мои трактаты до конца - я сам не ожидал, что это так много займет! Пишите - буду рад услышать ваши комментарии! :)
Аватара пользователя
Alexey
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 20
Зарегистрирован: Пт сен 03, 2004 18:56
Откуда: Киев

Сообщение Oleg » Чт дек 09, 2004 00:55

Вау. Это сильно. Я не программист, но сейчас как раз столкнулся с необходимостью писать программу нахождения пути (об этом в другой раз) - так что примерно представляю, о чём речь.
Помню, такая же хитрость применялась в Railroad Tycoon - строили кусок пути потом отрезали.

Мне не совсем понятно, что таког