6 def initialize(game_name, name, sente)
8 @name = "%s_%s" % [game_name, name]
9 @turn_mark = sente ? "+" : "-"
16 @socket = TCPSocket.open("localhost", port)
25 if r = select([@socket], nil, nil, 10)
27 if %r!^[\+\-]\d{4}\w{2},T\d+$! =~ str
40 break if reg =~ @message
53 @socket.puts "LOGIN #{@name} dummy x1"
58 @socket.puts "%%GAME #{@game_name}-1500-0 #{@turn_mark}"
80 def initialize(game_name, csa)
81 @game_name = game_name
83 @p1 = BenchPlayer.new(@game_name, "bp1", true)
84 @p2 = BenchPlayer.new(@game_name, "bp2", false)
88 [@p1, @p2].each {|player| yield player}
92 each_player {|player| player.connect}
93 each_player {|player| player.login}
94 each_player {|player| player.game}
95 each_player {|player| player.wait %r!^END Game_Summary!}
96 each_player {|player| player.agree}
97 each_player {|player| player.wait %r!^START:!}
100 @csa.each_line do |line|
103 @p1.wait_nmoves nmoves
108 @p2.wait_nmoves nmoves
113 turn ? @p1.toryo : @p2.toryo
116 each_player {|player| player.logout}
122 filepath = ARGV.shift || File.join(File.dirname(__FILE__), "csa", "wdoor+floodgate-900-0+gps_normal+gps_l+20100507120007.csa")
123 csa = File.open(filepath){|f| f.read}
125 nclients = ARGV.shift || 1
126 nclients = nclients.to_i
128 nclients.times do |i|
129 threads << Thread.new do
130 game = BenchGame.new("b#{i}", csa)
134 threads.each {|t| t.join}