Перейти к публикации
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

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

  • Like 1

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


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

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

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

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×