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


Фотография

[1.7.10] ComputerCraft [1.74]


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

#2581 ALFminecraft

ALFminecraft

    Странник

  • Пользователи
  • Сообщений: 9

Написал 07.10.2013 - 17:34

Всем привет! А можно ли одновременно выводить время (os.time) и считывать данные о нажатии клавиш(os.pullEvent) ? А то я попытался впихнуть все это в один цикл - время обновляется только при нажатии какой-либо клавиши.

#2582 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 07.10.2013 - 17:57

Ну так os.pullEvent(key) затормаживает выполнение программы до того, как будет нажата клавиша. Попробуй использовать

V6xCzSN.png


#2583 ALFminecraft

ALFminecraft

    Странник

  • Пользователи
  • Сообщений: 9

Написал 07.10.2013 - 18:03

Пример пжлст. Я не понял как Parallel использовать.Погодипогодипогоди. То есть, Parallel.waitForAll поместить в цикл, а вывод времени и считывание нажатий в функции? Я правильно понял?

#2584 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 07.10.2013 - 18:27

Угу.

V6xCzSN.png


#2585 ALFminecraft

ALFminecraft

    Странник

  • Пользователи
  • Сообщений: 9

Написал 08.10.2013 - 02:31

Ни*рена. При повторном вызове parallel выдает attempt to call nil

#2586 Dimus

Dimus

    Странник

  • Пользователи
  • Сообщений: 89

Написал 08.10.2013 - 13:08

То есть, Parallel.waitForAll поместить в цикл, а вывод времени и считывание нажатий в функции? Я правильно понял?

Не совсем. Через waitForAll вызываешь две функции. В каждой свой цикл. В одном цикле выводишь время, в другом обрабатываешь клавиши. А если влом возиться с Parallel, можно через pullEvent отлавливать события key и timer. По key - понятно, а по timer - выводить время

#2587 ALFminecraft

ALFminecraft

    Странник

  • Пользователи
  • Сообщений: 9

Написал 08.10.2013 - 15:42

Тааак... Попробовал: если отлавливание клавиш поставить в цикл, то время не отображается, если не ставить цикл - то время показывает только после нажатия клавиши. Либо напиши пример, либо расскажи как это сделать с помощью pullEvent

#2588 Dimus

Dimus

    Странник

  • Пользователи
  • Сообщений: 89

Написал 08.10.2013 - 18:12

os[paste][/paste]startTimer(1) --Взводим таймер на 1 секундуwhile true do --Цикл  event,p1=os[paste][/paste]pullEvent() -- Ловим событие  if event=='key' then    --Обрабатываем клавишу  end  if event=='timer' then    --Выводим время    os[paste][/paste]startTimer(1) --И снова взводим таймер  endend
Вот примерно так.

#2589 neit95

neit95

    Странник

  • Пользователи
  • Сообщений: 28
  • Откуда: Калининград

Написал 08.10.2013 - 21:45

Здравствуйте, слышал существует эмулятор computer craft. Не подскажите, где его можно взять?
Изображение

#2590 ALFminecraft

ALFminecraft

    Странник

  • Пользователи
  • Сообщений: 9

Написал 09.10.2013 - 03:10

Я знаю 2 таких эмулятора - ccemu (Проект мертв) и CCDesk ( http://ccdesk.afterlifelochie.net ). Лично я использую ccemu (У меня на компьютере сохранилась рабочая версия). Dimus, спасибо большое, настроил под себя и все работает.

#2591 neit95

neit95

    Странник

  • Пользователи
  • Сообщений: 28
  • Откуда: Калининград

Написал 09.10.2013 - 10:28

Про CCDesk вчера сам нашёл, что касается ccemu - без понятия где его взять. Находил его на сайте computercraft.info, но там ссылка битая. Можете скинуть его пожалуйста?
Изображение

#2592 Xytabich

Xytabich

    Странник

  • Пользователи
  • Сообщений: 54
  • Откуда: Россия

Написал 09.10.2013 - 14:09

Через пулл-эвент отслеживать клик мыши по монитору или просто в компе, получать координаты клика, сравнивать их с координатами текста, если совпадают - выполнять действие.

можно код?

#2593 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 09.10.2013 - 14:22

V6xCzSN.png


#2594 ALFminecraft

ALFminecraft

    Странник

  • Пользователи
  • Сообщений: 9

Написал 09.10.2013 - 14:52

Таак, ребята, чувствую я завалю вас своими вопросами.
w,h = term[paste][/paste]getSize()os[paste][/paste]startTimer(0[paste][/paste]01)while true do	local event, button, X, Y = os[paste][/paste]pullEvent()	if event=='mouse_click' then		if button == 1 then			if X >= w-10 and X <= w-1 and Y == 2 then				os[paste][/paste]reboot()			end			if X >= w-10 and X <= w-1 and Y == h-1 then				os[paste][/paste]shutdown()			end		end	end	if event=='timer' then		term[paste][/paste]setBackgroundColor(colors[paste][/paste]gray)		term[paste][/paste]setTextColor(colors[paste][/paste]white)		local time = os[paste][/paste]time()		time = textutils[paste][/paste]formatTime(time, true)		if #time == 4 then			term[paste][/paste]setCursorPos(w-7, 1)			print("0")			term[paste][/paste]setCursorPos(w-6, 1)		end		if #time == 5 then			term[paste][/paste]setCursorPos(w-7, 1)		end		print(time)		os[paste][/paste]startTimer(0[paste][/paste]01)	endend
В этом случае, если кликнуть по кнопке на координате Y == 2, то все работает, но кнопка на координатах Y == h-2 на нажатия не реагирует. Пачиму?7!!?!??!?1717??17?? Пы. Сы. neit95, CC-Emu в интернете ты вряд-ли найдешь. Проект закрыт, все ссылки нерабочие.

#2595 Dimus

Dimus

    Странник

  • Пользователи
  • Сообщений: 89

Написал 09.10.2013 - 15:24

В этом случае, если кликнуть по кнопке на координате Y == 2, то все работает, но [glow=red]кнопка на координатах Y == h-2 на нажатия не реагирует. Пачиму?7!!?!??!?1717??17??

Странно. У меня твой код работает. Может ты не на ту строчку давишь? На предпоследнюю надо (Y == h-1). А зачем os.startTimer(0.01)? По моему одной секунды вполне достаточно.

#2596 Cyxapuk

Cyxapuk

     

  • Главные модераторы
  • Сообщений: 8706
  • Ник в Minecraft:
    Meegoo

Написал 09.10.2013 - 15:26

Может быть потому, что ты выполняешь действие только если y=2 или y=h-1? Он ничего и не должен делать на координатах y=h-2.

V6xCzSN.png


#2597 ALFminecraft

ALFminecraft

    Странник

  • Пользователи
  • Сообщений: 9

Написал 09.10.2013 - 15:49

Опечатался, извините. Может быть все из-за того, что я использую CC-Emu. Сейчас, запущу игру, и попробую в ней. Опаничегосебе, заработало. Извините за беспокойство.

#2598 neit95

neit95

    Странник

  • Пользователи
  • Сообщений: 28
  • Откуда: Калининград

Написал 09.10.2013 - 16:55

Пы. Сы. neit95, CC-Emu в интернете ты вряд-ли найдешь. Проект закрыт, все ссылки нерабочие.

Это я уже понял. Я к тому, что может у кого-нибудь остался и этот человек зальёт её куда-нибудь.
Изображение

#2599 ALFminecraft

ALFminecraft

    Странник

  • Пользователи
  • Сообщений: 9

Написал 09.10.2013 - 17:14

Как я сейчас убедился, лучше всего НЕ использовать эмулятор. Но, раз уж тебе надо... http://sdrv.ms/1dfctGU Папку .ccemu кидаешь в appdata/roaming, файлом cc-emu-laucher.jar запускаешь.

#2600 neit95

neit95

    Странник

  • Пользователи
  • Сообщений: 28
  • Откуда: Калининград

Написал 09.10.2013 - 19:09

Как я сейчас убедился, лучше всего НЕ использовать эмулятор. Но, раз уж тебе надо... http://yadi.sk/d/NI4Ho2VhAewvW Папку .ccemu кидаешь в appdata/roaming, файлом cc-emu-laucher.jar запускаешь.

Для этого и существует проверка на реальном устройстве. Мне кажется, идеального эмулятора (не обязательно CC) вообще не существует. За ccemu огромное спасибо. Кто-нибудь знает, есть ли в lua стандартная команда для того, чтобы узнать имя выполняемого файла с полным путем к нему? Заранее спасибо.
Изображение


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

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