[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум » Computer Craft & Open Computers » Computer Craft » То, что не вошло в другие темы (Мусорка)
То, что не вошло в другие темы
Aleksey2093Дата: Вторник, 31.03.2015, 12:26 | Сообщение # 1
Подполковник
Группа: Администраторы
Сообщений: 116
Репутация: 0
Статус: Offline
Обязательно!!!
Код программы вставляйте под спойлер.
Сообщения без спойлера будут редактироваться, а при повторном нарушении удаляться.
 
Aleksey2093Дата: Вторник, 31.03.2015, 12:38 | Сообщение # 2
Подполковник
Группа: Администраторы
Сообщений: 116
Репутация: 0
Статус: Offline
Программа для обработки шерсти овец

Код
red=0 -- 1 - red
blue=0 -- 2 - blue
black=0 -- 3 - black
white=0 -- 4 - white

ids=31 --id static display  

term.clear()  
term.setCursorPos(1,1)  
print("Your ID is: ", os.getComputerID())  
print("This is turtle statistics terminal")  
print("This turtle get sheep")  

function monik() --statistics are displayed on the screen  
term.setCursorPos(1,4) term.clearLine()  
term.write("red = ") term.write(red) --4 string  
term.setCursorPos(1,5) term.clearLine()  
term.write("blue = ") term.write(blue) --5 string  
term.setCursorPos(1,6) term.clearLine()  
term.write("black = ") term.write(black) --6 string  
term.setCursorPos(1,7) term.clearLine()  
term.write("white = ") term.write(white) --7 string  
rednet.open("left")  

rednet.close("left")  
end  

function sbros()  
sleep(4)  

if turtle.getItemCount(1)>1 then red=(red+turtle.getItemCount(i)-1) turtle.select(1) turtle.dropDown(turtle.getItemCount(1)-1) end
if turtle.getItemCount(2)>1 then blue=(blue+turtle.getItemCount(i)-1) turtle.select(2) turtle.dropDown(turtle.getItemCount(2)-1) end
if turtle.getItemCount(3)>1 then black=(black+turtle.getItemCount(i)-1) turtle.select(3) turtle.dropDown(turtle.getItemCount(3)-1) end
if turtle.getItemCount(4)>1 then white=(white+turtle.getItemCount(i)-1) turtle.select(4) turtle.dropDown(turtle.getItemCount(4)-1) end

end  

while true do  
monik()  
sbros()  
end
 
WeStrannikДата: Вторник, 07.04.2015, 15:15 | Сообщение # 3
Рядовой
Группа: Модераторы
Сообщений: 2
Репутация: 0
Статус: Offline
Скину немного мелких программ:
1. Алмазные шахты - змейкой выкапывает параллельные тоннели 1х3 заданной длинны через каждые 2 блока
2. Спиральная лестница размером 2х2 после выполнения черепашка возвращается на начальный уровень выкапывая вертикальную шахту. (можно дописать, чтоб она еще и из заложеных блоков ее строила)
3. Полы - черепашка заменяет блоки под собой на те, что в инвентаре 
4. Диагональная лестница - черепашка выкапывает и строит лестницу из положеных блоков, заданной глубины и возвращается на старт










Другие програмки настолько маленькие, что даже выкладывать не охота.
 
Aleksey2093Дата: Вторник, 07.04.2015, 17:35 | Сообщение # 4
Подполковник
Группа: Администраторы
Сообщений: 116
Репутация: 0
Статус: Offline
WeStrannik
Цитата WeStrannik ()
Алмазные шахты - змейкой выкапывает параллельные тоннели 1х3 заданной длинны через каждые 2 блока

Название программы не говорит само за себя. Сделай программу, которая будет собирать и искать алмазы на основе имеющихся данных о их генерации в мире. Далее можно будет сделать инструкцию для пользователя. То есть программа будет собирать алмазы, либо сделай комплект программ для сбора различных руд.
 
Aleksey2093Дата: Воскресенье, 03.05.2015, 17:22 | Сообщение # 5
Подполковник
Группа: Администраторы
Сообщений: 116
Репутация: 0
Статус: Offline
Данная программа отслеживает игроков, находящихся в поле зрения локатора. Она выводит на монитор полную информацию о игроке: ник, координаты, id, расстояние от локатора до игрока; записывает в файл время прихода и ухода гостей (пока что записывается время mine-мира); когда игрок появляется в области действия локатора, срабатывает сирена.
Настройка интерфейса.
В этой программе можно настроить информацию для вывода на экран. Просто закомментируйте блок кода с выводом. По дефолту стоит: Ник, координаты, расстояние.
Можно изменить количество столбцов вывода, расстояние между ними и тп., используя блок переменных, написанных в начале.

Код
local alarm_state = false
   
local function alarm()
   while true do
     if alarm_state == true then
       rs.setOutput('back', true)
       sleep(0)
       rs.setOutput('back', false)
       alarm_state = false
     end
     sleep(1)
   end
end
   
local sensor = peripheral.wrap('top')
local monitor = peripheral.wrap('right')
   
local x_sensor = 1285
local y_sensor = 3416
local z_sensor = 73
local No_string = 1
local No_column = 1
local step_string = 6
local step_column = 20
local q_columns = 2
   
local guests = {["name"] = {}, ["check"] = {}}
   
local function printLog(text)
   local log = fs.open("log", "a")
   
   log.writeLine(text)
   print(text)
   
   log.close()
end
   
local function clear()
   monitor.clear()
   monitor.setCursorPos(1, 1)
   monitor.setTextScale(0.5)
   No_string = 1
   No_column = 1
end
   
local function next_string()
   No_string = No_string + 1
   monitor.setCursorPos(No_column, No_string)
end
   
local function next_column()
   if No_column ~= ((q_columns - 1) * step_column + 1) then
     No_column = No_column + step_column
     No_string = No_string - step_string
   else
     No_column = 1
   end
   
   monitor.setCursorPos(No_column, No_string)   
end
   
local function location()   
   local player_table = sensor.getPlayers()
   
   
   for k, v in pairs(guests["check"]) do
     guests["check"][k] = false
   end
   
   
   for k, v in pairs(player_table) do
      local player = v
      local player_info = sensor.getPlayerByUUID(player["uuid"])
   
           
      local search = false
      for index, guest in pairs(guests["name"]) do
         if guest == player["name"] then
           guests["check"][index] = true
           search = true
         end
      end
      if search == false then
        local q_guests = #guests["name"]
        guests["name"][q_guests + 1] = player["name"]
        guests["check"][q_guests + 1] = true
        alarm_state = true
         
        local log_text = textutils.formatTime(os.time()).."  New guest: "..player["name"]
        printLog(log_text)
      end
       
       
      local x = math.modf(player_info["position"]["x"]) - 1
      local z = math.modf(player_info["position"]["y"]) - 1
      local y = math.modf(player_info["position"]["z"]) - 1
      local distance = math.sqrt(x*x + y*y + z*z)
      distance = math.modf(distance * 100) / 100
           
      monitor.write('Found '..player_info["name"])
      next_string()   
                    
--       monitor.write("UUID")
--       next_string()
--       monitor.write(player_info["uuid"])
--       next_string()
             
--       monitor.write("Id")
--       next_string()
--       monitor.write(player_info["id"])
--       next_string()
                 
      monitor.write("Position")
      next_string()
      monitor.write(x + x_sensor..' '..z + z_sensor..' '..y + y_sensor)
      next_string()
         
      monitor.write("Distance")
      next_string()
      monitor.write(distance)     
      next_string()
   
      monitor.write("---------")
      next_string()
       
      next_column()
   end
   
     
   for k, v in pairs(guests["check"]) do
     if v == false then
       local log_text = textutils.formatTime(os.time()).."  "..guests["name"][k].." left."
       printLog(log_text)
       
       table.remove(guests["check"], k)
       table.remove(guests["name"], k)
     end
   end
end
   
local function mine()
   while true do
     clear()
     pcall(location)
   
     sleep(3)
   end
end
   
rs.setOutput('back', false)
parallel.waitForAny(mine, alarm)
 
Aleksey2093Дата: Воскресенье, 03.05.2015, 17:22 | Сообщение # 6
Подполковник
Группа: Администраторы
Сообщений: 116
Репутация: 0
Статус: Offline
Автоматическая дверь.
Чтобы добавить человека, нужно изменить ники в строке: local white_list = {'Your_name', 'Guest_1', 'Guest_2'}
Количество людей в списке ограничено только оперативкой компа...
Код
local sensor = peripheral.wrap('top')
local white_list = {'Seryoga', 'Desectus', 'AlexVBG', 'NEO', 'Ruslan1911', 'MorfSD', 'Nedfreetoplay'}
local distance_locate = 3
   
local function open_door()
   rs.setOutput('left', true)
   print("Open")
end
   
local function close_door()
   rs.setOutput('left', true)
   rs.setOutput('left', false)
   print("Close")   
end
   
   
local function main()
   close_door()
   
   while true do
     local open = false
     for No, name in pairs(white_list) do
       local try, player = pcall(sensor.getPlayerByName, name)
   
       if try == true then
         local distance = 0
     
         for label, pos in pairs(player['position']) do
           distance = distance + pos * pos
         end
         distance = math.sqrt(distance)
       
         if distance < distance_locate then
           open = true
           break
         end
       end
     end
   
   
     if open == true then
       open_door()
     else
       close_door()
     end
     
     sleep(1)
   end
end
   
main()
 
Форум » Computer Craft & Open Computers » Computer Craft » То, что не вошло в другие темы (Мусорка)
  • Страница 1 из 1
  • 1
Поиск: