2016-08-09 3 views
0

Я установил lua, используя lua rocks, и он отлично работает. Теперь я хочу использовать библиотеки любви, чтобы сделать некоторые графики в моем сценарии lua. Но я не могу найти документацию о том, как связать код любви с кодом lua ... infact. Я все еще смущен относительно разницы.вызов функции любви в lua

У меня создается впечатление, что любовь - это набор библиотек для lua, но у любви, кажется, есть своя бинарная система для запуска ... что означает ее собственный язык?

Во всяком случае, вот моя грустная попытка написать Lua скрипт, используя любовь:

myluatest.lua:

if "test" == "test" then print("yes") else print("no") end 
love.graphics.print('love test', 400, 300) 
print(string.byte("ABCDE", 3, 4)) 

Если я закомментируйте "love.graphics ...." линия он отлично работает. Это, как я запустить скрипт:

lua myluatest.lua

Я чувствую, что я должен включать в себя любовь или Somthing, я просто не могу найти синтаксис :(

+2

Löve - это не набор библиотек, это каркас, написанный на C++, который использует Lua (Luajit really) в качестве языка сценариев. Фактически, при работе с Löve вы просто пишете кучу функций обратного вызова в Lua (например, 'love.load',' love.update', 'love.draw'), которые затем вызываются и выполняются из кода C++. – user6245072

+0

@ user6245072 - Думаю, это также означает, что вам совсем не нужна установка lua вообще (так как у любви есть свой lua51.dll)? –

ответ

2

Любовь не является библиотекой, нет ничего Любовь - это приложение, написанное на C++, которое можно использовать для сценариев с Lua. Любовь предоставляет встроенные графические функции (написанные на C++) в среде Lua с использованием C API. Это также драйвер приложения, что означает, что вы не можете запускать приложение «Любовь», как и обычный Lua. Вы должны заполнить обратные вызовы, упомянутые here, затем Love будет автоматически запускать их.

Чтобы сделать работу с вашим скриптом, вы должны включить ее в одну из функций обратного вызова. Если вы хотите, чтобы какая-то задача выполнялась один раз в начале приложения, используйте love.load(), или если вы хотите, чтобы она непрерывно запускалась, используйте love.update(). Только love.draw() может содержать вызовы методов love.graphics.draw.

function love.draw() 
    if "test" == "test" then print("yes") else print("no") end 
    love.graphics.print('love test', 400, 300) 
    print(string.byte("ABCDE", 3, 4)) 
end 

Ожидайте много выходных сигналов консоли, draw() работает непрерывно.

+0

ah ha, спасибо большое !, я вижу - я только что обновил свой код - также я все еще пытался запустить его с 'lua filename', но я где-то заметил, что вам нужно запустить всю папку и использовать« love .exe ", например:' love folderpath', И ваш файл должен называться main.lua. Есть ли способ запустить автономный файл, который не называется main.lua? –

+1

Не то, чтобы я знал. Вы можете передать «файлы проекта», которые по существу застегнуты в папку, но я не думаю, что это поможет вам. Я знаю, что некоторые IDE Lua, такие как ZeroBrain, любят вас, или вы можете написать простой bat-файл 'C: \ path \ to \ love --console C: \ path \ to \ projectdir', чтобы сделать разработку более плавной. – ktb

+0

Спасибо за это - да, я дал нулевой мозг, вроде как в том, что вам нужно рассказать нулевой мозг, какой каталог проекта использовать. Это не имеет большого значения, я думаю, в C++ вам всегда нужно начинать с main(), поэтому он не отличается по-настоящему (я обычный парень с ++) ... просто пытаюсь выяснить варианты :) –

Смежные вопросы