컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, August 02, 2006

Crafty : 공개 체스 엔진 / 텍스트 모드 체스 게임 / Chess 엔진 C소스


Crafty (크래프티) 라는 유명한 오픈소스 체스 엔진이 있습니다. 아주 강력한 것입니다. 윈도의 명령 프롬프트 에서, 키보드로 기물(Pieces)들의 좌표를 입력하여 직접 게임을 할 수도 있습니다.

그리고 WinBoard 같은 프로그램을 이용하면, 그래픽 모드로도 즐길 수 있습니다. 윈보드에서 크래프티를 체스 엔진으로서 사용하는 방법은
http://www.tim-mann.org/crafty.html
여기에 있습니다.


이것은 윈도의 명령 프롬프트 즉 도스창에서 크래프티를 실행시킨 화면입니다.
D:\X>crafty-20.14.exe

Initializing multiple threads.
System is SMP, not NUMA.
EPD Kit revision date: 1996.04.21
unable to open book file [./book.bin].
book is disabled
unable to open book file [./books.bin].
book file disabled.
pondering disabled.
search time set to 1.00.
hash table memory =   48K bytes.
pawn hash table memory =   16K bytes.
search depth set to 2.
one-reply extension..................0.75
in-check extension...................0.00
mate thrt extension..................0.75
one-reply extension..................0.75
in-check extension...................0.00
mate thrt extension..................0.75
one-reply extension..................0.75
in-check extension...................0.00
mate thrt extension..................0.75


Crafty v20.14 (1 cpus)

White(1): nf3
              time used:   2.46
              time surplus   0.00  time limit 1.00 (+0.00) (1.00)
              depth   time  score   variation (1)
              time=0.00  mat=0  n=137  fh=100%  nps=1.0M
              ext-> check=0 1rep=0 mate=0 reductions=0/0
              predicted=0  evals=73  50move=1  EGTBprobes=0  hits=0
              hashing-> 0%(raw) 0%(draftOK)  0%(saturation)
              hashing-> 0%(exact)  0%(lower)  0%(upper)
              SMP->  splits=0  aborts=0  data=0/256  elap=0.00

Black(1): d5
              time used:   0.01
White(2): d

       +---+---+---+---+---+---+---+---+
    8  |<R>|<N>|<B>|<Q>|<K>|<B>|<N>|<R>|
       +---+---+---+---+---+---+---+---+
    7  |<P>|<P>|<P>|   |<P>|<P>|<P>|<P>|
       +---+---+---+---+---+---+---+---+
    6  |   | . |   | . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    5  | . |   | . |<P>| . |   | . |   |
       +---+---+---+---+---+---+---+---+
    4  |   | . |   | . |   | . |   | . |
       +---+---+---+---+---+---+---+---+
    3  | . |   | . |   | . |-N-| . |   |
       +---+---+---+---+---+---+---+---+
    2  |-P-|-P-|-P-|-P-|-P-|-P-|-P-|-P-|
       +---+---+---+---+---+---+---+---+
    1  |-R-|-N-|-B-|-Q-|-K-|-B-| . |-R-|
       +---+---+---+---+---+---+---+---+
         a   b   c   d   e   f   g   h

White(2):


백을 쥔 제가 nf3나이트(Knight)를 전진시키니, 흑을 쥔 크래프티가 d5폰(Pawn)을 움직였습니다. Reti opening 이군요.

키보드의 d 키를 누르고 Enter키를 치면, 현재 체스판의 기물 배치 상태를 위와 같이 보여줍니다.




체스 엔진의 성능을 약하게


국내에 Crafty를 이길 수 있는 체스 고수는 별로 없을 것 같습니다. 크래프티를 약하게 만드는 방법이 있습니다.

alarm off
log off
learn 0

book off
ponder off
st 1
hash 64K
hashp 16K

sd 2
extension check 0
extension recapture 0
extension 1reply 0

exit





위의 박스에 있는 내용을 crafty.rc 라는 이름의 텍스트 파일로 저장한 후, 크래프트 실행 파일이 있는 디렉토리(폴더)에 같이 넣어 줍니다. ($HOME 디렉토리에 넣으면 인식을 못하더군요.)

(crafty.rc 파일의 맨 마지막에는 exit 이라는 명령이 있어야 합니다. 그리고 exit 다음에는 반드시 빈 줄이 있어야 합니다. 그렇지 않으면 크래프티에 에러가 납니다.)

아무튼 이러면 체스 엔진 성능이 아주 약해집니다. 그리고 크래프티는 자기 차례가 끝났을 때 삑 하는 비프음(Beep)을 내는데, alarm off 명령으로 소리를 없앴습니다.



Crafty 윈도용 실행파일 다운로드 주소:


ftp://ftp.cis.uab.edu/pub/hyatt/executables/
여기에 보면, 현재 최신 버전인 crafty-20.14.exe 가 있습니다. 설치 파일이 아니고, 이것이 실행 파일입니다. 즉, Crafty 는, 파일 1개로 되어 있습니다. 16비트 도스 프로그램이 아니고, 32비트 콘솔 프로그램이기에, MS-DOS 6.0 등에서는 실행되지 않습니다.


C소스 다운로드


ftp://ftp.cis.uab.edu/pub/hyatt/source/
이 주소에 crafty-20.14.zip 이라는 파일이 있는데, ANSI C 로 되어 있습니다. (C++가 아니고 그냥 C입니다.)



크래프티에 대한 보다 자세한 정보는 http://www.limunltd.com/crafty/

Crafty Command Documentation
에 있습니다.




추가 사항: 크래프티를 종료하는 키는 q 입니다.


▶▶ 무료 바둑 프로그램 gnugo (GNU Go); 텍스트 모드 IGO [리눅스]

☞ 체스

2 Comments:
At February 19, 2007 at 1:12 AM, Anonymous Anonymous said...

학교에서 배운 C로 소스 분석해보려고 했더니;;휴..아직도 부족하구나..;;

 
At February 19, 2007 at 8:51 AM, Blogger mwultong said...

C언어뿐만 아니라, 체스 엔진 알고리즘까지 알아야 하기 때문에, 어렵더군요.

^_^)

 

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top