2 require 'games/chess/state'
3 require 'games/chess/move'
4 require 'games/chess/board'
5 require 'games/chess/policy'
6 require 'games/chess/animator'
7 require 'games/chess/validator'
8 require 'games/chess/serializer'
9 require 'games/chess/pgn'
10 require 'plugins/plugin'
17 plugin :name => 'Chess',
20 :keywords => %w(chess)
22 attr_reader :size, :policy, :state, :board, :move,
23 :animator, :validator, :piece, :players,
24 :types, :serializer, :game_writer,
28 @size = Point.new(8, 8)
29 @policy = Policy.new(Move)
30 @state_component = State
31 @state = Factory.new(State) { State.new(board.new, move, piece) }
32 @board = Factory.new(Board) { Board.new(size) }
35 @validator = Validator
37 @players = [:white, :black]
38 @types = [:pawn, :knight,:bishop, :rook, :queen, :king]
39 @serializer = Factory.new(Serializer) {|rep|
40 Serializer.new(rep, validator, move, piece) }
43 @game_writer = PGN.new(serializer.new(:compact), state)
44 @game_extensions = %w(pgn)
56 class Game < Chess::Game
57 plugin :name => 'Chess 5x5',
60 :keywords => %w(chess)
64 @size = Point.new(5, 5)