B
    wQ                 @   sB   d dl T d dlT G dd deZG dd deZe Ze  dS )    )*c               @   s<   e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dS )Applicationu    Définition de l'application principale tkinter permettant
    d'interagir avec l'utilisateur. Cette application contient un
    Canevas et quelques boutonsr   c             C   st  t |  | d d| _d| _d| _t| dddd| _| jd| j	 | jj
ddd	d
d
d t| dd| jdj
ddd t| dd| jdj
ddd t| dd| jdj
ddd t | _| jd t| ddj
ddd t| d| jddj
d
dd t| d| jddj
ddd t| d| jddj
d	dd t| dt| j d d t| j d| _| jj
ddd g | _d S )!uV    Construction de l'interface graphique en précisant les
        dimensions du canevasu   Jeu d'agilitér      z	dark grey   )bgheightwidthz
<Button-1>         )rowcolumnZrowspanpadxpadyu	   Démarrer   )textr   command   )r   r   ZPauseQuitter   zNombre de balles)r      1)r   variablevalue3   5zTon score est de 
zNombre d'essais restants: )r   Z
columnspanN)Tk__init__titlepointclicessaiCanvascanbindpointeurgridButtonstart_itstop_it	terminateIntVar
nbreBallessetLabelRadiobuttonstrchaineballes)self r6   e/Users/jerome/SynologyDrive/College/Informatique/OCI/1_Site/1_Programmation/8_GUI/Exercices/ex8_18.pyr      s(    

*zApplication.__init__c             C   s   t jdkr~dt _d}xh|| j kr|t| jtddtdddtddtddtj| jt	tj  d}| j
| |d7 }qW tjdkrdt_x| j
D ]}|  qW d	S )
zPermet de lancer l'animationr   r	      r   ii
   )xyrayondxdycolorN)r   flagr.   getBaller%   randintcoulr!   lenr4   appendmove)r5   iballer6   r6   r7   r*   4   s    
B
zApplication.start_itc             C   s
   dt _dS )zPermet de stopper l'animationr   N)rB   r@   )r5   r6   r6   r7   r+   C   s    zApplication.stop_itc             C   s   |    |   dS )z+Permet de fermer correctement l'applicationN)quitdestroy)r5   r6   r6   r7   r,   G   s    zApplication.terminatec             C   st  t jdkrp| j| jk rN|  jd7  _|j}|j}x8| jD ]}|j|j |  k rj|j|j k rn n|j|j |  k r|j|j k rn n|  jd7  _|	d|j
 d  |d|j  |t j| jtt j   | jjdt| j d d t| j| j  d	 q>| jjdt| j d d t| j| j  d	 q>W n"| jjd
t| j d d	 dt _d S )Nr   r	   r   r   g?zTon score est de r   zNombre d'essais restants: )r   zTERMINE !! 
Ton score est de z
 point(s).)rB   r@   r"   r#   r:   r;   r4   r<   r!   set_timetime
set_radius	set_colorrD   rE   r3   	configurer2   )r5   eventr:   r;   rI   r6   r6   r7   r'   L   s    T26zApplication.pointeurN)
__name__
__module____qualname____doc__r@   r   r*   r+   r,   r'   r6   r6   r6   r7   r      s   %r   c               @   sL   e Zd ZdZdddddgZdZdddZdd Zdd Zdd Z	dd Z
dS )rB   u/   Définition d'une balle animée dans un canevasZredZblueyellowZgreenblackr   r   r	   d   Nc	       	      C   st   || _ || | _| _|| | _| _|| _|| _|| _| j j| j| j | j| j | j| j | j| j d| jd| _	d S )Nr   )r   fill)
r%   r:   r;   r=   r>   r<   rM   r?   create_ovalcanref)	r5   r%   r:   r;   r<   r=   r>   rM   r?   r6   r6   r7   r   i   s    zBalle.__init__c             C   s   | j | j | j| j  | _ | _| j d| j krFd| j | j  | _ | _| jd| j krnd| j | j  | _| _| j dk rd| j  | _ | _| jdk rd| j  | _| _| j| j| j | j | j| j | j | j | j| j  tj	dk r| j
| j| j dS )uZ   Déplacement de la balle selon les directions proposées par ses attributs de déplacementr   r   r   N)r:   r=   r;   r>   r<   r%   coordsr[   rB   r@   afterrM   rG   )r5   r6   r6   r7   rG   v   s    

6z
Balle.movec             C   s   || _ | jj| j| j d dS )z(Permet de changer la couleur de la balle)rY   N)r?   r%   itemconfigurer[   )r5   ZnewColorr6   r6   r7   rO      s    zBalle.set_colorc             C   s
   || _ dS )z:Permet de changer le temps de rafraichissement de la balleN)rM   )r5   ZnewTimer6   r6   r7   rL      s    zBalle.set_timec             C   s
   || _ dS )z&Permet de changer le rayon de la balleN)r<   )r5   Z	newRadiusr6   r6   r7   rN      s    zBalle.set_radius)r   r   r   r	   r	   rX   N)rR   rS   rT   rU   rD   r@   r   rG   rO   rL   rN   r6   r6   r6   r7   rB   c   s   
rB   N)tkinterrandomr   r   objectrB   Zappmainloopr6   r6   r6   r7   <module>   s
   [9