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'
14 Game.new :size => Point.new(8, 8),
15 :policy => Policy.new(Move),
16 :state_component => State,
17 :state => lambda { state_component.new(board.new, move, piece) },
18 :board_component => Board,
19 :board => lambda { board_component.new(size) },
21 :animator => Animator,
22 :validator => Validator,
24 :players => [:white, :black],
25 :types => [:pawn, :knight, :bishop, :rook, :queen, :king],
26 :serializer => lambda {|rep|
27 Serializer.new(rep, validator, move, piece) },
28 :keywords => %w(chess),
30 :game_writer_component => PGN,
31 :game_writer => lambda {
32 game_writer_component.new(serializer.new(:compact),
34 :game_reader => lambda { game_writer.new },
35 :game_extensions => %w(pgn)
38 Game.add :chess5x5, [:chess] do |chess|
39 chess.extend(:size => Point.new(5, 5))