2013-04-25 1 views
0

코딩에 아마추어입니다. 그래서, 내가 얼굴을 마주 치면 몇 가지를 생각해보십시오.루아 - 커플 질문

어쨌든, 임 메신저를 만들기위한 알파 단계를 만들고 있습니까? 설치 프로그램을 만들고있어. 두 가지 질문. pastebin에서 코드를 가져 와서 내 lua 스크립트에서 다운로드 할 수 있습니까? 두. cmd에 "인쇄"부분을 넣었습니다. 나는 "불법 문자"를 얻는다. 나는 무엇이 잘못되었는지 모른다. 여기 내 코드가있다.

--Variables 
Yes = True 
No = False 
--Loading Screen 
print ("1") 
sleep(0.5) 
print("2") 
sleep(0.5) 
print("Dowloading OS") 
sleep(2) 
print("Done!") 
sleep(0.2) 
print("Would you like to open the OS?") 
end 
+4

당신은 "amatuer"프로그래머,하지만 당신은 운영 체제를 만들기 * 야 * 천천히?. 문법적으로 정확한 루아를 이해할 수 없다면 (그리고 구문 상 올바르지는 않습니다), 당신은 OS를 만드는 데있어 먼 길을 택했습니다. –

+0

알파. 게다가, 나는 그것을 이해한다. 나 자신을 단계별로 가르쳐. – TwitchyCake

답변

3

코드에 몇 가지 문제가 있습니다.

우선, TrueFalse은 모두 의미가없는 이름입니다. 이전에 무언가를 지정하지 않은 경우 모두 nil입니다. 따라서 YesNo 변수는 모두 nil으로 설정됩니다. 이것은 true와 false가 루아에 존재하지 않기 때문에 발생하는 것은 아닙니다. 단지 소문자입니다 : truefalse. YesNo 변수를 만드는 것은 중복되어 읽기가 어렵습니다. truefalse을 직접 사용하십시오.

둘째, 웹 사이트에서 다운로드 한 표준 lua를 사용하는 경우 sleep은 유효한 기능이 아닙니다 (Roblox 버전의 Lua에 있거나 이미 들었지만). TrueFalse처럼 대개 잠자기는 nil이므로 전화를 걸어도 작동하지 않습니다. 이 프로그램을 실행하는 방식에 따라 Mac의 경우 os.execute("sleep " .. number_of_seconds)을, PC를 사용하는 경우 os.execute("timeout /t " .. number_of_seconds)을 사용하고 싶을 것입니다. 당신은 당신이 겪고있는 특정 오류로 function

function my_sleep_mac(number_of_seconds) 
    os.execute("sleep " .. number_of_seconds) 
end 

function my_sleep_PC(number_of_seconds) 
    os.execute("timeout /t " .. number_of_seconds) 
end 

에 다음을 마무리 할 수 ​​있습니다, 나는 그것이 프로그램의 종료와 같은 end 문으로 인해 생각합니다. 루아의 end은 여러분이 생각하는대로 정확하게 수행하지 못합니다 - 프로그램의 끝을 지정하지는 않습니다. 루아는 파일에 남아있는 텍스트가 있는지보기 만하면 프로그램이 끝나는 곳을 파악할 수 있습니다. 그것은 당신이 코드 끝의 다양한 서브 블록은, IE 예를 들어 등 if 문, function의,의 가지, 당신은

print("checking x...") 
if x == 2 then 
print("x is 2") 
print("Isn't it awesome that x is 2?") 
print("x was checked") 

루아가 가지고있는 코드를 작성한다고 가정 곳이 말도없이 알아낼 수있는 것 x이 인쇄되었는지 마지막으로 확인되었는지 여부를 알 수있는 방법은 x이 2이거나 항상있는 경우에만 발생합니다. 따라서 end을 사용하는 다양한 코드 섹션이 끝나면 명시 적으로 말해야합니다. 하지만 파일의 경우 불필요하며 실제로 오류가 발생합니다. 여기에 도입 된 endif 문이다

print("checking x...") 
if x == 2 then 
print("x is 2") 
print("isn't it awesome that x is 2?") 
end 
print("x was checked") 

루아 상관하지 않지만, 그것은 시작과 끝 위치를 한 눈에 알 수 있도록 이러한 코드 섹션을 들여 아주 좋은 생각입니다 :

print("checking x...") 
if x == 2 then 
    print("x is 2") 
    print("isn't it awesome that x is 2?") 
end 
print("x was checked") 

"붙여 넣기 문제"에 관해서는 좀 더 구체적으로 설명해야합니다.

+0

메신저 어디서나 붙여 넣기 코드를 취한 다음 텍스트를 PC로 다운로드합니다. – TwitchyCake

+0

어떤 텍스트를 다운로드 하시겠습니까? 그리고 어디에서? 다운로드를 통해 인터넷에서 다운로드하는 것을 의미합니까 (이 경우 이미 서버를 설정해야합니다). 또는 파일에서 "다운로드"하십시오. 그리고이 "pastebin"은 마분지입니까? IE는 어디에 복사/붙여 넣기 텍스트가 저장되어 있습니까? – SelectricSimian

0

당신은 방법 OS에 독립적 인 (그러나 CPU를 많이 사용)에 sleep을 구현할 수 있습니다

local function sleep(seconds) 
    local t0 = os.clock() 
    repeat 
    until os.clock() - t0 >= seconds 
end 
+0

'os.clock() - t0> = n'은'os.clock() - t0> = seconds' =)이어야합니다. – hjpotter92

+0

@ hjpotter92 - 고마워요. 결정된. –