NEO 541 Опубликовано: 1 декабря, 2014 (изменено) Написал небольшую утилиту,для расчета координат черепахи без 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 Изменено 22 декабря, 2014 пользователем NEO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 1 декабря, 2014 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy 2 187 Опубликовано: 1 декабря, 2014 Я предлагал вместо if turtle.detect() then использовать if turtle.forward() then. Только и всего. А вызов твоей функции forward, конечно нужно оставить как и раньше. И еще, переменные x y z лучше сделать локальными и возвращать их значение через функцию. Чтоб случайно не затереть Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
DUIIIES 284 Опубликовано: 1 декабря, 2014 эммм... я захочу сдвинуть черепаху ,по твоему способу ,и это можно будет сделать 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 Ну так я понял во всяком случае) 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 1 декабря, 2014 Да, видимо не понял) что предлагает Фингер: 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 Ну так я понял во всяком случае) какой фингер?и я уже понял всё. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
DUIIIES 284 Опубликовано: 1 декабря, 2014 какой фингер?и я уже понял всё. оу, верняк, прости Зеро, с телефона писал, попутал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO Автор темы 541 Опубликовано: 22 декабря, 2014 (изменено) Переписал Код ,превратил в библиотеку. подключаем файл с библиотекой как 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 ,и будете напрямую вызывать методы ,вам будет выдавать ошибку. Изменено 22 декабря, 2014 пользователем NEO Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах