Я даже не уверен, что мой план делать вещи - лучший способ, поэтому я извиняюсь, если этот пост немного расплывчато. Кроме того, я понимаю, что подобные вопросы были заданы раньше. Однако я не смог найти ничего, что касалось моей ситуации, и это имело смысл для меня.
Поэтому я и мои друзья из школы строят аркадную машину, и я планирую собрать основной графический интерфейс, который позволяет пользователю выбирать разные игры и загружать их, если у них достаточно токенов. Однако этим отдельным окнам придется делиться некоторыми переменными, главным образом, количеством токенов в машине. Я решил, что отдельная программа Lua может хранить такую переменную, а также посылать ей запросы для выполнения других функций, таких как открытие и закрытие разных окон. Кроме того, в случае, если это важно отметить, мы будем использовать движок Love2D для игр и будем запускать все это на машине Linux.
По тому, что я прочитал, в этом, видимо, есть код C и C++. Я почти ничего не знаю о C или C++, и мы пытаемся продвинуть этот проект, поэтому, если вы могли бы включить какой-то код в свой ответ и проинструктировать меня о том, как его использовать, это было бы потрясающе. Я могу вернуться позже и узнать некоторые C или C++, но сейчас Lua - мой главный приоритет.
Мои вопросы:
Кроме того, если кто-нибудь его поднимет, я попытался использовать глобальные переменные, но я не мог заставить две программы/скрипты использовать одну и ту же переменную одновременно.
Опять же, извините, если я немного расплывчата.
Заранее спасибо!
(этот метод является комбинацией предложения @Puzzlem00n и чтения комментариев, поэтому я не должен брать на это много внимания)
Поместите несколько игр в одну программу lua!
В main.lua:
require("spaceInvaders") --require all the other Lua files
-- without the ".lua" at the end!
gamestate=spaceInvaders
function love.load()
--all the setup things
end
function love.update()
gamestate.update()
end
function love.draw()
gamestate.draw()
end
function love.keypressed(key)
gamestate.keypressed(key)
end
--and so on for the rest of the love callbacks that you need (such as love.keyreleased())
Затем в каждой игре (которая представляет собой отдельный файл Lua, такой как spaceInvaders.lua):
spaceInvaders = {}
function spaceInvaders.draw()
--your draw code
end
function spaceInvaders.update()
--your update code
end
--and so on for every other callback you want to use
Что делает этот код, так это дает каждой игре собственный набор функций любви. Когда вы хотите сыграть в эту игру, вы должны установить gamestate для этого имени игры. spaceInvaders={}
определяет spaceInvaders как таблицу, которая хранит каждую функцию на месте. Когда вы определяете переменную как существующую переменную, вы на самом деле создаете ссылку на нее, например:
t = {}
table.insert(t,1) --place 1 inside t
table.insert(t,3) --also place 3 inside t
s = t
print(s[1]) --will print 1, the first value of t
t[1]=2
print(s[1]) --will print 2, as it refers to t[1], which has just been changed
Обмен переменными! (Я разработал этот бит!)
СЕЙЧАС, это означает, что вы можете отправлять переменные вокруг программы с помощью другой функции. Если вы хотите поделиться счетом между играми, вы можете сделать следующее:
в main.lua:
function love.update()
gamestate.update()
score = gamestate.returnScore() --score will always equal to the current score being returned by the game
end
в игре, такой как spaceInvaders.lua:
function spaceInvaders.returnScore()
return score --or whatever the score is stored in
end
Это позволит вам получить переменную, такую как оценка, из одной игры в main.lua! Извините, если это немного запутанно, но, надеюсь, это то, что вы ищете! :)
require
, поэтому я чувствую, что здесь есть кое-что еще.