그래서 저는 OOP 원칙을 사용하는 전통적인 게임 개발에서 왔으며, 내가 한 일을 통해 LUA를 사용하여 이것을 모방 할 수 있다는 것을 알았습니다. 코드 게시 중 일부에서는 디렉터 클래스를 사용하여 new() 함수 등이있는 파일을 만드는 방법을 알았습니다.코로나 LUA 및 OOP 디자인
내가 찾고있는 것은 내 무기를 관리하는 방법입니다. 나는 선수와 상대를 가지고 있으며, 무기 클래스 하나를 가지고 싶다고 말합니다. weapon 캐논. 내가 무슨 짓을하는 것입니다 :
-- private vars here
local power
local canonSprite
local whatever
local someFunction = function()
...
end
-- Private stuff here
local weaponCanon = {}
weaponCanon.fire = function(atX, atY)
...
end
weaponCanon.reset = function()
...
end
return weaponCanon
그런 다음 내 수준의 코드에서 단순히 수행 코딩 할 때이 잘 작동하고 나에게 "개인"과 "공공"의 정신을 사용할 수 있습니다
local weaponCanon = require("weaponCanon")
weaponCanon.fire(100, 100)
내 무기. 문제는 플레이어와 상대방이 캐논을 갖고 싶어하는 경우입니다.
local playerWeapon = require("weaponCanon")
local opponentWeapon = require("weaponCanon")
이렇게하면 새 인스턴스 대신 해당 개체가 반환됩니다. 그래서 나는 무기 하나만 가져 간다. 상대방에있는 캐논은 웨폰의 위치에있다. 이것은 분명히 지금 내가 원하거나 필요로하는 것입니다.
우리 게임에는 많은 무기가 있습니다. 상대방 무기 또는 플레이어 무기가 있는지 알려주는 설정이있는 각 파일의 버전이 하나만 있으면 좋을 것입니다. 다른 방법은 각 파일을 복사하고 weaponPlayerCanon과 weaponOpponentCanon을 만드는 것입니다. 그러나 한 파일의 수정을 생각할 때마다 매번 2 개 이상의 파일을 변경해야합니다.
인스턴스를 반환하도록하려면 어떻게해야하며 LUA 파일의 구조는 어떻게해야합니까?
감사 또는 모두가
-d
나는 잘 알고있다 : http://lua-users.org/wiki/LuaModuleFunctionCritiqued이 곳에서 나는 내 디자인을 얻었으나, 내가 뭔가를 간과하지 않으면 정말 내 문제를 해결하지 못한다. –
내가 놓친 부분은 데이터와 논리가 필요하다는 것입니다.따라서 화재 기능에 대한 매개 변수로 제공 할 무기에 대한 설정을 포함하는 "테이블"을 제공하는 새 기능이 필요하므로 건을 전달한 테이블의 전원 값이 감소합니다. PIL의 15 장은 올바른 방향으로 당신을 설정해야합니다. http://www.lua.org/pil/15.html –
여기서 한 것은 결국 어쨌든 테스트 할 계획 이었기 때문에 저를 구해 주셔서 감사합니다. 문제. – jhocking