2

学校のプロジェクトとして、学習チェスのアプリケーションを作成してみたいと思います。私の最初の計画は、このAIをそれ自体と単純に対比させることでしたが、それが成功したかどうかを実際に示すには、それがどれだけうまく進んでいるかを示すことができる必要があります。これを行うために、私はそれがchess.comなどのサイトで評価されたゲームをプレイすることを望みます。ただし、(まだ)パブリックAPIはありません。

そのため、色や画像を認識するJavaのプログラムを作りたかったのです。すべての位置の内部2次元配列を保持し、ボード上のピースを認識します。JavaRobotClassのようなものを使用してウィンドウでこれを行う方法を見つけたと思います。

しかし、私がやりたいのは、このWebページを内部ウィンドウで開き、バックグラウンドでこれを継続することです。フォアグラウンドにいる必要なしに、自分のウィンドウ内の色を認識する方法はありますか?

編集:私はちょうど見つけたこのブラウザコンポーネントを使用することを計画しています。ページのフルページスナップショットを作成して、BufferedImage(?)として保存できることに気づきました。これにより、これを簡単に行うことができますか?

編集2:「他の人、コンピューター/チェスエンジン、または終盤テーブルベースからの外部支援は完全に禁止されています」と読みました。私は、コンピューターにすべての演奏をさせることは確かにそれに含まれていると思います。だから私は別のサイトを使ってみるかもしれないので、chess.comに固有の答えはそれをカットしません!

4

3 に答える 3

3

それが役立つかどうかはわかりませんが、Sikuliプロジェクトをご覧になることができるかもしれません。 http://sikuli.org/

Sikuliは、ユーザーインターフェイスとの対話を処理するためのプログラム(およびAPI)です。たとえば、特定の条件で画像またはボタンをクリックするスクリプトを作成できます。

特に興味深いのは、Java統合です:http ://sikuli.org/docx/faq/030-java-dev.html

これはあなたが書くことができるコードのアイデアをあなたに与えるためにウェブサイトの抜粋です。

編集:このコードでは、画像を使用して新しいパターンを定義していることに注意することが重要です。Sikuliは一致するパターンを見つけることができます。

import org.sikuli.script.*;

public class TestSikuli {

    public static void main(String[] args) {
            Screen s = new Screen();
            try{
                    s.click("imgs/spotlight.png", 0);
                    s.wait("imgs/spotlight-input.png");
                    s.type(null, "hello world\n", 0);
            }
            catch(FindFailed e){
                    e.printStackTrace();
            }
    }
}
于 2011-04-20T11:55:36.703 に答える
3

APIが利用可能で、チェスエンジンが許可されているチェスサーバーでのプレイを検討する必要があります。人間のアカウントを取得するには料金を支払う必要があるインターネットチェスクラブ(ICC)があり、エンジン用の無料のコンピューターアカウントを取得できます。あなたとあなたのエンジンが無料のアカウントを取得できる無料のインターネットチェスサーバー(FICS)もあります。

ICCは通常、プレーヤーのレベルが高く、多くの国際的なマスターやチェスマスターがそこでプレーしているために好まれます。

これらのサイトとインターフェイスするための最良の方法は、 xboardプロトコルを実装することです。これにより、エンジンがWinboardまたはXBoardインターフェイス(とりわけ)を介して再生できるようになり、これらのインターフェイスを使用してFICSまたはICCに接続し、そこで自動的に再生できます。

質問に直接答えなくても、この助けを願っています。

于 2011-04-21T12:10:49.967 に答える
2

入力内容がわかりませんが、2つのオプションがあります。

  1. PNG画像を処理できます。BufferedImage画像を(docs )オブジェクトにロードし、そこで調べます。スクリーンショットツールを使用してそれらを作成できます。

  2. chess.comはJavaScriptでHTMLを使用しているようです。HttpComponentsを使用してHTMLをダウンロードし、それを調べて、断片がどこにあるかを確認できます。これには、HTMLにソース情報が含まれているため、どの部分がどこに行くかを推測する必要がないという追加の利点があります。

于 2011-04-20T11:45:42.770 に答える