diff options
Diffstat (limited to 'share/hackvr/examples/chess/gnuchess-to-hackvr.sh')
-rwxr-xr-x | share/hackvr/examples/chess/gnuchess-to-hackvr.sh | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/share/hackvr/examples/chess/gnuchess-to-hackvr.sh b/share/hackvr/examples/chess/gnuchess-to-hackvr.sh new file mode 100755 index 0000000..0b94a87 --- /dev/null +++ b/share/hackvr/examples/chess/gnuchess-to-hackvr.sh @@ -0,0 +1,31 @@ +#!/bin/sh +tee /dev/stderr | while read first second third;do + if [ "_$first" = "_feature" ];then + printf "# just gnuchess saying what features it has: %s %s %s\n" "$first" "$second" "$third" >&2 + elif printf "%s\n" "$first" | grep '^[0-9][0-9]*\.$' >/dev/null 2>&1;then + #we made a successful move. + ### how to tell hackvr to move the piece now? $second should contain what the move was. + printf "# Hey! Hackvr! do this move: %s\n" "$second" >&2 + if [ "_$second" = "_..." ];then #computer/other person made a move. + move=$third + else + move=$second + fi + from=$(printf "%s\n" "$move" | fold -w1 | head -n2 | tr -d '\n') + to=$(printf "%s\n" "$move" | fold -w1 | tail -n+3 | head -n2 | tr -d '\n') + x=$(echo "a b c d e f g h" | tr ' ' '\n' | grep -n "$(printf "%s\n" "$to" | fold -w1 | head -n1)" | cut -d: -f1) + y=$(printf "%s\n" "$to" | fold -w1 | tail -n1) + magic=$(printf "%s\n" "$move" | fold -w1 | tail -n+5 | tr -d '\n') +### if the board is on the wall we need to use x and y +# printf "piece_%s move %s %s 0\n" "$from" "$x" "$y" | tee /dev/stderr +### the board is on the floor atm. use x and z + printf "piece_%s move %s 0 %s\n" "$from" "$x" "$y" | tee /dev/stderr + + printf "#delete the old piece_%s group\n" + printf "epoch deletegroup piece_%s\n" "$to" + printf "epoch renamegroup piece_%s piece_%s\n" "$from" "$to" | tee /dev/stderr + else + #something else. + printf "oops. something else happened. let's see: %s %s %s\n" "$first" "$second" "$third" >&2 + fi +done |