LUA 프로그래밍 하다보면, 어느 구간에 다가가면 엄청난 렉을 유발하는 경험이 있잖아요.
원인은 무한반복을 하는 프로그래밍 때문이죠.
물론 코드만 잘 짜여져 있다면 무한반복을 하더라도 아무런 탈이 없습니다.
아래의 여러가지 샘플 소스를 통해서 문제점을 적도록 하겠습니다.
샘플소스 1
while true do
turtle.dig()
end
터틀이 무한으로 채광을 하는것인데요.
블럭이 있던 없건간에 터틀의 1회 채광행위가 빠르지 않아 문제점은 없어보입니다.
터틀의 이동 및 채광 함수는 속도가 빠르지 않아 큰 문제는 없습니다만, 딜레이 함수를 걸어주는게 매우 좋습니다.
샘플소스 1 - 수정
while true do
turtle.dig()
os.sleep(0.05)
end
딜레이를 0.05초를 걸어주면 해결됩니다.
= = = =
샘플소스 2
while true do
print("Hello")
os.sleep(0.001)
end
딜레이를 주었기 때문에 아무 문제가 없어 보입니다.
하지만, 컴퓨터 크래프트는 0.05초를 최소 단위로 씁니다. 0.01~0.05 는 모두 0.05초로 취급하죠.
0.001초는 당연히 0초 처리하기때문에 잘못 처리하면 엄청난 렉을 유발합니다.
샘플소스 2 - 수정
while true do
print("Hello")
os.sleep(0.05)
end
= = = =
샘플소스 3
local type = read()
if type > 1 then
print('type :'..type..' > 1')
end
type 변수에 숫자를 입력해서 다른 값과비교하는 조건문입니다.
이론상으로는 문제가 없어보이지만 결과는 엉뚱한게 나오게 됩니다.
type 는 문자열로 취급하기 때문이죠.
해결방법은 tonumber함수를 써야됩니다.
샘플소스 3
local type = read()
if tonumber(type) > 1 then
print('type :'..type..' > 1')
end
= = = =
생각나는건 여기까지이고 더 생각나면 추가로 작성할게요.
'마인크래프트(Minecraft) > Computer Craft' 카테고리의 다른 글
[Computer Craft] 19. <응용기술> 패턴 인식 (0) | 2014.03.11 |
---|---|
[Computer Craft] 18. 모니터로 문 열고 닫기 (2) | 2014.02.17 |
[Computer Craft] 16. <응용기술> 유저 인식 문 (4) | 2013.09.08 |
[Computer Craft] 15. <응용기술> 채팅 인식 문 (2) | 2013.09.03 |
[Computer Craft] 14. <응용기술> 플로피디스크 비밀번호 문 (8) | 2013.09.02 |