머드클럽
머드게임이란?
게임은 어떤 환경에서?
본격적으로 게임해 볼까?
배너교환
머드강좌
일반 머드강좌
성천사님의 머드강좌
혼님의 머드강좌
방울꽃님의 머드강좌
리트님의 머드강좌
2Soo님의 머드강좌
내머드소개하기
접속가능머드
내머드소개하기
자료실
접속 프로그램
머드소스
머드 유틸리티
기타
커뮤니티
공지사항
등업신청
머드클럽에바란다
자유 게시판
질문 AND 답변
머드클럽 갤러리
구인구직
머드게임소개
사신전(死神戰)
사신전 소개
사신전 맵
사신전 명령어 모음집
천명(天命)
천명 소개
천명 맵
천명 명령어 모음집
마이페이지
로그인
회원가입
계정찾기
로그인
회원가입
계정찾기
텍스트머드클럽
검색
[circle]써클머드로 머드 게임 만들기:세번째 이야기
새천사
3
4,406
0
0
2004-01-16 16:23:22
<br /> [Circle MUD로 MUD 게임 만들기:첫번째 이야기] <br /> <br /> Circle MUD 한글 아이디 받기 <br /> <br /> 오늘은 한글 아이디를 받는 부분을 배우기로 했습니다. 맞습니까? 아니면 말구 하하 <br />썰렁하니까 그만하고 무작정 또 따라 해볼까요? <br /> <br />>> interpreter.c (1302번째 줄 void nanny) <br /> <br /> if ((_parse_name(arg, tmp_name)) || strlen(tmp_name) < 2 || <br /> strlen(tmp_name) > MAX_NAME_LENGTH || !Valid_Name(tmp_name) || <br /> fill_word(strcpy(buf, tmp_name)) || reserved_word(buf)) { <br /> write_to_output(d, "Invalid name, please try another.\r\nName: "); <br /> return; <br /> } <br /> <br />먼저 한글이냐? 라는 문장을 넣어 보겠습니다. <br /> <br /> if ((_parse_name(arg, tmp_name)) || strlen(tmp_name) < 4 || <br /> !is_han(tmp_name) || <br /> strlen(tmp_name) > MAX_NAME_LENGTH || !Valid_Name(tmp_name) || <br /> fill_word(strcpy(buf, tmp_name)) || reserved_word(buf)) { <br /> write_to_output(d, "Invalid name, please try another.\r\nName: "); <br /> return; <br /> } <br /> <br />뭐가 추가 됐나요? !is_han(tmp_name) || 부분이 추가 되었습니다. 그리고 2가 4로 바 <br />뀌 었습니다. 그리고 MAX_NAME_LENGTH 를 찾아 10으로 바꾸세요. 그냥 저거 지우고 10 <br />으로 써도 됩니다. *^^* 이제 원래 있던 부분중 _parse_name 을 바꿔 보겠습니다. 같 <br />은 파일내에 1129 줄에 보시면 다음과 같은 것이 있습니다. <br /> <br />int _parse_name(char *arg, char *name) <br />{ <br /> int i; <br /> <br /> skip_spaces(&arg); <br /> for (i = 0; (*name = *arg); arg++, i++, name++) <br /> if (!isalpha(*arg)) <br /> return (1); <br /> <br /> if (!i) <br /> return (1); <br /> <br /> return (0); <br />} <br /> <br />이것을 다음과 같이 바꿔 보겠습니다. <br /> <br />int _parse_name(char *arg, char *name) <br />{ <br /> int i; <br /> <br />/* skip_spaces(&arg); */ <br /> for (; isnhspace(*arg); arg++); <br /> <br /> for (i = 0; (*name = *arg); arg++, i++, name++) <br /> if (!ishanalp(*arg)) <br /> return (1); <br /> <br /> if (!i) <br /> return (1); <br /> <br /> return (0); <br />} <br /> <br />여기서 보시면 isnhspace 와 ishanalp 가 있습니다. 이건 전에 강좌에 추가 했습니다. <br />맞죠? 이젠 또 뭘 하면 될까요? 음... is_han 을 만들어야 겠네요. 음! <br />그냥 전체 적으로 만들어 버리죠. 자 보세요. <br /> <br />hangul.c 라는 파일을 만들어 보지요. <br /> <br />/* 한글처리용입니다. */ <br />#include "kstbl.h" <br /> <br />int is_hangul(str) <br />unsigned char *str; <br />{ <br /> /* 순수한글인지 여부를 검사 */ <br /> if(str[0]>=0xb0 && str[0]<=0xc8 && str[1]>=0xa1 && <br /> str[1]<=0xfe) <br /> return 1; <br /> return 0; <br />} <br /> <br />int is_han(str) <br />unsigned char *str; <br />{ <br /> int i; <br /> for (i = 0; i < strlen(str);i += 2) { <br /> if (!is_hangul(str+i)) return 0; <br /> } <br /> return 1; <br />} <br /> <br />/* 받침이 있는지 없는지 검사하는 부분입니다. 조사처리에 쓰임 */ <br />int under_han(str) <br />char *str; <br />{ <br /> unsigned char high, low; <br /> int hightmp, lowtmp; <br /> int len; <br /> int found = 0; <br /> <br /> len = strlen(str); <br /> <br /> if(len < 2) <br /> return 0; <br /> lowtmp = str[len - 1]; <br /> len -= 2; <br /> hightmp = str[len]; <br /> if(lowtmp > -1) { <br /> while(len) { <br /> len--; <br /> if(len < 0) <br /> break; <br /> lowtmp = hightmp; <br /> hightmp = str[len]; <br /> if((hightmp < -1) && (lowtmp < -1)) { <br /> found = 1; <br /> break; <br /> } <br /> } <br /> } else <br /> found = 1; <br /> if(!found) return 0; <br /> high = hightmp; <br /> low = lowtmp; <br /> high = KStbl[(high - 0xb0) * 94 + low - 0xa1] & 0x1f; <br /> if(high < 2 || high > 28) <br /> return 0; <br /> return 1; <br />} <br /> <br />/* 첫글자의 초성을 찾는 부분입니다. */ <br />char *first_han(unsigned char *str) <br />{ <br /> int i, Length; <br /> char *Result = "ZZZ"; <br /> unsigned char str_0, str_1; <br /> <br /> static unsigned char *exam[]={ <br /> "ㄱ", "ㄲ", "ㄴ", "ㄷ", "ㄸ", <br /> "ㄹ", "ㅁ", "ㅂ", "ㅃ", "ㅅ", <br /> "ㅆ", "ㅇ", "ㅈ", "ㅉ", "ㅊ", <br /> "ㅋ", "ㅌ", "ㅍ", "ㅎ", "" }; <br />/* 이건 조합형으로 입력을 하셔야 합니다. */ <br /> static unsigned char *johab_exam[]={ <br /> "~Ha", "~La", "~Pa", "~Ta", "~Xa", <br /> "~\a", "| a", "바", "빠", "사", <br /> "싸", "아", "자", "짜", "차", <br /> "카", "타", "파", "하", "" }; <br /> <br /> Length = strlen(str); <br /> if (Length < 2) <br /> return Result; <br /> <br /> str_0 = str[0]; str_1 = str[1]; <br /> if (!is_hangul(&str[0])) <br /> return Result; <br /> <br /> str_0 = (KStbl[(str_0 - 0xb0) * 94 + str_1 - 0xa1] >> 8) & 0x7c; <br /> for(i = 0; johab_exam[i][0]; i++) <br /> { <br /> str_1 = (johab_exam[i][0] & 0x7f); <br /> if(str_1 == str_0) <br /> return exam[i]; <br /> } <br /> return Result; <br />} <br /> <br /> <br />------------------------------------------------------------------------------- <br />utils.h 에 저번에 쓴거 아래쪽에. <br /> <br />int is_hangul(unsigned char *str); <br />int is_han(unsigned char *str); <br />int under_han(unsigned char *str); <br />char *first_han(unsigned char *str); <br /> <br />------------------------------------------------------------------------------- <br />Makefile 을 고치겠습니다. <br /> <br />OBJFILES = act.comm.o act.informative.o act.item.o act.movement.o \ <br /> act.offensive.o act.other.o act.social.o act.wizard.o alias.o ban.o \ <br /> boards.o castle.o class.o comm.o config.o constants.o db.o fight.o \ <br /> graph.o handler.o house.o interpreter.o limits.o magic.o mail.o \ <br /> mobact.o modify.o objsave.o olc.o random.o shop.o spec_assign.o \ <br /> spec_procs.o spell_parser.o spells.o utils.o weather.o \ <br /> bsd-snprintf.o <br /> <br />CXREF_FILES = act.comm.c act.informative.c act.item.c act.movement.c \ <br /> act.offensive.c act.other.c act.social.c act.wizard.c alias.c ban.c \ <br /> boards.c castle.c class.c comm.c config.c constants.c db.c fight.c \ <br /> graph.c handler.c house.c interpreter.c limits.c magic.c mail.c \ <br /> mobact.c modify.c objsave.c olc.c random.c shop.c spec_assign.c\ <br /> spec_procs.c spell_parser.c spells.c utils.c weather.c \ <br /> bsd-snprintf.c <br /> <br />위에 보시면 bsd-snprintf.o 옆쪽에 hangul.o 입력하시고요. 아래쪽에서 마찮가지로 <br />hangul.c를 입력 하세요. <br />------------------------------------------------------------------------------- <br />이제 다 된거 같네요.... 조사는 다음에 배울꺼니까. 일단은 만들어 두시고요. <br />필요한것이 kstbl.h 라는 파일이 필요합니다. 이건 자료실에 올리겠습니다. 받아서 사 <br />용 하시기 바랍니다. 머드를 띄워서 확인하겠습니다. <br /> <br />By what name do you wish to be known? 새천사 <br />Did I get that right, 새천사 (Y/N)? n <br />Okay, what IS it, then? newangel <br />Invalid name, please try another. <br />Name: <br /> <br />제대로 됐습니다. 이번주 강의는 급하게 만드니라고 조금 허접 하네요. <br />
0
0
새글
답변
수정
삭제
최신목록
전체목록
Vtmode 를 통해서만 접속 가능하게 하기...
써클계열 머드 VTMODE BBS를 통해서만 접속 가능하도록 하는 소스
3
Comments
새천사
2004.01.16(금) 오후 04:31:53
답변
한가지 추가 할께요.
#include "conf.h"
#include "sysdep.h"
를 hangul.c 처음 부분에 넣어주세요.
머드클럽
2004.01.16(금) 오후 06:25:41
답변
자료 감사 드립니다..
손문
2007.12.05(수) 오후 10:49:43
답변
네번ㅉㅒ는 언제나오나요 ㅜㅜ 벌써 3년이 지난 ㅋㅋ;;
코멘트를 삭제할 비밀번호를 입력하세요.
비밀번호:
댓글에 답하기
입력
닫기
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 107개 / 검색된 게시물: 107개
누구든지 머드 강의를 올리수 있는 곳입니다...^^
[circle]
자동출구 화살표로 출력하기 소스
0
2880
0
0
CutyStar☆
2004-01-29
[hanlp]
쿼리에 대한 아주 초보적인 내용!!;;
4
3274
0
0
탈퇴
2004-01-22
[mordor]
Vtmode 를 통해서만 접속 가능하게 하기...
1
2857
0
0
방울꽃
2004-01-16
[circle]
써클머드로 머드 게임 만들기:세번째 이야기
3
4407
0
0
새천사
2004-01-16
[circle]
써클계열 머드 VTMODE BBS를 통해서만 접속 가능하도록 하는 소스
3
2903
0
0
주석
2004-01-16
[circle]
써클머드 README 파일 : 허접번역(?)
1
3837
0
0
새천사
2004-01-11
[circle]
써클 머드로 머드 게임 만들기:두번째이야기
6
4863
0
0
새천사
2004-01-08
[hanlp]
HanLP 도움말
0
5193
0
0
임종호
2004-01-07
[hanlp]
HanLP 에서의 한글 관련 함수 가이드
0
4350
0
0
Xerxes
2004-01-06
[circle]
써클 머드로 머드 게임 만들기:첫번째이야기
8
7975
0
0
새천사
2004-01-03
[mordor]
개척소스
0
2902
0
0
보라메
2003-12-27
[mordor]
그룹경치소스
0
2941
0
0
보라메
2003-12-27
[mordor]
기증소스
0
2768
0
0
보라메
2003-12-27
[mordor]
낚시소스
0
3030
0
0
보라메
2003-12-26
[mordor]
Mordor 내장 에디터 1.0 (아이템, 몹)
2
3190
0
0
보라메
2003-12-25
[mordor]
내장 에디터 입니다..
0
2847
0
0
보라메
2003-12-25
[mordor]
도배방지 소스
0
2924
0
0
보라메
2003-12-25
[mordor]
몹심기 소스
0
3004
0
0
머드사랑
2003-12-25
[mordor]
패거리등급조절
0
2738
0
0
머드사랑
2003-12-22
[mordor]
순위쏘스
0
2728
0
0
머드사랑
2003-12-18
이전
1
2
3
4
5
6
다음
검색
글쓰기
최신목록
전체목록
시작일
종료일
분류별 검색
전체보기
기타
circle
hanlp
mordor
소스분석
흑염
천무혼
검색어
이름
제목
내용
검색
닫기
로그인
회원가입
계정찾기
개인정보처리방침
이용약관
PC화면
Copyright (c) 텍스트머드클럽. All rights reserved.
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
닉네임으로 입력
내용
쪽지가 도착하였습니다.
쪽지함
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--