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.


Reply via email to