summaryrefslogtreecommitdiffstats
path: root/lldb/third_party/Python/module/pexpect-2.4/examples/chess2.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/third_party/Python/module/pexpect-2.4/examples/chess2.py')
-rw-r--r--lldb/third_party/Python/module/pexpect-2.4/examples/chess2.py208
1 files changed, 106 insertions, 102 deletions
diff --git a/lldb/third_party/Python/module/pexpect-2.4/examples/chess2.py b/lldb/third_party/Python/module/pexpect-2.4/examples/chess2.py
index c62d5ce37a0..c75b6d8493f 100644
--- a/lldb/third_party/Python/module/pexpect-2.4/examples/chess2.py
+++ b/lldb/third_party/Python/module/pexpect-2.4/examples/chess2.py
@@ -7,125 +7,129 @@ It starts two instances of gnuchess and then pits them against each other.
import pexpect
import string
import ANSI
-import sys, os, time
+import sys
+import os
+import time
+
class Chess:
- def __init__(self, engine = "/usr/local/bin/gnuchess -a -h 1"):
- self.child = pexpect.spawn (engine)
- self.term = ANSI.ANSI ()
-
- #self.child.expect ('Chess')
- #if self.child.after != 'Chess':
- # raise IOError, 'incompatible chess program'
- #self.term.process_list (self.child.before)
- #self.term.process_list (self.child.after)
-
- self.last_computer_move = ''
-
- def read_until_cursor (self, r,c, e=0):
- '''Eventually something like this should move into the screen class or
- a subclass. Maybe a combination of pexpect and screen...
- '''
- fout = open ('log','a')
- while self.term.cur_r != r or self.term.cur_c != c:
- try:
- k = self.child.read(1, 10)
- except Exception, e:
- print 'EXCEPTION, (r,c):(%d,%d)\n' %(self.term.cur_r, self.term.cur_c)
- sys.stdout.flush()
- self.term.process (k)
- fout.write ('(r,c):(%d,%d)\n' %(self.term.cur_r, self.term.cur_c))
- fout.flush()
- if e:
- sys.stdout.write (k)
- sys.stdout.flush()
- if self.term.cur_r == r and self.term.cur_c == c:
- fout.close()
- return 1
- print 'DIDNT EVEN HIT.'
- fout.close()
- return 1
-
- def expect_region (self):
- '''This is another method that would be moved into the
- screen class.
- '''
- pass
- def do_scan (self):
- fout = open ('log','a')
- while 1:
- c = self.child.read(1,10)
- self.term.process (c)
- fout.write ('(r,c):(%d,%d)\n' %(self.term.cur_r, self.term.cur_c))
- fout.flush()
- sys.stdout.write (c)
+ def __init__(self, engine="/usr/local/bin/gnuchess -a -h 1"):
+ self.child = pexpect.spawn(engine)
+ self.term = ANSI.ANSI()
+
+ #self.child.expect ('Chess')
+ # if self.child.after != 'Chess':
+ # raise IOError, 'incompatible chess program'
+ #self.term.process_list (self.child.before)
+ #self.term.process_list (self.child.after)
+
+ self.last_computer_move = ''
+
+ def read_until_cursor(self, r, c, e=0):
+ '''Eventually something like this should move into the screen class or
+ a subclass. Maybe a combination of pexpect and screen...
+ '''
+ fout = open('log', 'a')
+ while self.term.cur_r != r or self.term.cur_c != c:
+ try:
+ k = self.child.read(1, 10)
+ except Exception as e:
+ print 'EXCEPTION, (r,c):(%d,%d)\n' % (self.term.cur_r, self.term.cur_c)
sys.stdout.flush()
-
- def do_move (self, move, e = 0):
- time.sleep(1)
- self.read_until_cursor (19,60, e)
- self.child.sendline (move)
-
- def wait (self, color):
- while 1:
- r = self.term.get_region (14,50,14,60)[0]
- r = r.strip()
- if r == color:
- return
- time.sleep (1)
-
- def parse_computer_move (self, s):
- i = s.find ('is: ')
- cm = s[i+3:i+9]
- return cm
- def get_computer_move (self, e = 0):
- time.sleep(1)
- self.read_until_cursor (19,60, e)
- time.sleep(1)
- r = self.term.get_region (17,50,17,62)[0]
- cm = self.parse_computer_move (r)
- return cm
-
- def switch (self):
- print 'switching'
- self.child.sendline ('switch')
-
- def set_depth (self, depth):
- self.child.sendline ('depth')
- self.child.expect ('depth=')
- self.child.sendline ('%d' % depth)
-
- def quit(self):
- self.child.sendline ('quit')
-
-def LOG (s):
+ self.term.process(k)
+ fout.write('(r,c):(%d,%d)\n' % (self.term.cur_r, self.term.cur_c))
+ fout.flush()
+ if e:
+ sys.stdout.write(k)
+ sys.stdout.flush()
+ if self.term.cur_r == r and self.term.cur_c == c:
+ fout.close()
+ return 1
+ print 'DIDNT EVEN HIT.'
+ fout.close()
+ return 1
+
+ def expect_region(self):
+ '''This is another method that would be moved into the
+ screen class.
+ '''
+ pass
+
+ def do_scan(self):
+ fout = open('log', 'a')
+ while True:
+ c = self.child.read(1, 10)
+ self.term.process(c)
+ fout.write('(r,c):(%d,%d)\n' % (self.term.cur_r, self.term.cur_c))
+ fout.flush()
+ sys.stdout.write(c)
+ sys.stdout.flush()
+
+ def do_move(self, move, e=0):
+ time.sleep(1)
+ self.read_until_cursor(19, 60, e)
+ self.child.sendline(move)
+
+ def wait(self, color):
+ while True:
+ r = self.term.get_region(14, 50, 14, 60)[0]
+ r = r.strip()
+ if r == color:
+ return
+ time.sleep(1)
+
+ def parse_computer_move(self, s):
+ i = s.find('is: ')
+ cm = s[i + 3:i + 9]
+ return cm
+
+ def get_computer_move(self, e=0):
+ time.sleep(1)
+ self.read_until_cursor(19, 60, e)
+ time.sleep(1)
+ r = self.term.get_region(17, 50, 17, 62)[0]
+ cm = self.parse_computer_move(r)
+ return cm
+
+ def switch(self):
+ print 'switching'
+ self.child.sendline('switch')
+
+ def set_depth(self, depth):
+ self.child.sendline('depth')
+ self.child.expect('depth=')
+ self.child.sendline('%d' % depth)
+
+ def quit(self):
+ self.child.sendline('quit')
+
+
+def LOG(s):
print s
- sys.stdout.flush ()
- fout = open ('moves.log', 'a')
- fout.write (s + '\n')
+ sys.stdout.flush()
+ fout = open('moves.log', 'a')
+ fout.write(s + '\n')
fout.close()
print 'Starting...'
black = Chess()
white = Chess()
-white.read_until_cursor (19,60,1)
+white.read_until_cursor(19, 60, 1)
white.switch()
done = 0
while not done:
- white.wait ('Black')
+ white.wait('Black')
move_white = white.get_computer_move(1)
- LOG ( 'move white:'+ move_white )
+ LOG('move white:' + move_white)
- black.do_move (move_white)
- black.wait ('White')
+ black.do_move(move_white)
+ black.wait('White')
move_black = black.get_computer_move()
- LOG ( 'move black:'+ move_black )
-
- white.do_move (move_black, 1)
-
-g.quit()
+ LOG('move black:' + move_black)
+ white.do_move(move_black, 1)
+g.quit()
OpenPOWER on IntegriCloud