
    Mgr                         S SK J r   SrSrSr\" \5       V s/ s H	  n S /\-  PM     sn rSrSrSrS r	S	 r
S
 rS rS rS rS rS rS rS r\ " S5      S 5       r\S:X  a  \" 5         ggs  sn f )    )plugin         z[93mz[91mz[0mc                      [        [        5       H.  n [        [        5       H  n[        S5      [        U    U'   M     M0     g )N )range
numberRowsnumberColumnsstr	GameBoard)ijs     B/Users/admin/workspace/ai/Jarvis/jarviscli/plugins/connect_four.pyrestartBoardr      s1    :}%A!#hIaLO &     c                 &    [        SU 5      S:X  a  gg)Nr   r   TF)
whatsAtPos)cs    r   checkIfFreer      s    !Q3r   c           	          [        [        5       Hf  n[        X5      S:w  d  M  Un[        X [        X 5      5      (       d4  [	        X [        X 5      5      (       d  [        X [        X 5      5      (       a    g  g   g)Nr   TF)r	   r
   r   checkHorizWincheckVertWincheckDiagWin)r   r   rows      r   checkForWinr      sh    :as"CSZ%788LQ[\_Qc<d<d#CJs,>??  r   c                     [         S-
  nSnSn[        X#U5       H)  n[        XQ5      S:X  d  M  [        U 5      [        U   U'     g    g )N   r   )r
   r	   r   r   r   )pr   
startIndex	stopIndexstepr   s         r   
placeTokenr$   )   sG    aJID:$/as"!!fIaLO 0r   c                    U nUnSnU[         :  a)  [        X45      U:X  a  US-  nOU nOUS-  nU[         :  a  M)  SnUnUS:  a*  US:X  a  O#US-  n[        X45      U:X  a  US-  nOOUS:  a  M*  Xe-   [        :  a  [        SUS5        gg)Nr   r   Congrats, player z you win horizontally!
TF)r   r   numToWinprint)rr   r    r   colrightCounterleftCounters          r   r   r   5   s    
C
C L

c1$ALCq 
 K
C
(!8qc1$1K ( !X-!1&@Ar   c                     SnSnU [         [        -
  :  a  g[        U [         S5       H6  n[        XQ5      U:X  a  US-  nOSnU[        :X  d  M&  Sn[	        SUS5          U$    U$ )NFr   r   Tr&   z, you win vertically!
)r
   r'   r	   r   r(   )r)   r   r    winCheckcounterr   s         r   r   r   Y   st    HG:  1j!$aq qLGGhH%q*CDO % Or   c                    U nUnSnUS:  aX  U[         ::  aN  [        X45      U:X  a  US-  nOU nUnO4U[         S-
  :X  d  US:X  a  U nUnOUS-  nUS-  nUS:  a  U[         ::  a  MN  SnU[        S-
  :  a?  US:  a9  US-  nUS-  n[        X45      U:X  a  US-  nOU nUnOU[        S-
  :  a  US:  a  M9  XV-   [        :  a  [	        S5        gSnUS:  aI  US:  aC  [        X45      U:X  a  US-  nOU nUnO)US:X  d  US:X  a  U nUnOUS-  nUS-  nUS:  a  US:  a  MC  SnU[        S-
  :  aI  U[         S-
  :  a<  US-  nUS-  n[        X45      U:X  a  US-  nOOU[        S-
  :  a  U[         S-
  :  a  M<  X-   [        :  a  [	        SUS5        gg)Nr   r   zCongrats! You won diagonally!Tr&   z you win diagonally!
F)r   r   r
   r'   r(   )	r)   r   r    r   r*   upRightdownLeftupLeft	downRights	            r   r   r   m   s   
C
CG
(sm+c1$qLGCC-!##saxCCqq (sm+  H

Q
37qqc1$MHCC 
Q
37 X%-.F
(saxc1$aKFCC!8saxCCqq (sax I

Q
3):#:qqc1$NI 
Q
3):#: X%!1&>?r   c                     [         U    U   S:X  a  [         S[         3$ [         U    U   S:X  a  [         S[         3$ [         U    U   S:X  a  g[	        [         U    U   5      $ )NXOr   )r   REDRESETYELLOWr   )r)   r   s     r   r   r      sj    |A#aw	1aC	5'""	1aC	9Q<?##r   c                  r    Sn [        U [        S5       H  n[        U5      (       d  M    g   [        S5        g)Nr   r   FzTie game! Thanks for playing!
T)r	   r   r   r(   )r!   r   s     r   checkTier<      s4    J:}a0q>> 1 

+,r   c            	      F   Sn Sn[        U[        S5       H  nU S-  n U [        US-   5      -   n M     U S-  n U S-  n SnSn[        U[        S5       HA  n[        U[        S5       H  nU S-  n U [        [	        X$5      5      -   n M!     U S-  n U S-  n MC     [        U 5        g )N r   r   |
)r	   r   r   r
   r   r(   )ssr!   r   startIndex_jr   s        r   
printBoardrC      s    	BJ :}a0
c	#a!e*_ 1 #IB$JB JL:z1-|]A6A#IBc*Q*++B 7 	c	
d
 . 
"Ir   connect_fourc                    [        S5        [        S5        [        S5        SnSnUS:X  Ga  [        5         [        5          SnUS:X  a   [        [	        S5      5      nSnUS:X  a  M  WS
-  nUS:  d
  U[        :  aB  [        S5        [        5         [        [	        S5      5      nUS
-  nUS:  a  M6  U[        :  a  MB  [        U5      (       d@  [        S5        [        5         [        [	        S5      5      nUS
-  n[        U5      (       d  M@  US-  S:X  a  [        SU5        O[        SU5        [        5         [        U5      (       a  O[        5       (       a  OUS
-  nGM#  [	        S5      nUR                  5       nUR                  5       nUS:w  a?  US:w  a9  [	        S5      nUR                  5       nUR                  5       nUS:w  a  US:w  a  M9  US:X  a  GM  [        S5        g ! [
         a    [        S	5         GNf = f)Nz4Welcome to Connect Four! This is a two player game.
z?Enter numbers to place your token in the corresponding column!
z6Match four of your tokens in a row to win. Good Luck!
r   yTzPick a column (1-7):
FzEnter a valid numeric input.r   z#Out of bounds. Pick another column.zColumn is full. Pick another.
   r6   r7   z%Would you like the play again? (Y/N)
nzPlease enter Y or N
zThanks for playing!
)r(   r   rC   intinput
ValueErrorr   r   r$   r   r<   striplower)jarvissplayerTrackerplayAgainFlagnotNumericInputFlagcolumns         r   gamerT      s    

AB	
LM	
CDMM
3
 #'%-: '?!@AF*/' &- aKF 1* 6;<U#;<=!	 1* 6 "&))78U#;<=!	 "&)) q A%3'3' L 6"" zz QMY \ FG%++-%++-s"}';!"9:M)//1M)//1M s"}';k 3
t 

!"] " :89:s   G* *HH__main__N)r   r
   r   r'   r	   r   r:   r8   r9   r   r   r   r$   r   r   r   r   r<   rC   rT   __name__)r   s   0r   <module>rW      s     
*/
*;<*;QaS= *;<		'	!H(>D$0 C# C#L zF  =s   A+