Soru:
PGN ayrıştırıcı için Java Kitaplığı
Chale CS
2015-10-02 01:10:50 UTC
view on stackexchange narkive permalink

Birkaç satranç oyunu içerebilecek, muhtemelen yorumların da eklenmiş olduğu bir PGN dosyasını okumama izin verecek bir Java kitaplığı bulmak istiyorum. Ancak, hamle oluşturmak veya bir tahtadaki hamleleri oynamak için kullanılmaz. Sadece pgn'yi okumak ve başlık bölümünü ve bölümü taşımak istiyorum ve her şeyi bir veritabanına dökmek istiyorum.

Beni doğru yola yönlendirecek her ışık gerçekten takdir ediliyor. Sadece ayrıştırıcıya ihtiyacım var ve bilgiyi pgn'den bölümlere ayırıyorum ve ardından veritabanına dökümü yapacağım.

Her türlü yardım için şimdiden teşekkürler.

üç yanıtlar:
Chale CS
2015-10-12 19:02:46 UTC
view on stackexchange narkive permalink

Bir grup açık kaynak kodunu okuduktan sonra, çoğunun, hareket doğrulamasını, PGN ayrıştırıcısını (daha önce kullandığım) sağlam bir Java Satranç kütüphanesi olan Chesspresso 'ya güvendiğini öğrendim. arıyor), satranç tahtası oluşturma vb.

Kod iyi belgelenmiş ve anlaşılması kolaydır. Kodu okuyup test etmeye başlamam yaklaşık 30 dakikamı aldı. Bu kitaplıktan oldukça memnunum.

Kaynak kodunu sourceforge'dan indirebilirsiniz: Chesspresso Kaynak Kodu

Örnek kod: ( Bu, Game sınıfından bir parça, başlık bölümü için daha fazla ayrıntı eklemem gerekiyor ve her bir pgn oyununu veritabanıma dökmeye hazır olacağım).

  public String getHeaderString (int line ) {if (line == 0) {StringBuffer sb = new StringBuffer (); sb.append (getWhite ()); eğer (getWhiteElo ()! = 0) sb.append ("[") .append (getWhiteElo ()). append ("]"); sb.append ("-") .append (getBlack ()); eğer (getBlackElo ()! = 0) sb.append ("[") .append (getBlackElo ()). append ("]"); sb.append ("") .append (getResultStr ()). append ("(") .append (getNumOfMoves ()). append (")"); return sb.toString (); } else if (line == 1) {StringBuffer sb = new StringBuffer (); sb.append (getEvent ()). append (",") .append (getSite ()). append (",") .append (getDate ()); sb.append ("[") .append (getRound ()). append ("]"); return sb.toString (); } else if (line == 2) {return getECO (); } else {throw new RuntimeException ("Yalnızca 3 başlık satırı desteklenir"); }}  
Ben-Hur Langoni Junior
2018-06-16 17:29:34 UTC
view on stackexchange narkive permalink

chesslib 'i kullanabilirsiniz.

README dosyasında, tüm hareketlerden tüm hareketlerin nasıl yükleneceğine ve PGN dosyasındaki oyunlar:

  PgnHolder pgn = new PgnHolder ("/ opt / games / linares_2002.pgn"); pgn.loadPgn (); için (Oyun oyunu: pgn.getGame ()) {game.loadMoveText (); MoveList hamle = game.getHalfMoves (); Pano = yeni Pano (); // Oyundaki tüm hamleleri tekrar oynatın ve son konumu FEN formatında yazdırın (Hareket et: hamle) {board.doMove (hareket et); } System.out.println ("FEN:" + board.getFen ()); }  
Peter M
2015-10-07 17:07:45 UTC
view on stackexchange narkive permalink

Genel bir ipucu olarak: Açık Kaynak Android satranç oyunlarına bakın. DroidFish gibi ( https://github.com/peterosterlund2/droidfish) Belki orada aradığınızı bulabilir veya en azından bir başlangıç ​​noktası olarak kullanabilirsiniz.



Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...