On Fri, Mar 15, 2013 at 11:34 PM, Andrew Wagner <[email protected]> wrote: > All, > I'm writing a chess program that has a simple text-based interface. It's > designed to be run by another program, which has a nice UI. Here's the > program as it stands now, whittled to the simplest possible use case: > > i = 0 > moves = ["a7a6","a6a5","a5a4","a4a3"] > $stdin.each do |command| > if command.start_with?("protover") > $stdout.puts "feature ping=0 setboard=1 ics=1 usermove=1" > elsif command.start_with?("usermove") > $stdout.puts "move #{moves[i]}" > i+=1 > end > $stdout.flush > end > > The "protover" thing is needed to tell the UI program how to initialize the > protocol, and then every time a move is made, the UI program sends "usermove > <some move>" to my program, which responds with "move <my move>". > > If I run this by itself, I can happily enter a few 'usermove' commands > manually, and get any number of canned moves back. However, when I run this > under the UI, I get an Interrupt: > > bin/winboard.rb:3:in `each': Interrupt > from bin/winboard.rb:3:in `<main>' > > I know that the UI program is pretty reliable, so I'm missing something in > the way that I'm handling IO buffering or something. If you want the nitty > gritty details, you can see them at > http://www.gnu.org/software/xboard/engine-intf.html . I'm running on MacOSX. > Any suggestions?
At top of script $stdout.sync = true Cheers robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/ -- [email protected] | https://groups.google.com/d/forum/ruby-talk-google?hl=en --- You received this message because you are subscribed to the Google Groups "ruby-talk-google" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
