7 def initialize(game_name, name, sente)
9 @name = "%s_%s" % [game_name, name]
10 @turn_mark = sente ? "+" : "-"
17 @socket = TCPSocket.open("localhost", port)
26 if r = select([@socket], nil, nil, 10)
28 if %r!^[\+\-]\d{4}\w{2},T\d+$! =~ str
41 break if reg =~ @message
54 @socket.puts "LOGIN #{@name} dummy x1"
59 @socket.puts "%%GAME #{@game_name}-1500-0 #{@turn_mark}"
83 def initialize(game_name, csa)
84 @game_name = game_name
86 @@mutex.synchronize do
87 @p1 = BenchPlayer.new(@game_name, "bp#{@@count+=1}", true)
88 @p2 = BenchPlayer.new(@game_name, "bp#{@@count+=1}", false)
93 [@p1, @p2].each {|player| yield player}
97 each_player {|player| player.connect}
98 each_player {|player| player.login}
99 each_player {|player| player.game}
100 each_player {|player| player.wait %r!^END Game_Summary!}
101 each_player {|player| player.agree}
102 each_player {|player| player.wait %r!^START:!}
105 @csa.each_line do |line|
108 @p1.wait_nmoves nmoves
113 @p2.wait_nmoves nmoves
118 turn ? @p1.toryo : @p2.toryo
121 each_player {|player| player.logout}
127 filepath = ARGV.shift || File.join(File.dirname(__FILE__), "csa", "wdoor+floodgate-900-0+gps_normal+gps_l+20100507120007.csa")
128 csa = File.open(filepath){|f| f.read}
130 nclients = ARGV.shift || 1
131 nclients = nclients.to_i
133 nclients.times do |i|
134 threads << Thread.new do
135 game = BenchGame.new("b#{i}", csa)
139 threads.each {|t| t.join}