# L-31 MCS 275 Wed 31 Mar 2010 : taketurns.py # Two players taking turns. from threading import * import time import random class Player(Thread): """ Player waits turn and makes move. """ def __init__(self,t,v): """ Initializes player with name t, and stores the shared value v. """ Thread.__init__(self,name=t) print 'player ' + t + ' born' self.sv = v def run(self): """ Player checks value every 5 time units. If parity matches, value is decreased. The game is over if value == 0. """ p = self.getName() n = int(p) while True: while True: time.sleep(5) v = self.sv[0] print p + ' checks value %d ' % v if v <= 0 or v % 2 == n: break if v <= 0: break # game over r = random.randint(1,10) s = p + ' thinks %d' % r print s + ' time units' time.sleep(r) v = self.sv.pop(0) - 1 print p + ' changes value to %d ' % v self.sv.append(v) def main(): """ Defines two players '0' and '1' and starts the game. """ shared = [] p1 = Player('0',shared) p2 = Player('1',shared) print 'starting the game' shared.append(3) p1.start() p2.start() print 'game has started' if __name__ == "__main__": main()