Ñò VHc@sİddkTddkZdaetƒadZetadZda d„Z d„Z d„Z d „Z d „Zd „Zd „Zd „Zd„Zd„ZeƒdS(i˙˙˙˙(t*Nii–icCs~xwtdtƒD]f}ttd|tƒtt|tƒƒitƒtt|tdƒt|ttƒƒitƒqWdS(Nii(tranget BOARDSIZEtLinetPointtPPSt WINDOWSIZEtdrawtwin(ti((s TicTacToe3.pytdrawGrids0cCs%tt|tdt|tdƒS(scoordinates of center of squarei(RR(trowtcol((s TicTacToe3.pyt rectCenterscCstt|tt|tƒS(s'coordinates of top left of inset X or O(RRtINSET(R R ((s TicTacToe3.pyt rectUpperLeftscCs%tt|dtt|dtƒS(s+coordinates of bottom right of inset X or Oi(RRR(R R ((s TicTacToe3.pytrectLowerRightscCs!tt|dtt|tƒS(s(coordinates of top right of inset X or Oi(RRR(R R ((s TicTacToe3.pytrectUpperRight!scCs!tt|tt|dtƒS(s*coordinates of bottom left of inset X or Oi(RRR(R R ((s TicTacToe3.pyt rectLowerLeft%scCsTtt||ƒt||ƒƒitƒtt||ƒt||ƒƒitƒdS(sDraw an X in the given squareN(RRRRRRR(R R ((s TicTacToe3.pytdrawX+s(cCs+tt||ƒtdtƒitƒdS(sDraw an O in the given squareiN(tCircleR RRRR(R R ((s TicTacToe3.pytdrawO0scCsYxRtD]J}xAtD]9}||ddjot||ƒqt||ƒqWqWdS(s)Fill the board with alternating Xs and OsiiN(t BOARDRANGERR(R R ((s TicTacToe3.pyt fillBoard4scCsztdƒ}|djo&t|ƒattƒattantdttƒat ƒt ƒt i dƒti ƒdS(Ns&Enter board size (Press Enter for 3): tsTicTacToe version 3i(t raw_inputtevalRRRRRtGraphWinRR Rttimetsleeptclose(tuserSize((s TicTacToe3.pytmain=s     (t zellegraphicsRRRRRRRtNoneRR R RRRRRRRR (((s TicTacToe3.pyts$