왕초보
2011.10.04 15:09

라벨 이용하기 (1번째)

LCS
조회 수 2309 추천 수 0 댓글 4
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

강의를 보기 전에 참고할 사항이라면 \가 있습니다.

원화 표시로 나와야 하는데 여기서는 슬래시로 나오네요...

원화 표시로 읽어 주시면 감사하겠습니다.

 

가령 \V[0001]은 그 왜 있죠? [0001] 변수를 문장으로 표시하는 명령어 있잖아요. 문장의 표시 이벤트에 넣어 쓸 수 있는거..

\C[2]를 넣으면 그 뒤의 글자는 빨간 색으로 표시되고.. 그런 겁니다.

 

 

이벤트 목록을 보시면


라벨

라벨로 이동


이 2개가 있습니다.

이것에 대해 모르시는 분들 은근히 많은 것 같아서 글을 씁니다.

 


어느 이벤트가 있다고 합시다. 아래와 같습니다.


이벤트 1

★ 변수의 설정 : [0001] = 10

★ 변수의 설정 : [0002] = 2

★ 라벨 : return

★ 조건 분기 : 변수 [0001]이 >= 1 일 경우

  ★ 변수의 설정 : [0002] *= 2

  ★ 변수의 설정 : [0001] -= 1

  분기 종료

★ 문장의 표시 : \V[0002]


이벤트 1에서, 맨 마지막 문장의 표시는 어떤 글을 출력할까요?

여기서 3번째 줄에 있는 라벨 이벤트는 아무런 역할을 하지 못합니다.

마찬가지로, 변수 [0001] 또한, 변수 [0002]에 아무런 영향을 미치지 못하고 있습니다.

여기까지는 이해 되셨나요?


이해 안되신 분들을 위하여...


이벤트 1

★ 변수의 설정 : [0001] = 10 --> 변수 [0001]에 10을 대입했습니다. 현재 [0001]=10

★ 변수의 설정 : [0002] = 2 --> 변수 [0002]에 2를 대입했습니다. 현재 [0002]=2

★ 라벨 : return --> 라벨을 넣었습니다. 이름은 return 으로 했습니다.

★ 조건 분기 : 변수 [0001]이 >= 1 일 경우 --> 현재 변수 [0001]=10이며, 10은 1 이상이므로 조건 분기 내의 이벤트가 실행됩니다.

  ★ 변수의 설정 : [0002] *= 2 --> 변수 [0002]가 2배가 되었습니다. 현재 [0002]=4

  ★ 변수의 설정 : [0001] -= 1 --> 변수 [0001]에서 1을 뺄셈을 하였습니다. 현재 [0001]=9

  분기 종료 --> 조건 분기의 영향력이 끝나는 지점입니다.

★ 문장의 표시 : \V[0002] --> 문장을 이용해 결과를 표시합니다. 현재 [0002]=4 이므로 4가 출력됩니다.


 

이렇게 되어, 결과는 4가 출력됩니다.



 


이제부터가 진짜입니다.

이벤트 1에서 이벤트 달랑 하나가 추가되는데, 그게 얼마나 상황을 뒤집어 버리는지 보게 되실 겁니다.



 


이제 이벤트 2를 생각해 보겠는데요, 이벤트 1에서 하나의 이벤트만 더 추가된 형태입니다.


이벤트 2

★ 변수의 설정 : [0001] = 10

★ 변수의 설정 : [0002] = 2

★ 라벨 : return

★ 조건 분기 : 변수 [0001]이 >= 1 일 경우

  ★ 변수의 설정 : [0002] *= 2

  ★ 변수의 설정 : [0001] -= 1

  ★ 라벨로 이동 : return

  분기 종료

★ 문장의 표시 : \V[0002]


라벨에 대해 아시는 분은 이게 얼마나 큰 효과를 가졌는지 알게 될 겁니다.

라벨은.. 한글과컴퓨터 한글 에서 책갈피 기능을 수행한다고 보면 됩니다.

라벨의 이름은 원하는 대로 만들어도 되지만, 되도록 영어로 띄어쓰기 없이 만드는 것이 좋습니다. (오타 방지를 위해서입니다.)

이렇게 라벨을 달아 놓으면, 나중에 라벨로 쉽게 되돌아 갈 수 있습니다.

 

이벤트 2 의 해설 들어갑니다.


이벤트 2

★ 변수의 설정 : [0001] = 10 --> ①변수 [0001]에 10을 대입합니다. 현재 [0001]=10

★ 변수의 설정 : [0002] = 2 --> ②변수 [0002]에 2를 대입합니다. 현재 [0002]=2

★ 라벨 : return --> ③라벨을 넣었습니다. 이름은 return

★ 조건 분기 : 변수 [0001]이 >= 1 일 경우 --> ④여기서부터가 문제입니다.

  ★ 변수의 설정 : [0002] *= 2

  ★ 변수의 설정 : [0001] -= 1

  ★ 라벨로 이동 : return

  분기 종료

★ 문장의 표시 : \V[0002]


조건 분기에 첫 번째로 도달하였을 때, [0001]의 값은 10으로, 1 이상이므로 조건에 만족하여 조건 분기내의 이벤트가 실행됩니다.


이벤트 2

★ 변수의 설정 : [0001] = 10

★ 변수의 설정 : [0002] = 2

★ 라벨 : return

★ 조건 분기 : 변수 [0001]이 >= 1 일 경우

  ★ 변수의 설정 : [0002] *= 2 --> ⑤ [0002]가 2배가 됩니다. 현재 [0002]=4

  ★ 변수의 설정 : [0001] -= 1 --> ⑥ [0001]에서 1이 뺄셈 됩니다. 현재 [0001]=9

  ★ 라벨로 이동 : return --> ⑦!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  분기 종료

★ 문장의 표시 : \V[0002]


위의 "라벨로 이동" 이 어떤 행동일 것 같습니까?

라벨 : return 으로 이동하라는 겁니다.

 

그리하여

 

이벤트 2

★ 변수의 설정 : [0001] = 10

★ 변수의 설정 : [0002] = 2

★ 라벨 : return --> ⑧ 라벨 지정한 장소로 돌아왔습니다. 이름이 return인 라벨은 이 곳밖에 없으니까요.

★ 조건 분기 : 변수 [0001]이 >= 1 일 경우 --> ⑨ 2번째로 도달하는 조건 분기입니다.

  ★ 변수의 설정 : [0002] *= 2

  ★ 변수의 설정 : [0001] -= 1

  ★ 라벨로 이동 : return

  분기 종료

★ 문장의 표시 : \V[0002]


2번째로 조건 분기에 도달했을 때, [0001]=9, [0002]=4 입니다.

조건 분기 내용을 통과하여 다시 라벨로 이동에 도달할 때, [0001]=8, [0002]=8이 될 것입니다.


간단히 보겠습니다.


x=라벨로 이동 지점에 도달한 횟수, y=[0001]의 값, z=[0002]의 값


x,y,z 순서쌍

1,9,4

2,8,8

3,7,16

4,6,32

5,5,64

6,4,128

7,3,256

8,2,512

9,1,1024

10,0,2048

11,x,x --> 11번째에는 라벨로 이동에 도달하지 못합니다. 왜냐하면...


이벤트 2

★ 변수의 설정 : [0001] = 10

★ 변수의 설정 : [0002] = 2

★ 라벨 : return

★ 조건 분기 : 변수 [0001]이 >= 1 일 경우 --> 11번째 조건 분기에 도달했을 때, [0001]=0

  ★ 변수의 설정 : [0002] *= 2

  ★ 변수의 설정 : [0001] -= 1

  ★ 라벨로 이동 : return

  분기 종료

★ 문장의 표시 : \V[0002]


11번째 조건 분기에 도달하게 되면 [0001]=0이며, 이는 조건 분기의 조건에 만족하지 못하여, 조건 분기 내의 이벤트들을 무시하게 됩니다.  다시 말하면, 라벨로 이동 이벤트에 더 이상 도달하지 않게 되는 겁니다.

 

결국 드디어 반복이 끝나고, 결과값이 표시됩니다. 이 때 [0002]=2048 이므로 결과값은 2048이 출력됩니다.



라벨은 이렇게 이벤트의 특정 부분을 반복하는 데 쓰입니다.

거의 대다수가 조건 분기와 같이 쓰고 있습니다.

 

왜냐하면, 실수로라도, 특정 부분이 무한정 반복되도록 작성하게 되면 그건 곧 문제가 되는거거든요. 그대로 게임이 마비되어 버립니다.

그러니, 위와 같이, 특정 조건까지 도달하면 반복이 멈추도록 설계하여야 합니다.

 

또, 라벨 이름 지정 시 신중히 해야 해요.

가령 라벨 이름을 ruin 이라 했는데 라벨로 이동의 이름을 rain 이라 하면, 둘은 전혀 아무런 효과도 내지 못합니다.


 

변수의 조작에 보시면 알겠지만 제곱 항목이 없습니다.

제곱의 연산은 어쩔 수 없이 라벨을 이용해야 합니다.

 

 

다음 강의에는 이를 좀 응용해 보도록 하겠습니다.

 

P.S. 댓글을 달지 않는 행위는 이 세상에서 가장 잔혹한 행위일 지도 모릅니다.

  • ?
    카쿠즈 2011.11.22 18:08

    라벨이 뭔지도 몰랐는데..감사합니다

  • ?
    XP 팬 2011.12.10 08:10

    저두 RPG를 4년간 만들어 오면서 라벨이 뭔지도 몰랐는데 강좌 올려주셔서 감사합니다

  • ?
    키바 2011.12.16 23:13

    아....이제 라벨이 이해됬습니다....감사합니다!

  • ?
    변하지않는어려움 2013.02.25 22:55
    오오미, 자세하고 성의있는 해설 감사드립니다~

List of Articles
분류 제목 조회 수 추천 수
이동/점프/장소이동 오니인님 요청강좌 3 file 2127 0
이동/점프/장소이동 캐릭터 이동속도(빈도)를 빠르게하거나 느리게하기 1 3661 0
이동/점프/장소이동 캐릭터 자동으로 점프 시키기 3 1924 0
이동/점프/장소이동 캐릭터 자동으로 랜덤 이동시키기 1665 1
이동/점프/장소이동 워프게이트 만들기 6 file 2306 0
이동/점프/장소이동 열쇠가 있어야만 집으로 들어갈수있게 설정하기! 14 file 4059 6
이동/점프/장소이동 물속에서 놀기;;(예제) 3 file 3684 3
Board Pagination Prev 1 Next
/ 1

Copyright ⓒ Nioting All Rights Reserved. (since 1999)    개인정보
        

Fatal error: Cannot access property sessionController::$lifetime in /web/old/xe/modules/session/session.controller.php on line 45