2013-09-24 1 views
5

나는 당신에게 새로운 질문을 가지고 있습니다. 루아 안에서 enumartions을 할 수 있는지 궁금합니다. 이것이 올바른 이름인지 확실하지 않습니다. 설명 할 수있는 가장 좋은 방법은 당신에게 보여줄 수있는 것입니다. PAWN을 사용하는 예제 (C 언어를 알고 있으면 이해할 수 있음).루아의 열거 형?

#define MAX_SPIDERS 1000 

new spawnedSpiders; 

enum _spiderData { 
    spiderX, 
    spiderY, 
    bool:spiderDead 
} 

new SpiderData[MAX_SPIDERS][_spiderData]; 

stock SpawnSpider(x, y) 
{ 
    spawnedSpiders++; 
    new thisId = spawnedSpiders; 
    SpiderData[thisId][spiderX] = x; 
    SpiderData[thisId][spiderY] = y; 
    SpiderData[thisId][spiderDead] = false; 
    return thisId; 
} 

그래서 그게하지만 내가 루아에서이 작업을 수행하는 방법을 모른다, PAWN에서 어떻게 보이는지의 ... 이것은 내가 지금까지 무엇을 가지고 있습니다.

local spawnedSpiders = {x, y, dead} 
local spawnCount = 0 

function spider.spawn(tilex, tiley) 
    spawnCount = spawnCount + 1 
    local thisId = spawnCount 
    spawnedSpiders[thisId].x = tilex 
    spawnedSpiders[thisId].y = tiley 
    spawnedSpiders[thisId].dead = false 
    return thisId 
end 

하지만 분명히 오류가 발생합니다.이 작업을 수행하는 적절한 방법을 알고 있습니까? 감사!

+0

. "PAW 예제를 LUA로 변환하는 방법"으로 수정 될 수 있습니까? – Akhneyzar

답변

4

뭔가 ?

local spawnedSpiders = {} 
local spawnCount = 0 

function spawn_spider(tilex, tiley) 
    spawnCount = spawnCount + 1 
    spawnedSpiders[spawnCount] = { 
     x = tilex, 
     y = tiley, 
     dead = false, 
    } 
    return spawnCount 
end 

편집 : 유 하오는 나보다 더 빨랐다 : 제목에 주어진 문제가 해결되지 않는이 대화는 "어떻게 LUA에 열거 할?"

+0

아하 괜찮아! 그것은 내가 어쨌든 찾고 있었던 것이다 : 3 – Bicentric

+1

'spawnCount'는'# spawnedSpiders'로 대체 될 수있다 – hjpotter92

+0

@ hjpotter92 간소화를 위해 유하오의 대답처럼. 만약 거미의 * lot *이 있다면, 길이 연산자'#'가'O (log n)'이기 때문에 약간 덜 효율적입니다. 하지만 제가하지 못했던 진짜 이유는 @ Bicentric의 코드에 가까이 있고 싶었 기 때문입니다. (다른 개념을 도입하지 마십시오.) – catwell

4

내가 PAWN에 대해 잘 모르지만, 난이 당신이 무슨 뜻인지 생각 :

local spawnedSpiders = {} 

function spawn(tilex, tiley) 
    local spiderData = {x = tilex, y = tiley, dead = false} 
    spawnedSpiders[#spawnedSpiders + 1] = spiderData 
    return #spawnedSpiders 
end 

가 그것에게 시험을 보내기

spawn("first", "hello") 
spawn("second", "world") 

print(spawnedSpiders[1].x, spawnedSpiders[1].y) 

출력 : first hello이 같은

+0

감사합니다. 이것은 내가 찾고 있었던 정확하게 것이다^_^나는 그것을 바르게 평가한다, 당신에게 감사한다 남자! – Bicentric