Jet
-
Публикации
65 -
Зарегистрирован
-
Посещение
-
Победитель дней
2
Сообщения, опубликованные пользователем Jet
-
-
Не, второе видео меня рассмешило больше. На 1-ой минуте он ржачно подскользнулся.)
-
Если бы я такого увидел ночью, я бы просто седым сразу стал бы.
http://rutube.ru/video/882a3ac0fffd8d16addeec610ca30986/?ref=logo
-
Можно ли что бы не занимать роботов координаты присылать с сервера команды?
Я как понял смысл именно в ресурсах. Дано: 5 роботов, 1 сервер. Дальше сам. Как оно работать будет - одному тебе известно. Самое главное не вмешиваться в процесс во время боя.
-
2
-
-
Хочешь гибкости? Тогда нужно решить по какому событию прерывать алгоритм (и нужно ли вообще). Вот это событие и отлавливать.
Я сделал таблицу функций, которая является очередью, и запихал туда turtle.forward() и т.д., в отдельном потоке выполняю эту очередь, если надо прервать выполнение - очищаю таблицу.
-
-
-
Сделал небольшую програмку, которая заполняет рандомно карту.
local args = { ... } local wid, len = tonumber(args[1]), tonumber(args[2]) if (not wid or not len) print("Usage <program_name> <width> <lenght>") return end local selectedSlot = 1 local itemsCount = 0 local toRight = true local turn local placeLine = false local lineLenght = 0 function selectBlock() while selectedSlot < 16 do local count = turtle.getItemCount(selectedSlot) print(selectedSlot) print(count) if (count > 0)then itemsCount = count return true else selectedSlot = selectedSlot + 1 turtle.select(selectedSlot) end end return false end turtle.select(selectedSlot) selectBlock() local i, j for i = 1, len do for j = 1, wid - 1 do if itemsCount == 0 then while not selectBlock() do print("Please, put blocks and press any key") os.pullEvent() selectedSlot = 1 end end turtle.forward() if (placeLine) then if (lineLenght > 0) then os.sleep(0.3) turtle.placeDown() lineLenght = lineLenght - 1 itemsCount = itemsCount - 1 else placeLine = false end else if (math.random() > 0.69) then placeLine = true lineLenght = math.random(6) end end end if (toRight) then turn = turtle.turnRight else turn = turtle.turnLeft end turn() turtle.forward() if (placeLine) then if (lineLenght > 0) then os.sleep(0.3) turtle.placeDown() lineLenght = lineLenght - 1 itemsCount = itemsCount - 1 else placeLine = false end else if (math.random() > 0.69) then placeLine = true lineLenght = math.random(5) end end turn() toRight = not toRight end turtle.turnLeft() for i = 1, system.area.len do turtle.forward() os.sleep(0.2) end turtle.turnRight()local selectedSlot = 1 local itemsCount = 0 local toRight = true local turn local placeLine = false local lineLenght = 0 function selectBlock() while selectedSlot < 16 do local count = turtle.getItemCount(selectedSlot) print(selectedSlot) print(count) if (count > 0)then itemsCount = count return true else selectedSlot = selectedSlot + 1 turtle.select(selectedSlot) end end return false end turtle.select(selectedSlot) selectBlock() local i, j for i = 1, system.area.len do for j = 1, system.area.wid - 1 do if itemsCount == 0 then while not selectBlock() do print("Please, put blocks and press any key") os.pullEvent() selectedSlot = 1 end end turtle.forward() if (placeLine) then if (lineLenght > 0) then os.sleep(0.3) turtle.placeDown() lineLenght = lineLenght - 1 itemsCount = itemsCount - 1 else placeLine = false end else if (math.random() > 0.69) then placeLine = true lineLenght = math.random(6) end end end if (toRight) then turn = turtle.turnRight else turn = turtle.turnLeft end turn() turtle.forward() if (placeLine) then if (lineLenght > 0) then os.sleep(0.3) turtle.placeDown() lineLenght = lineLenght - 1 itemsCount = itemsCount - 1 else placeLine = false end else if (math.random() > 0.69) then placeLine = true lineLenght = math.random(5) end end turn() toRight = not toRight end turtle.turnLeft() for i = 1, system.area.len do turtle.forward() os.sleep(0.2) end turtle.turnRight()Если карта двухуровневая, соответственно программку нужно запускать 2 раза и между запусками перемещать черепашку вручную.
Черепашка строит некий узор под в плоскости под собой двигаяся вперед на width блоков (первый параметр) и вправо на lenght блоков (второй параметр). За 1 итерацию программы линии получаются направленными в ту сторону, в которую изначально смотрела черепашка. Соответственно, если сделать нижни уровень с "горизонтальным" направлением линий, а верхний с "вертикальным" - получаются достаточно интересные вариации карт.
Может не актуально уже, но все же, моя цель показать идею. -
Так же рабочие частоты будут прослушиваться и анализироваться на предмет внешних передач (контроль по дальности)
Как? Модем может работать только на одной частоте...
-
У меня вопрос организационный.
Сражаются две команды программистов, и у каждой из них свой алгоритм, своя реализация и свои стартовые данные.
Вот к примеру, моим черепашкам нужно сообщить некоторые данные. Кто это будет делать? Я? Или судья-админ по моей инструкции? Если это делают сами программисты, где гарантия, что соперники не введут кусочек карты, визуально видимой? Или где гарантия что администратор не ошибется в моей инструкции и правильно все поймет?
И сам вопрос: я правильно понмаю, что карта строится ПОСЛЕ того, как программисты закончили "колдовать" над черепашками, и сами черепашки находятся в режиме ожидания старта?
-
Постой ка! а как же тактика боя? В случае если будет известна карта каждая команда должна иметь тактику! Тактику охраны и захвата флага!Я думаю вся суть в динамике. Изменение тактики на основе развед.данных.
-
2
-
-
Мда... Для меня трудно искать путь в 3Д... Да что там говорить, и в 2Д тоже.)))
-
Практически все это в точности и предлагалось.
Некоторые нюансы:
- По поводу симметричности (зеркальности) карты не уверен уже, что это нужно. Ведь исследуя свою часть карты теоретически можно в памяти черепахи уже строить вражескую карту. Сделаем как в WOT, карта сбалансирована, похожа, но НЕ ЗЕРКАЛЬНАЯ.
- Когда формулировал проект, никаких геолайзеров и в помине не было. Так что тут философский вопрос, нужен ли он. Ведь зная карту, половина задач, которые должен выполнять робот улетает в трубу. Нет фишки исследования и битвы на неизвестной територии. Алгоритм сведется только к тому, чтобы выполнить трассировку (поиск пути) между заданными точками, доехать туда, чего-то там срубить в виде блока шерсти и приехать обратно. А это уже почти совсем не интересно. То есть, если принять то, что геолайзером пользоваться нельзя, тогда для данного проекта разницы практически нет никакой, что именно использовать, черепах или роботов.
- На скрине нет флагов команды. Нет командных воронок (хоперов) в полу, куда робот должен доставить украденный флаг. Помимо воронки должна работать схема детектирования брошенного флага (БК труба с фильтром и гейтом или любой другой принцип детектирования) с передачей факта детектировния на ПК-судью.
- Бой в одной плоскости конечно легче сделать, но лучше начинать писать алгоритм с многослойной (n слоев) так будет сразу гибче программа и интереснее. Возможен пролет черепах друг над другом и прочее, лючки, стены с отверстиями, которые надо найти. Понятно, что больше 3 слоев вряд ли будем использовать, скорее всего два, так как большая карта очень сильно увеличит время боя, а черепах вы там просто не увидите в многослойной карте. В однослойной карте это будет просто толкотня, а не бой и поиск маршрутов. Считаю двухслойную карту оптимальной.
Хотелось бы точно знать версию, на которую писать следует, а то ведь глупо использовать сравнение с блоками в инвентаре, если будет доступен КК 1.64 с идентифаем...
Предлагаю использовать самую последнюю модификацию КК(ОС) так как все старое рано или поздно умрет и будет неактуально. Используйте максимально новые версии и возможности на текущее время. Проект вы все равно будете в одиночке делать, так что тут проблем нет никаких.
На счет ооднослойной карты: я не говорю что это навсегда, я предложил это для начала. Для двух уровней писать ИИ труднее в квадрате, так мы первый бой не скоро увидим.
Я согласен, что два уровня гораздо интереснее, но для начала то можно 1?
-
То что зарядное устройство стоит ниже карты никак мне не мешает! Геолайзер сканирует большой объем... но соответственно тратит много энергии...
А геолайзером можно?
А как роботов предоставлять будут? Мы их из своих материалов чтоль должны собрать? Или материалы дадут?
Я не знаю.) Я просто игрок, который заинтересовался темой. Я на сервере то ни разу не был, меня лаунчер не пускает.)
Просто предлагаю.
-
1
-
-
Предлагаю правила на первый бой:
Локация:
Для начала предлагаю высоту все таки 1 блок.
Размер: 16х32 (ширина, длина), где 16х8 отведено на базы, остается 16х16 на препятствия.
Локация симметричная.
Пол состоит из 3 цветов шерсти, синий, красный, белый.
Стенки состоят из бедрока.
Флаги располагаются в виде блоков
Вычислительная техника:
5 черепашек, 1 компьютер на команду. (Что с этим сделают программисты - их трудности).
Комплектующие:
Изначально черепашки заправлены достаточно... Много. Т.е. о топливе не задумываемся.
Для каждой черепашки блоки: 1 белая шерсть, 1 красная шерсть, 1 синяя шерсть, 1 бедрок
Так же черепашки знают свои стартовые положения и размер карты.
Судьи:
Админ

1 компьютер рефери, который опрашивает черепашек (СТАТУС) и дает ТЕСТ/СТАРТ/СТОП.
Тест:
Перед стартом компьютер рефери выдает бордкастом сообщение ТЕСТ и черепашки обеих команд должны начать крутиться в одну из сторон.
Когда компьютер рефери даст сообщение СТОП - черепашки прекращают кружение.
Таким образом проверится своевременность реакции на команды рефери.
Правила:
Не ломать пол.
Не подниматься на уровень выше.
Задачи:
Проанализировать локацию и попытаться стырить вражеский флаг, завалив пару противников (по возможности или желанию).
-
Интересная тема. Но. Почитал я ее и вижу: надо сделать то, надо сделать это, а вот это решить. Надо не говорить, а делать. Администрация, определите сроки, команды, до этого срока две команды должны будут написать что напишут и с этим в бой. А уже по итогам боя - разбор полетов.
Т.е. я предалагаю идти путем проб и ошибок. так хоть какое то движение будет. И в конце концов, у кого получится лучшее ядро - алгоритмы, то и брать за основу. А на начальных этапах ядра будут разные.) Одинаковым должен быть только протокол общения с базовым сервером (который сделит за всем).
З.Ы. хотелось бы поучавствовать, есть пара идей по реализациям.
-
1
-
-
Есть ли в крафт-нете а) резервирование адресов; б) обращение по именам?
p.s. функционал DNS.

Unreal Tournament. Войны роботов. (разработка)
в Роботы
Опубликовано:
Сначала условным попробуем.)