
    Mga                        S SK r S SKrS SKrS SKrS SKJrJrJr  S SKrS SKrS SK	J
r
  \R                  R                  \R                  R                  \5      5      r " S S\5      r\
R$                  r\
R(                  r\
R,                  rSrSr0 r " S S	5      r " S
 S5      r\" 5       r " S S5      rS rS r S r!S r"S r#S r$S r%S r&\" S\S9\" S5      S 5       5       r'g)    N)pluginrequireUNIX)Forec                       \ rS rSrSrSrSrg)	GameState          N)__name__
__module____qualname____firstlineno__RUNNINGENDED__static_attributes__r       A/Users/admin/workspace/ai/Jarvis/jarviscli/plugins/typing_test.pyr   r      s    GEr   r   
   d   c                   $    \ rS rSrSrS rS rSrg)_Getch   zJGets a single character from standard input.  Does not echo to the
screen.c                 "    [        5       U l        g N)
_GetchUniximplselfs    r   __init___Getch.__init__    s    L	r   c                 "    U R                  5       $ r   r   r   s    r   __call___Getch.__call__#   s    yy{r   r$   N)r   r   r   r   __doc__r!   r%   r   r   r   r   r   r      s    !r   r   c                       \ rS rSrS rSrg)r   '   c                    SS K nSS Kn[        R                  R	                  5       nUR                  U5      n UR                  [        R                  R	                  5       5        [        R                  R                  S5      nUR                  X2R                  U5        U$ ! UR                  X2R                  U5        f = f)Nr   r
   )
ttytermiossysstdinfileno	tcgetattrsetrawread	tcsetattr	TCSADRAIN)r    r+   r,   fdold_settingschs         r   r%   _GetchUnix.__call__(   s    YY((,	CJJsyy'')*"Bb"3"3\B	 b"3"3\Bs   AB# #Cr   N)r   r   r   r   r%   r   r   r   r   r   r   '   s    
r   r   c                   <    \ rS rSr " S S\5      rS rS rS rSr	g)	Letter8   c                   &    \ rS rSrS rSrSrSrSrg)Letter.State9   c                     g r   r   r   s    r   r!   Letter.State.__init__;   s    r   r
   r      r   N)	r   r   r   r   r!   CORRECT	INCORRECT	UNENTEREDr   r   r   r   Stater=   9   s    	 		r   rE   c                     g r   r   r   s    r   r!   Letter.__init__B   s    r   c                 N    Xl         [        R                  R                  U l        g r   )letterr:   rE   rD   state)r    rI   s     r   	setLetterLetter.setLetterE   s    \\++
r   c                 P   SnU R                   [        R                  R                  :X  a
  U[        -  nOcU R                   [        R                  R
                  :X  a
  U[        -  nO1U R                   [        R                  R                  :X  a	  U[        -  nXR                  -  nU$ )N )
rJ   r:   rE   rD   default_text_colorrB   correct_colorrC   incorrect_colorrI   )r    strings     r   __str__Letter.__str__I   sy    ::///((FZZ6<<///m#FZZ6<<111o%F++r   )rI   rJ   N)
r   r   r   r   objectrE   r!   rK   rS   r   r   r   r   r:   r:   8   s     ,	r   r:   c                      [         R                  " S[         35      n U R                  S:X  a?  [        R
                  " U R                  5      nSR                  U5      n[        SU5        U$ g )Nz-https://random-word-api.vercel.app/api?words=    	json_data)	requestsgetn_wordsstatus_codejsonloadscontentjoinprint)responserY   s     r   get_textrd   U   s]    ||KG9UVHs"JJx//0	HHY'	k9%	 #r   c                     [        U S-  5      n[        XS-  -
  5      n[        U5      n[        U5      nSS[        U5      -
  -  U-   nSS[        U5      -
  -  U-   nUS-   U-   $ )N<   0r   :)intstrlen)secondsnew_minutesnew_secondss      r   format_timero   ^   sx    gl#Kgb 001Kk"Kk"KS--.<KS--.<K{**r   c                     [        5       n U S:X  a
  [        5         [        S   [        S      n[        UR                  5        XR                  :X  a_  [
        R                  R                  Ul        [        S==   S-  ss'   U S:X  a(  [        S   (       d  [        S==   S-  ss'   S	[        S'   O([
        R                  R                  Ul        S
[        S'   [        S==   S-  ss'   g )N=letterspositionscorer
   rX   mistake_in_current_wordwordsFT)
getchgame_endinforb   rI   r:   rE   rB   rJ   rC   )entered_letterletter_objects     r   
take_inputr|   k   s    WN#
OD$45M	-

...$ll22Wc!23W".3D*+$ll44*.&'r   c                      [         R                  [        S'   [        5       [        S'   S[        S'   [        [        S'   S/[        [        S   5      -  [        S'   S[        S'   S[        S	'   S
[        S'   g )NrJ   textr   rv   	time_leftz-1rr   rt   rs   Fru   )r   r   ry   rd   
total_timerk   r   r   r   resetr   ~   sf    %%DM:DLDM"Dfs4<00DODMD&+D	"#r   c                     [        5         [        [        [        S   5      5       HQ  n [	        [        S   U    5        [        5       [        S   U '   [        S   U    R                  [        S   U    5        MS     [        5         g )Nr~   rr   )r   rangerk   ry   rb   r:   rK   game_running)is    r   
game_startr      se    	G3tF|$%d6l1o#XYY$$T&\!_5 &
 Nr   c                     [         S   [        R                  :X  a  [        R                  " 5       n [	        5         [        5         [        R                  " 5       n[         S==   X-
  -  ss'   [         S   S::  d  [         S   [        [         S   5      :X  a
  [        5         [         S   [        R                  :X  a  M  g g )NrJ   r   r   rs   r~   )ry   r   r   timeprint_screenr|   rk   rx   )time_0time_1s     r   r   r      s    =I---[fo."d:&6#d6l:K&KJ =I---r   c                     [         R                  [        S'   [        [        S   -
  S-  n U S:  a  [        S   [        [        S   -
  S-  -  nOSn[	        [
        SR                  U5      -   5        US:  a  [        [        R                  R                  [        S5      S	S
9 n[        [        R                  " U5      5      n[        [!        U5      5       HX  n[#        X4   S   5      [#        U5      :  d  M"  US:w  d  M*  [	        SR                  [%        X4S-
     S   5      S-  5      5          O   S S S 5        g g ! , (       d  f       g = f)NrJ   r   rf   r   rv   z

Words per minute - {}   z../data/typing_test_data.csvr)modez"You are better than {}% of people!r
   r   )r   r   ry   r   rb   rO   formatopenospathra   	FILE_PATHlistcsvreaderr   rk   ri   float)	time_diffwpmfdatar   s        r   rx   rx      s   OODMd;//25I1}7m
T+-> >"DE	
:AA#F
FG
by"'',,y*HI 

1&D3t9%twqz?SX-!q&>!6%UA"7#"=>@	 &   s   $AD>:D>2D>>
Ec                  8   [        S5        Sn U SR                  [        S   [        [        S   5      [        S   5      -  n [	        [        [        S   5      5       H  nU [        [        S   U   5      -  n M     [        R                  R                  U 5        g )NzczXWelcome to the typing text game. Enter the letters shown         below ('=' to quit) - 
z-
Score - {}	 Time - {}	 Words -          {}

rt   r   rv   rr   )
rb   r   ry   ro   r   rk   rj   r-   stdoutwrite)rR   r   s     r   r   r      s    	'N$F
 tG}k${2C&DG}&&F 3tI'(#d9oa()) )JJVr   T)networkplatform
typingtestc                     [        5         g r   )r   )jarvisss     r   r   r      s	     Lr   )(r   r-   rZ   r^   r   r   r   r   r   coloramar   r   abspathdirname__file__r   rU   r   WHITErO   REDrQ   GREENrP   r\   r   ry   r   r   rw   r:   rd   ro   r|   r   r   r   rx   r   r   r   r   r   <module>r      s     
   ( ( 	 
 GGOOBGGOOH56	 
 ZZ ((



	   	 :
+&,
(	 	%  &r   