почему в open ttd 048 такие глупые соперники?

OpenTTD - современная игра, клон Transport Tycoon Deluxe с открытым исходным кодом, написанный на C и С++. Содержит ряд ключевых улучшений и возможность игры по сети. На данный момент это главное направление развития игры.

Модераторы: eraserkry, Mihamster, Smoky555, Группа модераторов

почему в open ttd 048 такие глупые соперники?

Сообщение Kain » Ср фев 07, 2007 16:34

люди поясните плиз. очень давно играл в TTD/ щас решил поставить Open ttd. через 10 лет игры мне становиться скучно. все опции на максимуме. что делать? в чем проблема?

в TTD для windows играть как не хочеться... :cry:
Kain
Пассажир
Пассажир
 
Сообщения: 4
Зарегистрирован: Ср фев 07, 2007 16:31

Сообщение Quark » Ср фев 07, 2007 16:48

Потому что умных «компьютеных» соперников создать очень сложно. Но в OpenTTD можно играть по сети с реальными людьми. А вот почему они такие глупые — это уже за рамками обсуждения :)
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Kain » Ср фев 07, 2007 17:15

да нет я не совсем об этом.

в TTD для windows противники имхо намного умнее...
они:

1) не строят аэропорты в начале игры на все деньги +)
2) не выравнивают на все деньги местность +)
3) подрезают тебя при низких рейтингах на перевозки
итд итп...
Kain
Пассажир
Пассажир
 
Сообщения: 4
Зарегистрирован: Ср фев 07, 2007 16:31

Сообщение DarkFenX » Ср фев 07, 2007 17:26

Для ОТТД со всеми его расширениями нужен новый АИ, а кто его напишет?
- It's hot as hell in here.
- You see it too? For me, it's always like this.
Аватара пользователя
DarkFenX
Директор
Директор
 
Сообщения: 303
Зарегистрирован: Сб окт 28, 2006 12:50
Откуда: Russia, Saint-Petersburg

Сообщение Pk » Вт фев 13, 2007 00:59

Изображение

2 ALL
Лучше б чем трепаться идеи/решения бы кидали или хоть обдумывали и выдавали ЛИЧНОЕ резюме логичности предложений - Quark хорошо, а ещё мнения - лучше. Я не гигант мыслеобраза и ВОЗМОЖНО завтра до 10 утра выложу обработанный вариант того бреда, что выдал ранее (будет на 2-х файлах).

По существу вопроса:
А что ты хочешь от софтины написанной после 1996-го года, да ещё и на С? Тут народ не слышал про "прерывания" и т.д. и т.п.
Почитал исходнички.... укомплектованный пипец.
1) ремарки. Более убого сделанного коммента я не видел. В строчку слабо!?
2) переменные. Кто-то мне скажет "длинные переменные - это чтобы сразу въехать в смысл".. и т.п. А РЕМАРКИ на что!? И длинные переменные забивают мозг, так же они долги при наборе.
3) какой (человек с альтернативным образом мышления) догадался совать ртф в тхт!? ХР же всё в блокнот отправляет!
4) отсутствие нумерации строк - не способствует быстрой сборке блок-схемы. И сложнее понимается сама структура.
ПРИМЕР: найдите-ка в какой-нибудь книге главу номер 7. А теперь не глядя на нумерацию страниц найдите её.

В этих пред-бейсиковских языках (A, B, С/C++, Дельфи, D) сложно делать логические схемы, этот язык не для этого предназначен. Так же логика мышления нормальных людей не всегда даёт сделать парадоксальный ход.
В итоге ИИ тупит.

Почему "пред"? А вы посмотрите хотя бы на компилятор - по сравнению со встроенным компилятором в ZX-Spectrum он не имеет даже:
1. автозавершение строк (":", для С - ";")
2. встроенной работы со строками в памяти (на ранних версиях человек сам указывал, КУДА писать программу в оперативку) По умолчанию, всё делается как в С.
3. гибкой системы формализации операторов (в итоге у С бешенные скобки и т.п.).
4. Чёткого оператора "go to", который даёт возможность написания 2-х мерных программ.
5. Просто человеческие условия работы.

Так что вопрос не в том, кто. А в том, как.

ПРОСЬБА:
1. при написании кода все переменные в начале кода присваивайте к коротким (ACN:=Aircraft_crush_number), в конце операции повторите операцию, но наоборот. С короткими переменными вам же будет проще работать. Сравните:
f.incm=(trk.inkm*clctm)-(prj.prce+veh.rc*clctm) и
Physical.income = (track.income * calculation_limit_time) - (project.price + vehicle.running_cost * calculation_limit_time)
А ведь можно сократить и до:
A=(B*C)-(D+E*C).
2. ремарки оформляйте в НАЧАЛЕ кода (секции) и В ОДНУ строчку на ремарку. Проще переводить.
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение The Pretender » Вт фев 13, 2007 01:09

2Pk: а ты писал когда нибудь большие программы вообще?
Используй goto и переменные типа A, B, C и D и попробуй написать, к примеру, какой-нибудь патч к OTTD или программу средненького объема.
The Pretender
Шпалоукладчик
Шпалоукладчик
 
Сообщения: 11
Зарегистрирован: Вт янв 09, 2007 16:17

Сообщение Pk » Вт фев 13, 2007 01:28

The Pretender писал(а):2Pk: а ты писал когда нибудь большие программы вообще?
Используй goto и переменные типа A, B, C и D и попробуй написать, к примеру, какой-нибудь патч к OTTD или программу средненького объема.

Подобные переменные можно использовать для ЛОКАЛЬНЫХ рассчётов.
И что словосочетание "модульное программирование" уже откинуло копыта и валяется на обочине истории?
Кто мешает (кроме лени и безграмотности) довести go to к виду "go to 82:10050" и/или "go to "..\ai.h":340", где:
go to [номер/имя/адрес блока]:[номер строки/имя/адрес], опять же, если номер блока не указан - перейти к строке с этим номером в этом же блоке.

Опять же при нумерации строк можно легко производить разбивку программы на блоки. И видно это только по анализу нолей и пятёрок.

Так же посмотрев исходники я не увидел причины не использовать номера строк.
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Koser » Вт фев 13, 2007 01:41

The Pretender писал(а):2Pk: а ты писал когда нибудь большие программы вообще?
Используй goto и переменные типа A, B, C и D и попробуй написать, к примеру, какой-нибудь патч к OTTD или программу средненького объема.

Поддерживаю.

2Pk
Такое впечетление,что ты бредишь.
Предлагаешь ИИ писать на басике? :shock:
Аватара пользователя
Koser
Начальник станции
Начальник станции
 
Сообщения: 107
Зарегистрирован: Пн май 15, 2006 12:21

Сообщение Pk » Вт фев 13, 2007 01:50

Koser писал(а):Такое впечетление,что ты бредишь.
Предлагаешь ИИ писать на басике? :shock:

Не думаю, что есть особая разница, на чём его писать. И в добавок, разве есть разница между этими языками для этой цели?
Что нам надо? Массив, цыферка из него, плюс-минус-разделить-умножить, запаковать в массив. Всё.
Скажете, бэйсик этого не поддерживает?

Пишите в чём угодно, но Васюк более приспособлен, когда с ним подружишься, а С он хорош тем, что его без обучения фиг поймёшь.

ADDED:
Ну, ещё цикл "For Next" и "Go Sub" с "If Then"
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Koser » Вт фев 13, 2007 02:06

Pk писал(а):
Koser писал(а):Такое впечетление,что ты бредишь.
Предлагаешь ИИ писать на басике? :shock:

Не думаю, что есть особая разница, на чём его писать. И в добавок, разве есть разница между этими языками для этой цели?
Что нам надо? Массив, цыферка из него, плюс-минус-разделить-умножить, запаковать в массив. Всё.
Скажете, бэйсик этого не поддерживает?

Пишите в чём угодно, но Васюк более приспособлен, когда с ним подружишься, а С он хорош тем, что его без обучения фиг поймёшь.

ADDED:
Ну, ещё цикл "For Next" и "Go Sub" с "If Then"


Разговор идет о ИИ,а не о бухгалтерском учёте!
Вот как раз работа с массивами,цифирками,циклами на байсике - биг тормоз.С ИИ написаным байсике, игра превратится в пошаговую стратегию.Разница по скорости между С и байсиком колосальная.
Аватара пользователя
Koser
Начальник станции
Начальник станции
 
Сообщения: 107
Зарегистрирован: Пн май 15, 2006 12:21

Сообщение Pk » Вт фев 13, 2007 02:09

Тут народ не слышал про "прерывания"
.
Со, нэ?
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Pk » Вт фев 13, 2007 02:14

1. Прерывание - временная задержка выполнения программы. Кто мешает использовать аппаратный принцип?
2. Позволь спросить, а что выполняет процессор - ассемблер или язык программирования?
3. Хороший ИИ - это именно бухгалтерия, которая иногда орудует стандартными штампами.
Или как ты иначе предлагаешь?
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Koser » Вт фев 13, 2007 02:47

Pk писал(а):1. Прерывание - временная задержка выполнения программы. Кто мешает использовать аппаратный принцип?
2. Позволь спросить, а что выполняет процессор - ассемблер или язык программирования?
3. Хороший ИИ - это именно бухгалтерия, которая иногда орудует стандартными штампами.
Или как ты иначе предлагаешь?


1 - без комментариев,даже углубляться не хочу.
2 - процессор поминает машинный код.(Ассемблер - транслятор с языка ассемблера в машинные команды.)
3 - уже писал.

За перевод в машинный код с языка программирования отвечает компилятор.Вот как раз компилятор басика рядом не стоял с Си,и даже с Делфи.
Аватара пользователя
Koser
Начальник станции
Начальник станции
 
Сообщения: 107
Зарегистрирован: Пн май 15, 2006 12:21

Сообщение Neko » Вт фев 13, 2007 02:57

Pk писал(а):2. Позволь спросить, а что выполняет процессор - ассемблер или язык программирования?


Процессор выполняет внутренние машинные инструкции и внутренние машинные микропрограммы.
Ассемблер - это уже ЯЗЫК программирования, правда самого низкого уровня для программирования на уровне машинных команд, но посредством более-менее дружественного символьного интерфейса с программистом.
Язык программирования "Си", первоначально создаваемый для написания операционных систем (первый UNIX для машин серии PDP-11 и наших СМ-1420) представлял собой симбиоз языка высокого уровня и ассемблера, и позиционировался как язык "среднего" уровня, т.е промежуточный между ассемблером и языком высокого уровня.

Поэтому, для программёров, изначально работавших на ассемблере, перейти на Си было делом сугубо техническим и не вызывающим больших проблем.
Обратный же переход от языка высокого уровня, например с языка, который в девичестве назывался Паскаль, перейти на Си чаше всего заканчивался крахом и сильнейшим психологическим стрессом, вылечить который можно было только длительным употреблением большого количества спиртосодержащих жидкостей.

Теперь по поводу споров о средстве написания АИ.
Почитав обсуждение в этой теме, мне показалось, что полемика ведётся не в той плоскости, где того надо было бы спорить.

Коллега pk, проявив приверженность к первым версиям языка Бэйсик, которые были реализованы на наших БК-001 (это нумерация строк, и goto, и упорное нежелание понять отличие компилятора от ИНТЕРПРЕТАТОРА), наверняка помнит, что в промежности перехода от процедурно-ориентированного программирования к объектно-ориентированному, т.е. переход от С к С++, так вот, в этой промежности было очень распространено так называемое "автоматное" программирование, т.е. основанное на теории конечных автоматов, которое интенсивно разрабатывалось в Ленинграде на кафедре прикладной математики.
Так вот, программирование с использованием конечных автоматов позволяет МАКСИМАЛЬНО отделить описание логики выполнения от непосредственной программной реализации этого выполнения.
Для написания АИ - это самое ОНО, да и при программировании PBS, особенно у станций - описательную часть логики перемигивания светофоров лучшее всего тоже делать на конечных автоматах. (Это я больше уже к себе обращаюсь по поводу NewPBS).
Несмотря на явную победу объектно-ориентированного программирования, теория конечных автоматов до сих пор продолжается развиваться в указанном заведении.
Под ДОСом там активно использовался юзеровский вектор прерываний, а под современными Виндузами вполне подходят "События".
Хотя можно делать и внутрепрограммный блок генерации ситуаций и анализа оных.
Револьвер - лучший аргумент в любом споре
Аватара пользователя
Neko
Президент
Президент
 
Сообщения: 750
Зарегистрирован: Чт окт 13, 2005 12:23
Откуда: Москва

Сообщение Quark » Вт фев 13, 2007 03:26

сразу извиняюсь, если что-то где-то резко написал — не хотел никого обидеть…

Pk писал(а):А что ты хочешь от софтины написанной после 1996-го года, да ещё и на С? Тут народ не слышал про "прерывания" и т.д. и т.п.
хм, а это к кому обращение?

Pk писал(а):Почитал исходнички.... укомплектованный пипец.
1) ремарки. Более убого сделанного коммента я не видел. В строчку слабо!?
эм, а что не так с ремарками?

Pk писал(а):2) переменные. Кто-то мне скажет "длинные переменные - это чтобы сразу въехать в смысл".. и т.п. А РЕМАРКИ на что!? И длинные переменные забивают мозг, так же они долги при наборе.
длинные переменные нужны, чтобы не вспоминать для чего нужны короткие :) они не забивают мозг в состоянии, именуемом «The Flow» :) кроме того, мозг запоминает не по количеству букв, а по количеству осмысленных слов (таким образом переменная из 4 несвязанных букв равна переменной из 4 слов)
ремарки нельзя ставить при каждом упоминании переменной, а набор — ну так автозавершение на что? а если не автозавершения — операции копировать/вставить для кого придумали? а множественные буферы?

Pk писал(а):3) какой (человек с альтернативным образом мышления) догадался совать ртф в тхт!? ХР же всё в блокнот отправляет!
эм, а это про что?

Pk писал(а):4) отсутствие нумерации строк - не способствует быстрой сборке блок-схемы. И сложнее понимается сама структура.
ПРИМЕР: найдите-ка в какой-нибудь книге главу номер 7. А теперь не глядя на нумерацию страниц найдите её.
хм, ну глава номер семь ищется за 3 сек командами «перейти к главе»,«7» :)
блок-схемы? хмм, я только для конечных автоматов понимаю их потребность — а тут они где нужны? и причём тут номера строк? (а, вспомнил, в школе чему-то такому учили, но я не слушал :))

Pk писал(а):В этих пред-бейсиковских языках (A, B, С/C++, Дельфи, D) сложно делать логические схемы, этот язык не для этого предназначен. Так же логика мышления нормальных людей не всегда даёт сделать парадоксальный ход.
В итоге ИИ тупит.
хмм, а почему эти языки пред-бейсиковые? вроде бейсик позже сделали…

Pk писал(а):Почему "пред"? А вы посмотрите хотя бы на компилятор - по сравнению со встроенным компилятором в ZX-Spectrum он не имеет даже:
1. автозавершение строк (":", для С - ";")
2. встроенной работы со строками в памяти (на ранних версиях человек сам указывал, КУДА писать программу в оперативку) По умолчанию, всё делается как в С.
3. гибкой системы формализации операторов (в итоге у С бешенные скобки и т.п.).
4. Чёткого оператора "go to", который даёт возможность написания 2-х мерных программ.
5. Просто человеческие условия работы.
эмм, о чём речь? во-первых, в ZX не было встроенного копмилятора, во-вторых, что значит «автозавершение строк» — в нормальной IDE целые циклы строятся автоматом по набору ключевого слова
в-третьих, в С++ есть работа со строками через STL, просто для низкоуровневых языков не было такого понятия как «динамический массив», коим и является строка
в-четвёртых, что значит «гибкой системы формализации операторов»? есть гибкая система шаблонов и макросов, а также перегрузки операторов и прочее
в-пятых, использование оператора «goto» считается плохой практикой и легко приводит к возникновению ошибок в программе — для операции перехода (условного, кому нужен безусловный?) есть много разных конструкций, позволяющих обходится без оператора безусловного перехода, кроме того в большинстве случаев «goto» используется либо для условного перехода, либо для выхода из блока
в-шестых, просто человеческие условия есть в IDE


Pk писал(а):1. при написании кода все переменные в начале кода присваивайте к коротким (ACN:=Aircraft_crush_number), в конце операции повторите операцию, но наоборот. С короткими переменными вам же будет проще работать. Сравните:
f.incm=(trk.inkm*clctm)-(prj.prce+veh.rc*clctm) и
Physical.income = (track.income * calculation_limit_time) - (project.price + vehicle.running_cost * calculation_limit_time)
А ведь можно сократить и до:
A=(B*C)-(D+E*C).
и в итоге через месяц уже абсолютно непонятно, что делает этот «короткий» код, к тому это сразу же непонятно другому кодеру
Кроме того, переменные могли быть обозначены парой страниц выше и алгоритм, их использующий так же может занимать несколько страниц

Pk писал(а):2. ремарки оформляйте в НАЧАЛЕ кода (секции) и В ОДНУ строчку на ремарку. Проще переводить.
переводить может и проще, но ремарки обычно оставляют на языке, который доступен всем участвующим (и потенциально участвующим) в проекте
Кроме того, длинные ремарки могут не поместиться в окно (которое часто занимает лишь 2/3 от ширины экрана) и при переносе будет потерян отступ от левого края, который практически во всех редакторах не является самостоятельной величиной, что приводит к неудобству чтения кода (перенос строки с сохранением отступа на самом деле легко реализуется, но почему-то никто его не делает)
Кстати язык D может принимать код в формате HTML — там можно писать в одну строку и форматировать всеми средствами
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

След.

Вернуться в Общие вопросы по OpenTTD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 34

cron