Iveは問題を抱えています。Chesspresso 0.9.2メソッドのPosition#doMove(短い移動)を使用すると、動きを追加できません。Chesspresso:Position#doMove()を呼び出すときの問題
package com.gmail.bernabe.laurent.j2se.chesspresso_test;
import javax.swing.JFrame;
import chesspresso.Chess;
import chesspresso.game.Game;
import chesspresso.game.view.GameBrowser;
import chesspresso.move.IllegalMoveException;
import chesspresso.move.Move;
public class ChessFrame extends JFrame {
public ChessFrame(){
setTitle("Chesspresso gamebrowser test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(gameBrowser);
pack();
addMove(Chess.E2, Chess.E4, false, "Debut pour une partie ouverte");
addMove(Chess.E7, Chess.E5, false, "Reponse symetrique forte");
addMove(Chess.G1, Chess.F3, false, null);
addMove(Chess.B8, Chess.C6, false, null);
addMove(Chess.F1, Chess.B5, false, null);
}
private void addMove(int fromSquareIndex, int toSquareIndex,
boolean isCapturingMove, String comment){
try {
short move = Move.getRegularMove(fromSquareIndex, toSquareIndex,
isCapturingMove);
if (Move.isValid(move)) {
chessGame.getPosition().doMove(move);
if (comment != null && comment.length() > 0)
chessGame.addComment(comment);
}
} catch (IllegalMoveException e) {
e.printStackTrace();
}
}
private Game chessGame = new Game();
private GameBrowser gameBrowser = new GameBrowser(chessGame);
private static final long serialVersionUID = -6856238414376776882L;
}
そしてここでは、私のメインクラスです:
方法ゲーム#doMoveは、()ここでIllegalMoveExceptionをスローする必要がありますけれども、不正な動きは、私の実験のクラスで、法律上の移動だけでなく、受け入れられているように見えます
package com.gmail.bernabe.laurent.j2se.chesspresso_test;
public class ChesspressoGraphicalTest {
public static void main(String[] args) {
ChessFrame chessFrame = new ChessFrame();
chessFrame.setVisible(true);
}
}
ご覧のとおり、私はJFrameカスタムクラスのChessPresso GameBrowserクラスから継承しました。これは、コード化したチェスのオープニング(Ruy Lopez)をナビゲートするためです。 addMoveメソッドは、Chesspressoのすべての呼び出しをラップして、移動とコメントを1行に追加します。
ChesspressoGraphicalTestクラスを起動すると、そのChesspressoGraphicalTestのデフォルトのChesspresso GameBrowser実装と動作であるボードを表示するフレームが表示されます。移動を読んだり、次の移動に移動したり、戻ることができます古い動きに...ボードの底にあるボタンのおかげで。
だから何が問題なのですか?それは非常に簡単です:(最初の移動の代わりに、例えば
addPawnMove(Chess.E2, Chess.F8, false, "Debut pour une partie ouverte");
)違法な動きを与えたときに、これは全く検出されていません。私はIllegalMoveExceptionを取得しませんでした。
さらに、テストMove.isValid(move)(addMove()メソッド内)を削除しても、すべての移動の有効なステータスは何でも変更されることはありません。
chesspressoの問題ですか、それとも簡単でないのですか?
助けてください。ありがとう。
* if(Move.isValid(move))*を削除するとエラーオーブンが表示されませんか? –
はい、それは私が直面している問題です。私は動きが違法であるかどうかを知るために今のところ何もしていません。Move.isValid()のテストを削除しました。また、私は最初の動きをE2-E8に変更しましたが、何も変わりませんでした。私の質問をあなたの通知で更新しました。 – loloof64