Перейти к содержимому


Фотография

Управление роботом через чат

Робот Computronics

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 Оффлайн   theCPU

theCPU
  • Пользователи
  • Сообщений: 11
  • Уровень сигнала: 0,03%
  • В игре: 0 час. 16 мин.

Награды

        

Отправлено 30 Июль 2017 - 22:44

Робот получает сигналы через "улучшение: чат" из мода Computronics

Управление 

q = Вниз

e = Вверх

w = Вперёд

s = Назад

a = Поворот налево

d = Поворот направот

Пример: #qewsad

 

Спойлер

  • Asummonster и Kartze это нравится

#2 Оффлайн   Quant

Quant
  • Пользователи
  • Сообщений: 537
  • Уровень сигнала: 0,01%
  • В игре: 0 час. 4 мин.
  • Городinterface IQuant

Награды

     

Отправлено 30 Июль 2017 - 23:21

Массив можно было вообще не очищать,ну и очистка делается присвоением nil или {}



#3 Оффлайн   Doob

Doob
  • Пользователи
  • Сообщений: 814
  • Уровень сигнала: 17,03%
  • В игре: 146 час. 10 мин.

Награды

                                   

Отправлено 31 Июль 2017 - 06:35

local component = require("component")
local event = require("event")
local robot = component.robot

local function move(side)
  if not robot.detect(side) and not robot.move(side) then
    move(side)
  end
end

local CMD = {
  w = function() move(3) end,
  a = function() robot.turn(false) move(3) end,
  s = function() robot.move(2) end,
  d = function() robot.turn(true) move(3) end,
  e = function() move(1) end,
  q = function() move(0) end
}

while true do
  local e = {event.pull('chat_message')}
  if e[4]:sub(1,1) == '#' then
    for i = 2, #e[4] do
      local index = e[4]:sub(i,i)
      if CMD[index] then
        CMD[index]()
      end
    end
  end
end

А вот версия для ЕЕPROM:

local robot = component.proxy(component.list('robot')())
 
local function move(side)
  if not robot.detect(side) and not robot.move(side) then
    move(side)
  end
end
 
local CMD = {
  w = function() move(3) end,
  a = function() robot.turn(false) move(3) end,
  s = function() robot.move(2) end,
  d = function() robot.turn(true) move(3) end,
  e = function() move(1) end,
  q = function() move(0) end
}
 
while true do
  local e = {computer.pullSignal()}
  if e[1] == 'chat_message' and e[4]:sub(1,1) == '#' then
    for i = 2, #e[4] do
      local index = e[4]:sub(i,i)
      if CMD[index] then
        CMD[index]()
      end
    end
  end
end

Сообщение отредактировал Doob: 31 Июль 2017 - 08:35

  • NEO, eu_tomat, Asummonster и 2 другим это нравится

#4 Оффлайн   TC1061

TC1061
  • Пользователи
  • Сообщений: 39
  • Уровень сигнала: 6,93%
  • В игре: 59 час. 28 мин.

Отправлено 21 Август 2017 - 17:48

Массив можно было вообще не очищать,ну и очистка делается присвоением nil или {}

Не очищали мы массив, остался в памяти, и потом... not enough memory...



#5 Онлайн   eu_tomat

eu_tomat
  • Хранители Кода
  • Сообщений: 935
  • Уровень сигнала: 5,93%
  • В игре: 50 час. 55 мин.

Награды

                          

Отправлено 09 Сентябрь 2017 - 13:58

@theCPU: Используй тег разметки code для оформления кода. Это поможет сохранить отступы, облегчит чтение кода другим участниками и подтолкнет и к кнопочке «Нравится».





Темы с аналогичным тегами Робот, Computronics

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных