[hanlp]HanLP 에서의 한글 관련 함수 가이드
1. HanLP 에서의 조사 처리
HanLP 에서는 '이', '가', '을', '를'.. 등등의 조사를 사용할 수 있습니다.
이 조사를 위해서 사용하는 함수의 이름은 다음과 같습니다.
han_iga(), han_desc(), han_and(), han_obj(), han_i(), han_tool(),
han(), han_last().
-----------------------------------------------------------------------------------
string han_iga(string);
2. han_iga() 사용법 : '이', '가' 라는 조사를 사용할 때.
예) 1. 마군이 왔습니다.
2. 지마가 왔습니다.
위의 예) 에서 처럼 조사를 사용해야 할 경우가 있습니다.
이럴때는 han_iga() 함수를 사용하면 됩니다.
만약 write() 함수에서 사용한다면.
write(han_iga(this_player()->query("이름"))+" 왔습니다.\n");
위와 같이 사용을 하면 사용자의 이름을 받아서 받침이 있는지 없는지를 검
색한 후 원래의 문자열에 '이' 또는 '가'를 붙여서 돌려 줍니다.
-----------------------------------------------------------------------------------
string han_desc(string);
3. han_desc() 사용법 : '은', '는' 이라는 조사를 사용할 때.
예) 1. 마군은 기쁩니다.
2. 지마는 기쁩니다.
say() 함수에서 사용할 경우?
say(han_desc(this_player()->query("이름"))+" 기쁩니다.\n");
-----------------------------------------------------------------------------------
string han_and(string);
4. han_and() 사용법 : '와', '과' 라는 조사를 사용할 때.
예) 1. 마군과 같이 갑니다.
2. 지마와 같이 갑니다.
write() 함수에서 사용할 경우?
write(han_and(this_player()->query("이름"))+" 같이 갑니다.\n");
-----------------------------------------------------------------------------------
string han_obj(string);
5. han_obj() 사용법 : '을', '를' 이라는 조사를 사용할 때.
예) 1. 마군을 봅니다.
2. 지마를 봅니다.
write() 함수에서 사용할 경우?
write(han_obj(this_player()->query("이름"))+" 봅니다.\n");
-----------------------------------------------------------------------------------
string han_i(string);
6. han_i() 함수는 받침이 있는 단어일 경우에만 '이'를 붙여서 돌려줍니다.
이면, 이라면, 이라는.. 등등의 조사를 처리할때 사용하면 됩니다.
예) 1. 마군이라는 대상이 없습니다.
2. 지마라는 대상이 없습니다.
write() 함수에서 사용할 경우?
write(han_i(this_player()->query("이름"))+"라는 대상이 없습다.\n");
-----------------------------------------------------------------------------------
string han_tool(string);
7. han_tool() 사용법 : '로', '으로' 라는 조사를 사용할 때.
예) 1. 동으로 갑니다.
2. 서로 갑니다.
write() 함수에서 사용할 경우?
write(han_tool(this_player()->query("이름"))+" 갑니다.\n");
-----------------------------------------------------------------------------------
string han(string,string);
8. han() 사용법.
위의 han_iga(), han_desc(), han_and(), han_obj(), han_i(), han_tool()..
등등은 LP머드를 제작하는 많은 사람들이 사용하는 익숙한 함수이고, han()
함수보다 루틴이 간단하기 때문에 속도도 조금 빠르겠지만, 처음 LP를 다루는
사람들이라면 일일히 외우기가 귀찮은 것도 사실입니다.
그래서 han() 함수를 새로 추가했습니다.
write에서의 사용법은 다음과 같습니다.
( 물론.. 다른 string 출력 함수에서도 사용할 수 있습니다.)
예) 1. 마군이 왔습니다.
2. 지마가 왔습니다.
write(han(this_player()->query("이름"),"이")+" 왔습니다.\n");
위와 같은 식으로 두번째의 변수에 직접 조사를 넣어주면 됩니다.
만약 '이' '가' 라는 조사일 경우에 두번째 변수에 '이' 나 '가' 중 아무것이
라도 인식을 합니다.
다음은 han() 함수를 사용한 여러가지 예제입니다.
에) 1. 마군을 봅니다.
2. 지마를 봅니다.
write(han(this_player()->query("이름"),"을")+" 봅니다.\n");
에) 1. 마군과 같이 갑니다.
2. 지마와 같이 갑니다.
write(han(this_player()->query("이름"),"와")+" 같이 갑니다.\n");
위와 같은 형식으로 '을' '를' '이' '가' '은' '는' '로' '으로' '란' '이란'
'라' '이라'의 조사를 사용할 수 있습니다.
-----------------------------------------------------------------------------------
string han_last(string,string);
9. han_last() 함수의 사용법
han() 과 사용법이 동일합니다. 다만 han() 함수는 원래의 string에 조사를
더해서 돌려줍니다만, han_last() 함수는 조사만을 돌려 줍니다.
사실 별로 사용할 일이 없는 함수입니다만.. 어쩌다 보니 가끔은 조사만 필요
할 때가 있더군요... t.t
이런 경우 말입니다.
예) 1. 마군(摩君)이 왔습니다.
2. 지마(地摩)가 왔습니다.
'이름(별명)이 왔습니다.' 라는 문자를 출력할 때 이름에 대한 조사를 괄호가
끝나는 지점에 붙여서 넣어야 할 때 기존의 함수만으로는 불가능 하기 때문에
이럴때 han_last()를 사용하면 됩니다.
예를 들어 write() 에서라면...
string name, nic;
name = this_player()->query("이름");
nic = this_player()->query("별명");
write(name+"("+nic+")"+han_last(name,"이")+" 왔습니다.\n");
이런식으로 사용하면 됩니다.
-----------------------------------------------------------------------------------
string first_char(string);
10. first_char() 함수 사용법.
first_char()는 쨑angul string의 첫 자소를 돌려 주는 함수 입니다.
사용자 데이타의 디렉토리를 만들때등에 사용합니다.
마군 -> ㅁ
지마 -> ㅈ
예) 1. 마군의 디렉토리는 /data/ㅁ입니다.
2. 지마의 디렉토리는 /data/ㅈ입니다.
string name;
name = this_player()->query("이름");
write(name+"의 디렉토리는 "+first_char("name")+"입니다.\n");
-----------------------------------------------------------------------------------
string han_count(int);
11. han_count() 함수 사용법.
han_count() 함수는 숫자를 한글로 바꾸어 주는 함수입니다.
예를 들어 123은 백이십삼 으로 바꾸어 줍니다.
예) 당신은 서른두개의 단검을 가지고 있습니다.
int num;
num = this_player()->query("단검갯수");
write("당신은 "+han_count(num)+"개의 단검을 가지고 있습니다.\n");
참고)
han_count() 함수는 9999 까지의 수만 한글로 출력하며 그 이상일 경우에는 숫자로 출력합니다.
9999 -> 구천구백구십구
10000 -> 10000
-----------------------------------------------------------------------------------
string han_damage_msg(int);
12. han_damage_msg() 사용법.
han_damage_msg() 함수는 데미지에 따라서 적당한 문자를 출력해 주는 함수입니다.
han_damage_msg() 함수는 /lib/std/user.c 화일과 /lib/std/monster.c 화일에 continue_attack() 함수 안에서 사용되었습니다.
데미지가 0 이라면 "하나도 안아프게", 데미지가 40 이라면 "조금 아프게" 이
런식의 메세지를 돌려 줍니다.
만약 출력되는 메세지가 제작하는 머드의 특성에 맞지 않는다면 TMI2나 Lima 의 원본을 참고해 가면서 새로 제작을 하셔야 합니다.
또는 메세지에 따라서 출력되는 메세지들을 제게 보내 주시면 새로 제작을 해
서 다음버젼에 넣을 수 있도록 하겠습니다.
-----------------------------------------------------------------------------------
13. 기타 추가된 한글 관련 함수들
위의 함수들 이외에 추가된 함수들은 다음과 같으며 자신의 기호와 맞는다면
머드에서 사용하시면 됩니다.
string combat_end_msg(int default: 0);
: 전투를 시작할 대상이 없을때 랜덤하게 메세지를 출력
string combat_end_msg(int default: 0);
: 전투가 끝날때 랜덤하게 메세지를 출력.
string han_exp_msg(int);
: 경험치를 받을때 랜덤하게 메세지를 출력.
HanLP 카페에서 가져와 약간의 정리?를 했습니다.
HanLP 에서는 '이', '가', '을', '를'.. 등등의 조사를 사용할 수 있습니다.
이 조사를 위해서 사용하는 함수의 이름은 다음과 같습니다.
han_iga(), han_desc(), han_and(), han_obj(), han_i(), han_tool(),
han(), han_last().
-----------------------------------------------------------------------------------
string han_iga(string);
2. han_iga() 사용법 : '이', '가' 라는 조사를 사용할 때.
예) 1. 마군이 왔습니다.
2. 지마가 왔습니다.
위의 예) 에서 처럼 조사를 사용해야 할 경우가 있습니다.
이럴때는 han_iga() 함수를 사용하면 됩니다.
만약 write() 함수에서 사용한다면.
write(han_iga(this_player()->query("이름"))+" 왔습니다.\n");
위와 같이 사용을 하면 사용자의 이름을 받아서 받침이 있는지 없는지를 검
색한 후 원래의 문자열에 '이' 또는 '가'를 붙여서 돌려 줍니다.
-----------------------------------------------------------------------------------
string han_desc(string);
3. han_desc() 사용법 : '은', '는' 이라는 조사를 사용할 때.
예) 1. 마군은 기쁩니다.
2. 지마는 기쁩니다.
say() 함수에서 사용할 경우?
say(han_desc(this_player()->query("이름"))+" 기쁩니다.\n");
-----------------------------------------------------------------------------------
string han_and(string);
4. han_and() 사용법 : '와', '과' 라는 조사를 사용할 때.
예) 1. 마군과 같이 갑니다.
2. 지마와 같이 갑니다.
write() 함수에서 사용할 경우?
write(han_and(this_player()->query("이름"))+" 같이 갑니다.\n");
-----------------------------------------------------------------------------------
string han_obj(string);
5. han_obj() 사용법 : '을', '를' 이라는 조사를 사용할 때.
예) 1. 마군을 봅니다.
2. 지마를 봅니다.
write() 함수에서 사용할 경우?
write(han_obj(this_player()->query("이름"))+" 봅니다.\n");
-----------------------------------------------------------------------------------
string han_i(string);
6. han_i() 함수는 받침이 있는 단어일 경우에만 '이'를 붙여서 돌려줍니다.
이면, 이라면, 이라는.. 등등의 조사를 처리할때 사용하면 됩니다.
예) 1. 마군이라는 대상이 없습니다.
2. 지마라는 대상이 없습니다.
write() 함수에서 사용할 경우?
write(han_i(this_player()->query("이름"))+"라는 대상이 없습다.\n");
-----------------------------------------------------------------------------------
string han_tool(string);
7. han_tool() 사용법 : '로', '으로' 라는 조사를 사용할 때.
예) 1. 동으로 갑니다.
2. 서로 갑니다.
write() 함수에서 사용할 경우?
write(han_tool(this_player()->query("이름"))+" 갑니다.\n");
-----------------------------------------------------------------------------------
string han(string,string);
8. han() 사용법.
위의 han_iga(), han_desc(), han_and(), han_obj(), han_i(), han_tool()..
등등은 LP머드를 제작하는 많은 사람들이 사용하는 익숙한 함수이고, han()
함수보다 루틴이 간단하기 때문에 속도도 조금 빠르겠지만, 처음 LP를 다루는
사람들이라면 일일히 외우기가 귀찮은 것도 사실입니다.
그래서 han() 함수를 새로 추가했습니다.
write에서의 사용법은 다음과 같습니다.
( 물론.. 다른 string 출력 함수에서도 사용할 수 있습니다.)
예) 1. 마군이 왔습니다.
2. 지마가 왔습니다.
write(han(this_player()->query("이름"),"이")+" 왔습니다.\n");
위와 같은 식으로 두번째의 변수에 직접 조사를 넣어주면 됩니다.
만약 '이' '가' 라는 조사일 경우에 두번째 변수에 '이' 나 '가' 중 아무것이
라도 인식을 합니다.
다음은 han() 함수를 사용한 여러가지 예제입니다.
에) 1. 마군을 봅니다.
2. 지마를 봅니다.
write(han(this_player()->query("이름"),"을")+" 봅니다.\n");
에) 1. 마군과 같이 갑니다.
2. 지마와 같이 갑니다.
write(han(this_player()->query("이름"),"와")+" 같이 갑니다.\n");
위와 같은 형식으로 '을' '를' '이' '가' '은' '는' '로' '으로' '란' '이란'
'라' '이라'의 조사를 사용할 수 있습니다.
-----------------------------------------------------------------------------------
string han_last(string,string);
9. han_last() 함수의 사용법
han() 과 사용법이 동일합니다. 다만 han() 함수는 원래의 string에 조사를
더해서 돌려줍니다만, han_last() 함수는 조사만을 돌려 줍니다.
사실 별로 사용할 일이 없는 함수입니다만.. 어쩌다 보니 가끔은 조사만 필요
할 때가 있더군요... t.t
이런 경우 말입니다.
예) 1. 마군(摩君)이 왔습니다.
2. 지마(地摩)가 왔습니다.
'이름(별명)이 왔습니다.' 라는 문자를 출력할 때 이름에 대한 조사를 괄호가
끝나는 지점에 붙여서 넣어야 할 때 기존의 함수만으로는 불가능 하기 때문에
이럴때 han_last()를 사용하면 됩니다.
예를 들어 write() 에서라면...
string name, nic;
name = this_player()->query("이름");
nic = this_player()->query("별명");
write(name+"("+nic+")"+han_last(name,"이")+" 왔습니다.\n");
이런식으로 사용하면 됩니다.
-----------------------------------------------------------------------------------
string first_char(string);
10. first_char() 함수 사용법.
first_char()는 쨑angul string의 첫 자소를 돌려 주는 함수 입니다.
사용자 데이타의 디렉토리를 만들때등에 사용합니다.
마군 -> ㅁ
지마 -> ㅈ
예) 1. 마군의 디렉토리는 /data/ㅁ입니다.
2. 지마의 디렉토리는 /data/ㅈ입니다.
string name;
name = this_player()->query("이름");
write(name+"의 디렉토리는 "+first_char("name")+"입니다.\n");
-----------------------------------------------------------------------------------
string han_count(int);
11. han_count() 함수 사용법.
han_count() 함수는 숫자를 한글로 바꾸어 주는 함수입니다.
예를 들어 123은 백이십삼 으로 바꾸어 줍니다.
예) 당신은 서른두개의 단검을 가지고 있습니다.
int num;
num = this_player()->query("단검갯수");
write("당신은 "+han_count(num)+"개의 단검을 가지고 있습니다.\n");
참고)
han_count() 함수는 9999 까지의 수만 한글로 출력하며 그 이상일 경우에는 숫자로 출력합니다.
9999 -> 구천구백구십구
10000 -> 10000
-----------------------------------------------------------------------------------
string han_damage_msg(int);
12. han_damage_msg() 사용법.
han_damage_msg() 함수는 데미지에 따라서 적당한 문자를 출력해 주는 함수입니다.
han_damage_msg() 함수는 /lib/std/user.c 화일과 /lib/std/monster.c 화일에 continue_attack() 함수 안에서 사용되었습니다.
데미지가 0 이라면 "하나도 안아프게", 데미지가 40 이라면 "조금 아프게" 이
런식의 메세지를 돌려 줍니다.
만약 출력되는 메세지가 제작하는 머드의 특성에 맞지 않는다면 TMI2나 Lima 의 원본을 참고해 가면서 새로 제작을 하셔야 합니다.
또는 메세지에 따라서 출력되는 메세지들을 제게 보내 주시면 새로 제작을 해
서 다음버젼에 넣을 수 있도록 하겠습니다.
-----------------------------------------------------------------------------------
13. 기타 추가된 한글 관련 함수들
위의 함수들 이외에 추가된 함수들은 다음과 같으며 자신의 기호와 맞는다면
머드에서 사용하시면 됩니다.
string combat_end_msg(int default: 0);
: 전투를 시작할 대상이 없을때 랜덤하게 메세지를 출력
string combat_end_msg(int default: 0);
: 전투가 끝날때 랜덤하게 메세지를 출력.
string han_exp_msg(int);
: 경험치를 받을때 랜덤하게 메세지를 출력.
HanLP 카페에서 가져와 약간의 정리?를 했습니다.
0Comments
-í‘œì‹œí• ë‚´ìš©ì´ ì—†ìŠµë‹ˆë‹¤.-
코멘트를 ì‚ì œí• ë¹„ë°€ë²ˆí˜¸ë¥¼ ìž…ë ¥í•˜ì„¸ìš”.
ì •íšŒì› ì´ìƒë§Œ 코멘트 쓰기가 가능합니다.
ì´ ê²Œì‹œë¬¼ 109ê°œ / ê²€ìƒ‰ëœ ê²Œì‹œë¬¼: 109ê°œ
글번호 | ì œëª© | ìž‘ì„±ìž | 조회수 | 좋아요 | ì‹«ì–´ìš” | ìž‘ì„±ì¼ | |
---|---|---|---|---|---|---|---|
[기타]누구든지 머드 강의를 올리수 있는 곳입니다...^^ | 머드í´ëŸ½ | 4551 | 0 | 0 | 2003-12-31 | ||
29 | [hanlp] 한엘피 지도소스 고쳐서 케릭터 형태로 5x5 [7] | 새천사 | 3368 | 0 | 0 | 2004-01-30 | |
28 | [circle] 그날이 오면에서 쓰는 자판기 소스 [4] | ëƒ ëƒ ì´ | 3123 | 0 | 0 | 2004-01-29 | |
27 | [circle] 자동출구 화살표로 출력하기 소스 | CutyStar☆ | 2935 | 0 | 0 | 2004-01-29 | |
26 | [hanlp] 쿼리에 대한 아주 초보적인 내용!!;; [4] | 탈퇴 | 3330 | 0 | 0 | 2004-01-22 | |
25 | [mordor] Vtmode 를 통해서만 접속 가능하게 하기... [1] | 방울꽃 | 2903 | 0 | 0 | 2004-01-16 | |
24 | [circle] 써클머드로 머드 게임 만들기:세번째 이야기 [3] | 새천사 | 4472 | 0 | 0 | 2004-01-16 | |
23 | [circle] 써클계열 머드 VTMODE BBS를 통해서만 접속 가능하도록 하는 소스 [3] | ì£¼ì„ | 2951 | 0 | 0 | 2004-01-16 | |
22 | [circle] 써클머드 README 파일 : 허접번역(?) [1] | 새천사 | 3905 | 0 | 0 | 2004-01-11 | |
21 | [circle] 써클 머드로 머드 게임 만들기:두번째이야기 [6] | 새천사 | 4977 | 0 | 0 | 2004-01-08 | |
20 | [hanlp] HanLP 도움말 | 임종호 | 5326 | 0 | 0 | 2004-01-07 | |
19 | [hanlp] HanLP 에서의 한글 관련 함수 가이드 | Xerxes | 4420 | 0 | 0 | 2004-01-06 | |
18 | [circle] 써클 머드로 머드 게임 만들기:첫번째이야기 [8] | 새천사 | 8115 | 0 | 0 | 2004-01-03 | |
17 | [mordor] 개척소스 | ë³´ë¼ë©” | 2971 | 0 | 0 | 2003-12-27 | |
16 | [mordor] 그룹경치소스 | ë³´ë¼ë©” | 2998 | 0 | 0 | 2003-12-27 | |
15 | [mordor] 기증소스 | ë³´ë¼ë©” | 2824 | 0 | 0 | 2003-12-27 | |
14 | [mordor] 낚시소스 | ë³´ë¼ë©” | 3087 | 0 | 0 | 2003-12-26 | |
13 | [mordor] Mordor 내장 에디터 1.0 (아이템, 몹) [2] | ë³´ë¼ë©” | 3243 | 0 | 0 | 2003-12-25 | |
12 | [mordor] 내장 에디터 입니다.. | ë³´ë¼ë©” | 2917 | 0 | 0 | 2003-12-25 | |
11 | [mordor] 도배방지 소스 | ë³´ë¼ë©” | 2973 | 0 | 0 | 2003-12-25 | |
10 | [mordor] 몹심기 소스 | 머드사랑 | 3062 | 0 | 0 | 2003-12-25 |