6fc@sddlZddlZddlZddlZdd dYZdZdZdZdZe dkrej endS( iNt LifeBoardcBsPeZdZeddZdZdZdZedZ dZ RS(sEncapsulates a Life board Attributes: X,Y : horizontal and vertical size of the board state : dictionary mapping (x,y) to 0 or 1 Methods: display(update_board) -- If update_board is true, compute the next generation. Then display the state of the board and refresh the screen. erase() -- clear the entire board makeRandom() -- fill the board randomly set(y,x) -- set the given cell to Live; doesn't refresh the screen toggle(y,x) -- change the given cell from live to dead, or vice versa, and refresh the screen display t*cCs i|_||_|jj\}}|d|dd|_|_||_|jjd|jdd}|jjdd||jj|jdd|xUtd|jD]A}|jjd|dd|jjd||jddqW|jj dS(sCreate a new LifeBoard instance. scr -- curses screen object to use for display char -- character used to render live cells (default: '*') iit+t-it|N( tstatetscrtgetmaxyxtXtYtchartcleartaddstrtrangetrefresh(tselfRR R Rt border_linety((s(/usr/lib64/python2.7/Demo/curses/life.pyt__init__)s    %cCsc|dks6|j|ks6|dks6|j|krLtd||fnd|j||ftboardtxpostypostc((s(/usr/lib64/python2.7/Demo/curses/life.pytkeyloopsd                       "  " cCst|dS(N(RM(R4((s(/usr/lib64/python2.7/Demo/curses/life.pytmainst__main__(( R+tstringt tracebackRBRR6R7RMRNR-twrapper(((s(/usr/lib64/python2.7/Demo/curses/life.pyts$ n   ?