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

PobotAPI

Рекомендуемые сообщения

Написал небольшую утилиту,для расчета координат черепахи без gps.Pastebin http://pastebin.com/jEsjVFjt

Описание: 

есть все стандартные функции

turnLeft()

turnRight()

forward()

up()

down()

все я думаю знают что они делают,если не знаете бегом на вики.

эти функции использовать как стандартные.

это не библиотека ,это больше похоже на шаблон,в переменных x,y,z  хранятся координаты,sides сторона,

SOUTH= 0 -- юг 
EAST= 3 -- восток
NORTH= 2 -- север 

WEST= 1 -- запад  .

можно изменять только Max_World_Y ,и Min_World_Y ,они обозначают пределы мира по y координаты,не изменять больше чем пределы мира.

про все баги сообщать мне.

Использование:

при запуске программы вести аргументы

это данные черепашки ,их можно узнать став на нее сверху и нажать F3

1. сторона f в которую черепаха смотрит(линия на черепашке, похожа на дисковод)

2. x

3. y-1 так как вы стоите на ней,она ниже на 1 блок вас.

4. z

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
function forward()
        if (turtle.detect()) then
       return false
        end
        if (sides == SOUTH) then
       z=z+1
        elseif (sides == EAST) then
           x= x+1
        elseif (sides == NORTH) then
           z= z-1
        elseif(sides == WEST) then
           x= x-1
        end
        turtle.forward()
end

Зачем так сложно? turtle.forward() возвращает true если движение прошло успешно.

можно так:

if turtle.forward()then
  --изменяем координаты x z
end

тоже касается up  и down

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я предлагал вместо if turtle.detect() then использовать if turtle.forward() then. Только и всего. А вызов твоей функции forward, конечно нужно оставить как и раньше.

И еще, переменные x y z лучше сделать локальными и возвращать их значение через функцию. Чтоб случайно не затереть

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

эммм... я захочу сдвинуть черепаху ,по твоему способу ,и это можно будет сделать if turtle.forward()then

--изменяем координаты x z

end,а у меня вызвать функцию forward() что проще? или я не понял твоей мысли.

Да, видимо не понял) что предлагает Фингер:

function forward()
        if (turtle.forward()) then
          if (sides == SOUTH) then
            z=z+1
          elseif (sides == EAST) then
            x= x+1
          elseif (sides == NORTH) then
            z= z-1
          elseif(sides == WEST) then
            x= x-1
          end
        end
end

Ну так я понял во всяком случае)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, видимо не понял) что предлагает Фингер:

function forward()
        if (turtle.forward()) then
          if (sides == SOUTH) then
            z=z+1
          elseif (sides == EAST) then
            x= x+1
          elseif (sides == NORTH) then
            z= z-1
          elseif(sides == WEST) then
            x= x-1
          end
        end
end

Ну так я понял во всяком случае)

какой фингер?и я уже понял всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

какой фингер?и я уже понял всё.

оу, верняк, прости Зеро, с телефона писал, попутал :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Переписал Код ,превратил в библиотеку.

подключаем файл с библиотекой как API.

вызываем метод robot= filename.new(X:number,Y:number,Z:number,Side:number)

аргументы= координаты черепашки,возвращает объект с которым можно работать.

для перемещения использовать стандартные функции turtle.forward() и тп.

в конце программы всегда вызывать robot.close()

Функции:

draw() выводит координаты и сторону.

getX() возвращает x:number

getY() возвращает y:number

getZ() возвращает z:number

goto(X:number,Y:number,Z:number,SIDE:number) едет на координаты X:number,Y:number,Z:number и поворачивается в сторону SIDE:number ,относительно координат введенных в методе new

digRight() копает вправо

digLeft() копает влево

turnSide(SIDE:number) поворачивается в сторону SIDE.

P.S если вы не вызовите new ,и будете напрямую вызывать методы ,вам будет выдавать ошибку.

Изменено пользователем NEO

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...