2012-03-04 6 views
4

私は基本的なチェスエンジンを作っていました。私はhttp://web.archive.org/web/20070704121716/http://www.brucemo.com/compchess/programming/alphabeta.htmから多くのアドバイスを得ることができましたが、実際のサイトはダウンしていて、すべてのページがアーカイブされているわけではありません。 (誰でもBruceのサイトのフルバージョンを見つける場所はどこですか?)XBoardとのやり取り(Chess Engine)(C++/C)

しかし、今実際の質問に:私はXBoardとどのように通信しますか?私はそれがstdinとstdout経由であることを理解していますが、私はコードで問題を抱えています。基本的には、始めるために、私はちょうど与えるあるXBoardにハードコードされた入力の動きをあるXBoardからの入力を受信し、コンソール/画面

  • にそれを印刷

    1. にしたいし、それが行動を起こす必要があり
    2. プログラムユーティリティ機能を持ち、ランダムなチェスを選択するランダムチェスを持っています。

    その後、アルファベット検索のような本物の実装を開始できます。

    私は最初の2つのことに直面しています。ここに私が書いた/借りたいくつかのコードがあります。

    #include <iostream> 
    #include <string.h> 
    #include <stdio.h> 
    #include <stdlib.h> 
    #define STR_BUFF 256 
    
    using namespace std; 
    
    int main (int argc, const char * argv[]) 
    { 
        char input[STR_BUFF]; 
        char output[STR_BUFF]; 
        while(true){ 
         fflush(stdout); 
         // read input 
         if (!fgets(input, STR_BUFF, stdin)){ 
          printf("terminated"); 
          return 0;; 
         } 
    
         printf("%s", input); 
        } 
        return 0; 
    } 
    

    私はちょうど約6ヶ月の休憩後戻ってCに取得しています、これは私が別のプログラム(マイナスいくつかの基本的なプログラム)と通信するための標準入力/標準出力パイプラインを使用していた最初のプロジェクトですので、私はいずれかをいただければ幸いですヘルプと説明。私はチェスエンジンをプログラミングすることは難題だと知っていますが、私はすでにチェスのルールをプログラムしています。ブルースのサイトが見つかるのはまったく驚くべきことです。

  • +0

    ブルース・モアランドのサイトの代わりにhttp://chessprogramming.wikispaces.com/を見ることをお勧めしますか? –

    答えて

    3

    これはほぼ正しいことです:fgetsでXBoardからコマンドを受け取り、printffflushで移動を報告します。 (ただし、「コンソール/画面にコマンドを出力する必要はありませんが、コンソール/画面とは通信していないので、XBoardからコマンドを読み込み、XBoardに戻って移動するだけです」)。

    おそらく、既存のコードで始めるほうが簡単でしょう。 GNU Chessのソースを読んでみてください。または、XBoardプロトコルをサポートするother chess engineのソースをダウンロードしてください。

    そして、チェスエンジンプログラミングに関する多くの情報を持つ他の質問があります: "What are some good resources for writing a chess engine?"

    +0

    本当に素晴らしい答えです! –

    関連する問題