Ruby用の将棋ライブラリです。
特徴
- Rubyのみで記述されています。
- デバッグが楽です。
- インストールが楽です。
- CSA形式に対応しています。
- コンピュータ将棋協会が推奨する標準形式です。
用途
向いていること
- 将棋盤の簡単なコンソール表示
- GUIアプリケーションの内部状態の管理
向いていないこと
- 速度的に、思考エンジンのデータ構造には向きません。
機能
できること
- CSA形式で、将棋盤オブジェクトを作成、操作、表示
- 駒の動きが正しいかどうかのチェック
- 棋譜の管理
まだできないこと
- 行きどころのない駒のチェック
- 詰みチェック
- 手番チェック
- USI形式との相互変換(盤面の出力のみ対応)
Installation
Add this line to your application's Gemfile:
gem 'shogi-ruby'
And then execute:
$ bundle
Or install it yourself as:
$ gem install shogi-ruby
Ruby Version
Ruby 2.1 or later.
Usage
Introduction
-
使う準備
require 'shogi'
-
対局を管理するクラス
Shogi::Game
-
盤面を管理するクラス
Shogi::Board
-
局面の情報をCSA形式で取得するメソッド
Shogi::Game#to_csa Shogi::Board#to_csa
-
駒を動かすメソッド
Shogi::Game#move Shogi::Board#move
Tutorial
require 'shogi'
board = Shogi::Board.new
puts board.to_csa
#=> P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI * * * * * -KA *
P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
P4 * * * * * * * * *
P5 * * * * * * * * *
P6 * * * * * * * * *
P7+FU+FU+FU+FU+FU+FU+FU+FU+FU
P8 * +KA * * * * * +HI *
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
P+
P-
board.move("+7776FU", :csa)
puts board.to_csa
#=> P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI * * * * * -KA *
P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
P4 * * * * * * * * *
P5 * * * * * * * * *
P6 * * +FU * * * * * *
P7+FU+FU * +FU+FU+FU+FU+FU+FU
P8 * +KA * * * * * +HI *
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
P+
P-
game = Shogi::Game.new
puts game.to_csa
#=> P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI * * * * * -KA *
P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
P4 * * * * * * * * *
P5 * * * * * * * * *
P6 * * * * * * * * *
P7+FU+FU+FU+FU+FU+FU+FU+FU+FU
P8 * +KA * * * * * +HI *
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
P+
P-
+
game.move("+7776FU", :csa)
puts game.to_csa
#=> P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI * * * * * -KA *
P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
P4 * * * * * * * * *
P5 * * * * * * * * *
P6 * * +FU * * * * * *
P7+FU+FU * +FU+FU+FU+FU+FU+FU
P8 * +KA * * * * * +HI *
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
P+
P-
-
game.move("-3334FU", :csa)
game.move("+8822UM", :csa)
puts game.to_csa
#=> P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI * * * * * +UM *
P3-FU-FU-FU-FU-FU-FU * -FU-FU
P4 * * * * * * -FU * *
P5 * * * * * * * * *
P6 * * +FU * * * * * *
P7+FU+FU * +FU+FU+FU+FU+FU+FU
P8 * * * * * * * +HI *
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
P+00KA
P-
-
game.default_format = :csa
game.move("-3122GI")
game.move("+0055KA")
game.show
#=> P1-KY-KE-GI-KI-OU-KI * -KE-KY
P2 * -HI * * * * * -GI *
P3-FU-FU-FU-FU-FU-FU * -FU-FU
P4 * * * * * * -FU * *
P5 * * * * +KA * * * *
P6 * * +FU * * * * * *
P7+FU+FU * +FU+FU+FU+FU+FU+FU
P8 * * * * * * * +HI *
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
P+
P-00KA
-
puts game.kifu
#=> +7776FU
-3334FU
+8822UM
-3122GI
+0055KA
puts game.at(3).kifu
#=> +7776FU
-3334FU
+8822UM
game.at(3).show
#=> P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI * * * * * +UM *
P3-FU-FU-FU-FU-FU-FU * -FU-FU
P4 * * * * * * -FU * *
P5 * * * * * * * * *
P6 * * +FU * * * * * *
P7+FU+FU * +FU+FU+FU+FU+FU+FU
P8 * * * * * * * +HI *
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
P+00KA
P-
-
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request