Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A Shogi library by pure Ruby. CSA形式で、将棋盤オブジェクトを作成、操作、表示できます。
branch: master
Failed to load latest commit information.
lib Bump version to 0.0.8
test
.gitignore
.travis.yml
Gemfile Initial commit
LICENSE.txt
NEWS.ja.md
NEWS.md Add 0.0.7 release entry
README.md
Rakefile Add rake default task of test
shogi-ruby.gemspec Don't specify a version

README.md

Shogi Library by Pure Ruby Build Status

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.0.0 or later. (and 1.9.3)

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

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request
Something went wrong with that request. Please try again.