Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Игры для программистов | страница 3
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 3 из 6
На страницу: Пред.  1, 2, 3, 4, 5, 6  След. | Все страницы
Поиск в этой теме:
Другие игры: «Игры для программистов»
GreenTea
 





Предлагаю посмотреть мою игрушку того же жанра, вдруг понравися ? Подмигиваю
Написана на C#, графическая часть реализована с помощью XNA (замена Managed DirectX для .NET).
Сейчас можно писать ботов на 3 языках: C#, Java, VisualBasic. Планирую в скорости добавить к этим трем еще Delphi и Boo.
Подробнее об игре, в том числе обучение, здесь:
http://greenteaz-1.at.vwdhosting.net/Projects/Aerobots/Main.aspx
    Добавлено: 23:32 31-01-2007   
Crimson
 560 EGP


Рейтинг канала: 3(39)
Репутация: 130
Сообщения: 3041

Зарегистрирован: 03.09.2003
Цитата:
Пусть не пугает Вас ключивое слово ref. Оно означает передать аргумент по ссылке. Тогда как в остальных случая, обьекты этого типа, передаются по значению.

Замечание: Этот метод недоступен из кода Java, поскольку спецификация этого языка не позволяет передавать параметры по ссылке.


Афаир, объекты она как раз только по ссылке и позволяет передавать Улыбка По ссылке нельзя передать базовые типы - intы там всякие и иже с ними.

Не понял что с ракетами. Они что, летят в фиксированную при запуске точку? И занафига такая радость? Ракеты должны цель отслеживать. Как вариант, управление ракетой можно передать еще одному скрипту.

С радаром тоже не дело. Он должен возвращать список хендлов целей, через которые можно узнать координату цели, скорость, здоровье... и заодно сравнив хендлы можно будет понять, тот же это али-баба или другой. А задание сектора обзора можно вообще убрать нафиг - в каждый момент времени нужна максимально полная инфомация обо всех целях вокруг себя.

Еще непонятно, почему истребители могут стрейфиться и зависать в углу карты. Это какие-то неправильные истребители Улыбка
    Добавлено: 00:36 01-02-2007   
Rad3X
 135 EGP


Репутация: 16
Сообщения: 204
Откуда: Волгоградская
Зарегистрирован: 14.12.2003
Crimson :
Афаир, объекты она как раз только по ссылке и позволяет передавать По ссылке нельзя передать базовые типы - intы там всякие и иже с ними.
Да да, а по идее цель и является объектом, так что как раз её по ссылке и передавать как аргумент.
Ps При попытке создания бота на джавевыдаёт ошибку что не найден файл vjc.exe
_________________
Когда я ем, я глух и нем, хитер и быстр, и дьявольски умен!
    Добавлено: 15:47 01-02-2007   
Guest
 2075 EGP


Модератор
Рейтинг канала: 7(563)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Добрался до колобота (чрез тернии MindRover, ибо там не язык программирования, а мрак связывания блоков в блок-схеме через масс-триггеры (или роутеры) с переподвыподвертами условий от систем слежения).
Качаю. Заодно патчик выцепил.
Надеюсь, нечто вменяемое, а не TankWars, в которые я в своё время не вкурил Гы-гы
Ещё мануал бы на инглише, похоже, в комплект не входит... Там вообще обрезки 31,18 Мб...
_________________
Трещит земля как пустой орех
Как щепка трещит броня
    Добавлено: 19:26 01-02-2007   
Rad3X
 135 EGP


Репутация: 16
Сообщения: 204
Откуда: Волгоградская
Зарегистрирован: 14.12.2003
Я щас как раз такую версию гоняю, колобота в смысле, классная игра. Насчёт мануала не переживай он прямо в игре есть, на английской естестьвенно, хотя гдето пробегало, что типа на руском игра есть. Я тут стянул Ceebot демку типа продолжение колобота, чёта не очень пошло.
Зы весит 31мб правда архив после распаковки 90 с копейками метров.
_________________
Когда я ем, я глух и нем, хитер и быстр, и дьявольски умен!
    Добавлено: 22:18 01-02-2007   
Guest
 2075 EGP


Модератор
Рейтинг канала: 7(563)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Да, архив, патч не ставится, т.к. уже проинсталленная игра. Немного попроходил, освоил местный диалект С++... Там хорошая обучалка программингу есть...
Потом пошёл в основную игру. А там, оказывается, можно ножками... Гы-гы
Но уже на 3-й (или 4-й?) миссии, где надо собирать камни, мне стало сильно лениво (двигатель прогресса), посему были набросаны пара скриптиков для нахождения камушка (умные у них радары! В MindRover ты этот радар настрой, наведи, подожди, пока туда что-то попадёт, отфильтруй на правильность цели, а то мало ли что пискнуло, определи направление по корелляции двух сигналов, рассчитай упреждение, и только тогда шмаляй ракетой... Тут же поставил функцию - и вуаля!), и для возврата на базу.
Чтобы совсем от компа не отходить, подъём и спуск оставил на ручнике Гы-гы Хотя можно было бы и не... И ещё НАСАвцы прислали скрипт по замене батареек, но не прислали функцию по контролю уровня заряда... А зря, это нужно мониторить! Завтра напишу автономный блок...
З.Ы.: полной версии, с музыкой, ни у кого нету случаем? Подозрение.
_________________
Трещит земля как пустой орех
Как щепка трещит броня
    Добавлено: 01:14 02-02-2007   
Crimson
 560 EGP


Рейтинг канала: 3(39)
Репутация: 130
Сообщения: 3041

Зарегистрирован: 03.09.2003
Guest :
Но уже на 3-й (или 4-й?) миссии, где надо собирать камни, мне стало сильно лениво (двигатель прогресса), посему были набросаны пара скриптиков для нахождения камушка, и для возврата на базу.


А кстати как? Я до этого момента проходил полностью программно, а вот потом так и не вкурил как отличить один камень от другого. В итоге первый камень находится нормально, потом эта фигня взлетает, поднимает только что принесенный камень, бросает... в общем фигня получается Улыбка

Да и с перезарядкой там такая муть, что этот грузовичок пока сам к заряжаемому пристроится, посадит свою батарею, и приходится флаером вручную лететь за новой батареей, а на это гробится батарея флаера... короче я плюнул и дальше делал все вручную. Заодно там где-то лунный ровер нашел Улыбка Толку с него правда ноль - ни самому покататься, ни груз повозить. Но прикольно.

А с MindRover они чего-то перенедомудрили. Я бы понял если бы вайры работали как тупые провода - нейрон генерит сигнал определенной мощности, вайр его передает. Так нет, устроили кучу каких-то опций, еще не каждые два нейрона можно вайром соединить чтобы оно работало... какие-то странные глюки, когда сигнал заедает и блокирует цепь, и бот начинает крутиться на месте и стрелять хотя не видит ничего что могло бы триггерить эти действия... туманнн... то ли там логика работает не так как я думаю, то ли одно из двух. Вещица конечно занятная, но недоработанная.
    Добавлено: 11:07 02-02-2007   
Kalembas
 1335 EGP


Няшка
Рейтинг канала: 5(114)
Репутация: 263
Сообщения: 18999
Откуда: Санкт-Петербург
Зарегистрирован: 21.03.2003
Цитата:
А кстати как?

Очень просто.. Ищешь камень в пределах заданного радиуса - самый дальний от бота. И возвращаешь на базу или к флагу. И так по кругу, пока увы, ничего не останется от камней. Они все будут у флага.
_________________
Делаешь – не бойся, боишься – не делай, а сделал – не сожалей...
    Добавлено: 11:24 02-02-2007   
Guest
 2075 EGP


Модератор
Рейтинг канала: 7(563)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Crimson :
А кстати как?

А фильтр по расстоянию + order Да. Если запомнит - то так и полетит за новым по goto. А если будет глюк и переинициализация радара (один раз было, хотя по идее возврата на строчку вверх быть не может по определению Совсем запутался... ), тогда поднимет и бросит...
Kalembas :
Ищешь камень в пределах заданного радиуса - самый дальний от бота.

Во, другой вариант, поизящнее... Я задавал минимальный радиус, где искать НЕ НАДО Гы-гы
Пример того, как одну задачу можно решить через разные Задница Ой, не могу!..
Crimson :
А с MindRover они чего-то перенедомудрили.

А там надо просто аккуратно обращаться с условиями триггеринга, тогда и loop'ов не будет. У меня не заедало. Но стоило это мне небольшого листа бумаги с блок-схемой и подробным алгоритмом на ВСЕ случаи, и кучи broadcast'ов на каждое действие... Но работало! Улыбка
_________________
Трещит земля как пустой орех
Как щепка трещит броня
    Добавлено: 11:51 02-02-2007   
Crimson
 560 EGP


Рейтинг канала: 3(39)
Репутация: 130
Сообщения: 3041

Зарегистрирован: 03.09.2003
Guest :
А фильтр по расстоянию + order Да. Если запомнит - то так и полетит за новым по goto. А если будет глюк и переинициализация радара (один раз было, хотя по идее возврата на строчку вверх быть не может по определению Совсем запутался... ), тогда поднимет и бросит...


Хм... order, order... а что такое order? Помню там вроде было что-то в хелпе про то что у объектов есть номера, но как до них добраться я тогда не понял. Что ли скачать и еще раз попробовать... Улыбка

Guest :
А там надо просто аккуратно обращаться с условиями триггеринга, тогда и loop'ов не будет. У меня не заедало. Но стоило это мне небольшого листа бумаги с блок-схемой и подробным алгоритмом на ВСЕ случаи, и кучи broadcast'ов на каждое действие... Но работало! Улыбка


А ты думаешь у меня не было листа бумаги и кучи бродкастов? Гы-гы

Вообще схема была такая. Четыре основные группы турбин (крафт - ховер) - левая передняя, левая задняя, правая передняя, правая задняя. На каждой группе (там по три турбины кажется было) висит по три бродкаста - тягу на марш, тягу на реверс, тягу на ноль (хотя ноль я в итоге не использовал). Дальше было пять бродкастов - полный вперед, полный реверс, развороты вправо/влево и стоп. Они подключались к соответствующим бродкастам для групп. Дальше было два радара "с перехлестом": если левый видит цель - поворот налево, правый - направо, оба - стреляем. Если ни один не видел цель, то крафт должен был двигаться вперед (но нифига не двигался), если левый видел стену то активировался поворот направо, если левый стену не видел но видел правый - поворот налево.

Что происходило в итоге. Если бот спавнился так что перед ним не было ничего - он тупо стоял и нифига не делал. Если видел другого бота - все шло по плану: разворот, противник перед собой - выстрел, разворот обратно (ибо по инерции продолжал разворачиваться), опять выстрел... Красота короче. Но второй от взрыва отлетал к стенке - и при виде стенки начинал крутиться на месте в одну сторону (но не обязательно каждый раз в одну и ту же) и стрелять в никуда.

У меня было две теории - что бродкаст клинит если подать ему на вход несколько вайров, и что on/off это не сигнал а эвент. Но чесгря на тот момент я уже заколебался со всем этим возиться, и представив что все эти вайры сейчас придется сносить и переподключать - снес саму игруху и решил писать свою Гы-гы Правда до нее тоже руки толком не дошли Улыбка
    Добавлено: 12:58 02-02-2007   
Rad3X
 135 EGP


Репутация: 16
Сообщения: 204
Откуда: Волгоградская
Зарегистрирован: 14.12.2003
Насчёт зарядки я добавлял конструкцию if и в ней прописывал, что если заряд меньше определённого уровня чтоб летел заряжаться, это внутри цикла поиска цели.
А отличать камни друг от друга я даже не знал, что так мона, я делал проще, сделал чтоб бот ложил камни сразу в конвертер, потом ждал пока сделается а потом относил в сторону, потом новый цикл.
_________________
Когда я ем, я глух и нем, хитер и быстр, и дьявольски умен!
    Добавлено: 14:19 02-02-2007   
Guest
 2075 EGP


Модератор
Рейтинг канала: 7(563)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Crimson :
Что происходило в итоге. Если бот спавнился так что перед ним не было ничего - он тупо стоял и нифига не делал. Если видел другого бота - все шло по плану: разворот, противник перед собой - выстрел, разворот обратно (ибо по инерции продолжал разворачиваться), опять выстрел... Красота короче. Но второй от взрыва отлетал к стенке - и при виде стенки начинал крутиться на месте в одну сторону (но не обязательно каждый раз в одну и ту же) и стрелять в никуда.

1) Забыл про инициализацию
2) on/off = event

Я делал многослойную компоновку: слой "поиск", слой "преследование", слой "атака".
При долгом преследовании по таймеру преследование отрубалось и начинался поиск. С атаки был условный переход опять же на поиск. Инициализация обязана быть, а то так и будет стоять...
Rad3X :
Насчёт зарядки я добавлял конструкцию if и в ней прописывал, что если заряд меньше определённого уровня чтоб летел заряжаться, это внутри цикла поиска цели.

Я вставил условие проверки на 15% заряда прямо в while цикла поиска... Т.е. если заряда мало, то лучше вернуться и дозарядиться. Более сложный алгоритм, который я сейчас мучаю, обязан определить расстояние до цели и решить, хватит ли заряда долететь. Только удельное использование посчитать надо...
Долго искал собственно свойство уровня заряда. Нашёл в отладочной информации. Всё-таки надо полное руководство... Совсем запутался...
З.Ы.: фулл-автомат рулит! Супер!
_________________
Трещит земля как пустой орех
Как щепка трещит броня
    Добавлено: 16:08 02-02-2007   
Kalembas
 1335 EGP


Няшка
Рейтинг канала: 5(114)
Репутация: 263
Сообщения: 18999
Откуда: Санкт-Петербург
Зарегистрирован: 21.03.2003
Цитата:
Долго искал собственно свойство уровня заряда.

Насколько я помню: this.PowerCell.Energy()
Ну или как то так.

У меня практически во все функции была встроена проверка уровня заряда батареи, и простейший IF на 20%... Более сложную функцию писать было нецелесообразно решаемым в миссиях задачам. Улыбка
_________________
Делаешь – не бойся, боишься – не делай, а сделал – не сожалей...
    Добавлено: 17:00 02-02-2007   
Riedd
 77 EGP


Репутация: 13
Сообщения: 67
Откуда: Санкт-Петербург
Зарегистрирован: 14.04.2005
По поводу русского колобота, он есть в Осле(91 метра )...
    Добавлено: 17:44 02-02-2007   
GreenTea
 





Crimson :
Цитата:
Пусть не пугает Вас ключивое слово ref. Оно означает передать аргумент по ссылке. Тогда как в остальных случая, обьекты этого типа, передаются по значению.

Замечание: Этот метод недоступен из кода Java, поскольку спецификация этого языка не позволяет передавать параметры по ссылке.


Афаир, объекты она как раз только по ссылке и позволяет передавать Улыбка По ссылке нельзя передать базовые типы - intы там всякие и иже с ними.

Как не хочется сейчас читать вам лекцию о ссылочных типах и типах значениях.. Вкратце расскажу: все типы в .NET делятся на ссылочные и типы значения. Идентификатор ссылочного типа представляет собой ссылку. Идентификатор же типа значения - соответственно значение. Теперь постарайтесь уловить специфику: Параметры в методы передаются только по значению. НО! для ссылочных типов этим значением есть ссылка, для типов значения - значение. Это происходит от того что параметры создаются копированием, для ссылочных типов копируется ссылка, ну а для значений - значение. Таким образом это ошибка говорить что параметры в методы передаются по ссылке.
Crimson вы придрались к слову Обьекты? Зачем придираться Улыбка? Ведь суть и так понятна.. Имелось ввиду параметры, или аргументы.
Ключевое слово ref означает что параметр в любом случае будет ссылкой - будь то на ссылочный тип или тип значение.
[/quote]

Crimson :

Не понял что с ракетами. Они что, летят в фиксированную при запуске точку? И занафига такая радость? Ракеты должны цель отслеживать. Как вариант, управление ракетой можно передать еще одному скрипту.

Если цель для ракеты указана не верно, то они летят в нижний левый угол карты. Может быть и не стоило так делать.. Но неужели комуто может взбрести создавать бота который намеренно будет стрелять ракетами на право и на лево не прицеливаясь?..
Целью ракеты является точка на карте, где предположительно находится
вражеский истребитель. Эту точку возвращает метод
Код:

/** ДЕЙСТВИЯ:
* В target_point помещается местоположение ближайшей цели
* ВОЗВРАЩАЕТ: цель найдена?
*/
bool radar(ref point target_point, radarzone zone);
enum radarzone { near , far, left, right, front, behind} // зона сканирования
 бота stalker

Ракеты запускать необходимо методом:


Код:

/** ВОБЩЕМ:
* стреляет из оружия w, если оружие
* самонаводящееся то в target - предполо-
* жительное местонахождение цели, иначе
* значение по умолчанию для point.
*/
void fire(weapon w, point target);
enum weapon { shot, laser, bomb, rocket }; // разновидности оружия
В версии 1.00, эта команда используется только для стрельбы ракетами.

желательно сразу после сканирования радаром.


Crimson :
С радаром тоже не дело. Он должен возвращать список хендлов целей, через которые можно узнать координату цели, скорость, здоровье... и заодно сравнив хендлы можно будет понять, тот же это али-баба или другой. А задание сектора обзора можно вообще убрать нафиг - в каждый момент времени нужна максимально полная инфомация обо всех целях вокруг себя.

Согласен. Есть еще что улучшать..


Crimson :
Еще непонятно, почему истребители могут стрейфиться и зависать в углу карты. Это какие-то неправильные истребители Улыбка


зато маневренности больше. Бот Neo в схватке всех ботов, который только уворачивается от ракет и всех остальных летящих в него предметов, умирает всреднем в 2.5 раза реже
    Добавлено: 17:54 02-02-2007   
GreenTea
 





Rad3X :
Да да, а по идее цель и является объектом, так что как раз её по ссылке и передавать как аргумент.

цель - это точка карте - struct point {...}
Rad3X :
Ps При попытке создания бота на джавевыдаёт ошибку что не найден файл vjc.exe

Буду этот вопрос решать. Всю информацию смотите на сайте:
http://greenteaz-1.at.vwdhosting.net/Projects/Aerobots/Main.aspx
    Добавлено: 18:07 02-02-2007   
GreenTea
 





Выложил обновление до версии v1.01.
http://webdrive.reborn.ru/__GreenTea/Projects/AEROBOTS/Aerobots_v1.01_exe.rar
+ Переработан редактор кода - исправлены некоторые баги и добавлена подсветка строк где были обнаружены ошибки компиляции
+ Добавлен новый язык написания ботов: JScript (для .NET)
    Добавлено: 18:09 02-02-2007   
Rad3X
 135 EGP


Репутация: 16
Сообщения: 204
Откуда: Волгоградская
Зарегистрирован: 14.12.2003
Guest :
Я вставил условие проверки на 15% заряда прямо в while цикла поиска
Ну дык и я о том же, тока у меня уровень от 30% до 50% потому как меньше не хватает. Также встроил в боевого бота эту проверку, тока вот проблема терь не знаю как сделать чтоб он ещё и чинить летел если повреждён на определённый процент.
GreenTea :
Параметры в методы передаются только по значению. НО! для ссылочных типов этим значением есть ссылка, для типов значения - значение. Это происходит от того что параметры создаются копированием, для ссылочных типов копируется ссылка, ну а для значений - значение.
Вообще речь шла о джаве, но насколько я вижу из этого твоего пояснения в сишарп тоже самое. Тока вот ссылки по значению не передаются, создаётся новая ссылка и ей присваивается значение ссылки переданной в качестве аргумента. То есть значение не копируется, а новая ссылка указывает на тот же объект(то бишь значение), что и старая ссылка. Это верно для объектов, а для простых типов происходит копирование значения из одной переменной в другую.
GreenTea :
Таким образом это ошибка говорить что параметры в методы передаются по ссылке.
как раз таки не ошибка, как выше написал, объекты передаются по ссылке, простые типы передаются по значению
GreenTea :
Имелось ввиду параметры, или аргументы.
Ключевое слово ref означает что параметр в любом случае будет ссылкой - будь то на ссылочный тип или тип значение.
Думаю никто тут не придирался, а хотел сказать, что параметр будет ссылкой или нет зависит от того, простой тип передаётся в качестве аргумента или ссылка на объект.
Зы чёт я написал, сам не понял чё написал Ой, не могу!..
_________________
Когда я ем, я глух и нем, хитер и быстр, и дьявольски умен!
    Добавлено: 21:13 02-02-2007   
Guest
 2075 EGP


Модератор
Рейтинг канала: 7(563)
Репутация: 376
Сообщения: 27975
Откуда: Моск.
Зарегистрирован: 12.10.2004
Rad3X :
терь не знаю как сделать чтоб он ещё и чинить летел если повреждён на определённый процент.

Так тм свойство повреждения тоже вроде было... Надо покопаться...
Вот: shieldLevel
Других параметров подобного рода нет. Меняется, также, как и батарейка, от 1.00 до 0.00...
Kalembas :
Насколько я помню: this.PowerCell.Energy()
Ну или как то так.

Не совсем. energyCell.energyLevel
(там всегда self, не умеет между объектами он связь держать, а то можно было бы создавать ботов-дозаправщиков)

Правда, кто мне объяснит смысл параметра energyCell.shieldLevel ? Подозрение.
_________________
Трещит земля как пустой орех
Как щепка трещит броня
    Добавлено: 01:40 03-02-2007   
Rad3X
 135 EGP


Репутация: 16
Сообщения: 204
Откуда: Волгоградская
Зарегистрирован: 14.12.2003
Что шильд левел я в курсе там прям на полоске написано, а вот что так energyCell.shieldLevel как то не додумал, по идее это заряд, ну ща попробую видно буит.
_________________
Когда я ем, я глух и нем, хитер и быстр, и дьявольски умен!
    Добавлено: 03:21 03-02-2007   
Другие игры: «Игры для программистов»
На страницу: Пред.  1, 2, 3, 4, 5, 6  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Посадка разрешена. Стыкуйтесь после появления зеленых чертей.

  » Игры для программистов | страница 3
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18