%Frédéric Léon : http://frederic.leon77.free.fr
%D'après le code de Nicolas Poulain
%https://raw.githubusercontent.com/nicolaspoulain/scratchTeX/master/main.tex
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% compilation en pdfLaTeX
%
% les mesures sont en points (1pt LaTeX ~ 1pt psTricks)
% 1cm ~ 28.45274 pt
% les hauteurs des blocs s'adaptent au texte
% la version étoilée n'affiche pas le contenu des blocs
%
% version du 24/09/2018=========================
%
% version du 27/09/2018=========================
% vérfification de compatibilité avec différents packages
% renommage de certaines variables
% ajouts des % dans \choixCouleurs
% création de l'environnement Scratch
%
% version du 30/09/2018=========================
% ajout du champ Tfield pour les textes dans des rectangles
%     droits (quand le chat parle)
%
% version du 14/02/2019=========================
% ajout du bloc tantque
%
% A faire : label et référence aux n° de ligne
% problèmes entre hyperref et refstepcounter
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% version étoilée : écrit en couleur de de fond = bloc vide
%
% \scrBlocFlag
% \scrBlocevent{text}                           
% \scrBlocFonction{text}   
% \scrBloc{color}{text}     \scrBloc*{color}{text}
% \repeteDeb{test} ... \repeteFin
% \siDeb{test} ... \siFin
% \siDeb{test} ... \siNon ... \siFin
% \tantqueDeb{test} ... \tantqueFin
% \lfield*{color}{text} / champ de liste (avec triangle) = rectangle coins droits
% \tfield*{color}{text} / champ de texte = rectangle coins arrondis 
% \iffield*{color}{text}  champ de test = hexagone aplati
% \Nfield*{nombre}    champ rectangle arrondi avec un nombre ET une flèche
% \nfield*{nombre}    champ rectangle arrondi avec un nombre
% \Tfield*{text} / champ de texte = rectangle coins droits     












%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\documentclass[10pt,onecolumn]{article}

\usepackage[a4paper, portrait, asymmetric, left=1.2cm, right=1.2cm, 
top=0.5cm, bottom=0.5cm, includehead, includefoot, headsep=0.4cm, 
headheight=1cm,
,pdftex% pour compiler en PdfLatex
]{geometry}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[light, frenchstyle, oldstylenums]{kpfonts}
\usepackage{graphicx}
\usepackage{pstricks-add}
\usepackage{embedfile}
\usepackage[crop=off]{auto-pst-pdf}

\embedfile{\jobname.tex}



\newlength\scrXmarge
\newlength\scrYpos% position courante du bloc
\newlength\scrXpos% position courante du bloc
\newlength\txtLong \newlength\scrBlocHaut \newlength\txtProf
\newlength\scrDx 
\newlength\scrDy 
\newlength\scrXshift% coordonnées coin haut gauche (sauf bloc event)
\newlength\scrYshift% coordonnées coin haut gauche (sauf bloc event)
\newlength\longTmp
\newlength\xSinon \newlength\ySinon
\newcommand*\cocheB{-3}% height of \ (part of \_/ )
\newcommand*\cocheD{3}  % width  of \ (part of \_/ )
\newcommand*\cocheL{7.5} % width  of _ (part of \_/ )
\newcommand*\cocheXa{14}
\newcommand*\cocheXb{14}
\newcommand*\cocheXbLoop{23}% = dx + cocheXa
%
\newcounter{scrCpt} % pour les blocs repete
\newcounter{scrNumLigne} \setcounter{scrNumLigne}{0}
\newcounter{scrCptSinon} \setcounter{scrCptSinon}{0}% compte les "sinon"
%
\newif\ifscrNumLigneAff
%
\makeatletter
\newsavebox\box@txt
\makeatother
%
\newenvironment{Scratch}[5][40]{%
%#1 : hauteur du premier bloc en pt (défaut=40pt)
%#2 : largeur en pt
%#3 : hauteur en points
%#4 : n° premiere ligne (0 = pas de numérotation)
%#5 : palette de couleur (0 = noir et blanc)
\ifnum #4=0\relax%
    \scrNumLigneAfffalse%
    \setlength{\scrXshift}{0pt}% en pt
\else%
    \scrNumLigneAfftrue%
    \setcounter{scrNumLigne}{#4}%
    \addtocounter{scrNumLigne}{-1}%
    \setlength{\scrXshift}{14.5pt}% en pt
\fi%
\setcounter{scrCpt}{0}
\setcounter{scrCptSinon}{0}
\setlength\scrXmarge{3pt}% décalage du texte par rapport au bord des boîtes
\setlength{\scrDx}{9pt}% décalage des blocs dans bloc contrôle
\setlength{\scrDy}{-1.5pt}% écart entre les blocs
\setlength{\scrYshift}{0pt}% en pt
\choixCouleur{#5}%
\psset{unit=1pt}%
\pspicture(0,#1)(#2,-#3)}
%
{%placer les mots "sinon" si besoin
\placerSinon
\endpspicture
}%fin env Scratch


\newcommand*\affNumLigne[1]{%
%#1 : position en ordonnées du numéro
\ifscrNumLigneAff%
%    \refstepcounter{scrNumLigne}% <-- refstep... problème avec hyperref
    \stepcounter{scrNumLigne}%
    \rput[r](!10  #1)% abscisse < \scrXshift initial
        {\color{numLigneCouleur}{$\scriptstyle\mathsf{\thescrNumLigne}$}}%
\fi%
}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%    Choix des couleurs 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*\choixCouleur[1]{%
%0 : en noir et blanc
\ifnum #1=0\relax%
    \definecolor{mouvement}{RGB}{255,255,255}%
    \definecolor{apparence}{RGB}{255,255,255}%
    \definecolor{sons}{RGB}{255,255,255}%
    \definecolor{stylo}{RGB}{255,255,255}%
    \definecolor{donnees}{RGB}{255,255,255}%
    \definecolor{evenements}{RGB}{255,255,255}%
    \definecolor{controle}{RGB}{255,255,255}%
    \definecolor{capteurs}{RGB}{255,255,255}%
    \definecolor{operateurs}{RGB}{255,255,255}%
    \definecolor{ajouterblocs}{RGB}{255,255,255}%
    \definecolor{drapeauCouleur}{RGB}{0,0,0}%
    \definecolor{drapeauCouleurFond}{RGB}{190,190,190}%
    \definecolor{couleurDefaut}{RGB}{0 ,0, 0}%
    \definecolor{txtCouleur}{RGB}{0,0,0}%
    \definecolor{champNbCouleur}{RGB}{230, 230, 230}%
    \definecolor{champLCouleur}{RGB}{230, 230, 230}%
    \def\ligneStyle{solid}%
    \def\ligneStyleEp{.75pt}%
    \def\ombreStyle{false}%
    \def\ombreEp{0pt}%
%
\else%
    \definecolor{mouvement}{RGB}{74,108,212}%
    \definecolor{apparence}{RGB}{138,85,215}%
    \definecolor{sons}{RGB}{187,66,195}%
    \definecolor{stylo}{RGB}{14,154,108}%
    \definecolor{donnees}{RGB}{238,125,22}%
    \definecolor{evenements}{RGB}{200,131,48}%
    \definecolor{controle}{RGB}{225,169,26}%
    \definecolor{capteurs}{RGB}{44,165,226}%
    \definecolor{operateurs}{RGB}{92,183,18}%
    \definecolor{ajouterblocs}{RGB}{99,45,153}%
    \definecolor{drapeauCouleur}{RGB}{0,0,0}%
    \definecolor{drapeauCouleurFond}{RGB}{63,141,21}%
    \definecolor{couleurDefaut}{RGB}{0 ,0, 0}%
    \definecolor{txtCouleur}{RGB}{255,255,255}%
    \definecolor{champNbCouleur}{RGB}{255, 255, 255}%
    \definecolor{champLCouleur}{RGB}{255, 255, 255}%
    \def\ligneStyle{none}%
    \def\ligneStyleEp{0pt}%
    \def\ombreStyle{true}%
    \def\ombreEp{1.5pt}%
\fi%
\definecolor{numLigneCouleur}{RGB}{0,0,200}%
\definecolor{blocVideCouleurFond}{RGB}{255, 255, 255}%
\definecolor{blocVideCouleur}{RGB}{0,0,0}%
\definecolor{ligneCouleur}{RGB}{0,0,0}%
}

%
\newcommand*\txtFormat{\sffamily \bfseries}
\newcommand*\mathsFormat[1]{$\mathbf{\mathsf{#1}}$}

\newpsstyle{styleblocFlag}{dimen=outer, linecolor=ligneCouleur,%
    linearc=3, linestyle=\ligneStyle,%
    fillcolor=evenements, fillstyle=solid,%
    shadow=\ombreStyle, shadowsize=\ombreEp%
}
\newpsstyle{styleBlocEvt}{dimen=outer, linecolor=ligneCouleur,%
    linearc=3, linestyle=\ligneStyle,%
    fillcolor=evenements, fillstyle=solid,%
    shadow=\ombreStyle, shadowsize=\ombreEp%
}
\newpsstyle{styleBlocFct}{dimen=outer, linecolor=ligneCouleur,%
    linearc=3, linestyle=\ligneStyle,%
    fillcolor=ajouterblocs, fillstyle=solid,%
    shadow=\ombreStyle, shadowsize=\ombreEp%
}
\newpsstyle{styleBlocCtrl}{dimen=outer, linecolor=ligneCouleur,%
    linearc=3, linestyle=\ligneStyle,%
    fillcolor=controle, fillstyle=solid,%
    shadow=\ombreStyle, shadowsize=\ombreEp%
}
\newpsstyle{styleBlocTxt}{dimen=outer, linecolor=ligneCouleur,%
    linearc=3, linestyle=\ligneStyle,%
    fillstyle=solid,%
    shadow=\ombreStyle, shadowsize=\ombreEp
}
\newpsstyle{styleBlocVide}{dimen=outer, linecolor=blocVideCouleur,%
    linearc=3, linestyle=solid,%
    fillcolor=blocVideCouleurFond, fillstyle=solid,%
    shadow=\ombreStyle, shadowsize=\ombreEp
}
\newpsstyle{styleBlocChampL}{dimen=outer, linecolor=ligneCouleur,%
    framearc=0, framesep=1.2pt,%
    linestyle=\ligneStyle, linewidth=\ligneStyleEp,%
     fillstyle=solid,
    shadow=\ombreStyle, shadowangle=135%
}
\newpsstyle{styleChampSi}{dimen=outer, linecolor=ligneCouleur,%
    linearc=0, linestyle=\ligneStyle,%
    shadow=\ombreStyle
}
\newpsstyle{styleChampN}{dimen=outer, linecolor=ligneCouleur,%
    framearc=.9, framesep=2pt,%
    linestyle=\ligneStyle, linewidth=\ligneStyleEp,% 
    fillcolor=champNbCouleur, shadow=false%
}
\newpsstyle{styleChampTxt}{dimen=outer, linecolor=ligneCouleur,%
    framearc=.9, linestyle=\ligneStyle,% 
    framesep=1pt, shadow=\ombreStyle%
}
\newpsstyle{styleChampTxT}{dimen=outer, linecolor=ligneCouleur,%
    framearc=0, linestyle=\ligneStyle,%
    fillcolor=white, fillstyle=solid, 
    framesep=1pt, shadow=\ombreStyle%
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                   \scrBlocBase{w}{h}{a}{b}{z}{x}{y}                   %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 % \scrBlocBase w h a b z x y 
\def\scrBlocBase#1#2#3#4#5#6#7{
  %
  %  (x,y)___x+a  ________________(x+w,y)
  %      |   \___/                |
  %      |       (x+a+d+l,y+b)    |
  %      | x+z__x+b  _____________|
  %(x,y-h)      \___/             (x+w,y-h)
  %                 (b+d+l,y+b-h)
  %
  \psline(!#6 #7 #2 sub) % (x,y-h)
  (!#6 #7)               % (x,y)
  (!#6 #3 add #7)                                        % (x+a,y)
  (!#6 #3 add \cocheD\space add \cocheB\space #7 add)              % (x+a+d,y+b)
  (!#6 #3 add \cocheD\space add \cocheL\space add \cocheB\space #7 add) % (x+a+d+l,y+b)
  (!#6 #3 add \cocheD\space dup add add \cocheL\space add #7)      % (x+a+2d+l,y)
  (!#6 #1 add #7)        % (x+w,y)
  (!#6 #1 add #7 #2 sub) % (x+w,y-h)
  (!#6 #4 add \cocheD\space dup add add \cocheL\space add #7 #2 sub)     % (x+b+2d+l,y-h)
  (!#6 #4 add \cocheD\space add \cocheL\space add \cocheB\space #2 sub #7 add)% (x+b+d+l,y+b-h)
  (!#6 #4 add \cocheD\space add \cocheB\space #2 sub #7 add)             % (x+b+d,y+b-h)
  (!#6 #4 add #7 #2 sub)                                       % (x+b,y-h)
  (!#6 #5 add #7 #2 sub)% (x+z,y-h)
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                   \scrBlocEnd{w}{h}{a}{b}{z}{x}{y}                    %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  % \scrBlocEnd w h a b z x y
\def\scrBlocEnd#1#2#3#4#5#6#7{
  %
  %  (x,y)  x+z___x+a  _____________(x+w,y)
  %      |        \___/             |
  %      |            (x+a+d+l,y+b) |
  %      |_____x+b  ________________|
  %(x,y-h)     \___/                (x+w,y-h)
  %               (x+b+d+l,y+b-h)
  %
  \psline(!#5 #6 add #7)     % (x+z,y)
  (!#6 #3 add #7)                                        % (x+a,y)
  (!#6 #3 add \cocheD\space add \cocheB\space #7 add)              % (x+a+d,y+b)
  (!#6 #3 add \cocheD\space add \cocheL\space add \cocheB\space #7 add) % (x+a+d+l,y+b)
  (!#6 #3 add \cocheD\space dup add add \cocheL\space add #7)      % (x+a+2d+l,y)
  (!#6 #1 add #7)        % (x+w,y)
  (!#6 #1 add #7 #2 sub) % (x+w,y-h)
  (!#6 #4 add \cocheD\space dup add add \cocheL\space add #7 #2 sub)     % (x+b+2d+l,y-h)
  (!#6 #4 add \cocheD\space add \cocheL\space add \cocheB\space #2 sub #7 add)% (x+b+d+l,y+b-h)
  (!#6 #4 add \cocheD\space add \cocheB\space #2 sub #7 add)             % (x+b+d,y+b-h)
  (!#6 #4 add #7 #2 sub)                                       % (x+b,y-h)
  (!#6 #7 #2 sub) % (x,y-h)
  (!#6 #7)               % (x,y)
}
% \scrBloceventbase{width}{height}{xb}
\def\scrBloceventbase#1#2#3{
  \pscustom{%
  \psellipticarcn(!34 #2 -5.4 add)(37,14){170}{10}
  \psline(#1,#2)(#1,0)
    (!#3 \cocheD\space add \cocheL\space add \cocheD\space add 0)
    (!#3 \cocheD\space add \cocheL\space add \cocheB)
    (!#3 \cocheD\space add \cocheB)
    (#3, 0)(0,0)(0, #2)
  \closepath
  \closedshadow
  }
}
% \scrBlocFonctionBase{width}{height}{xb}
\def\scrBlocFonctionBase#1#2#3{
  \pscustom{%
  \psellipticarcn(!#1 2 div #2)(!#1 2 div 14){178}{2}
  \psline(#1,#2)(#1,0)
    (!#3 \cocheD\space add \cocheL\space add \cocheD\space add 0)
    (!#3 \cocheD\space add \cocheL\space add \cocheB)
    (!#3 \cocheD\space add \cocheB)
    (#3, 0)(0,0)(0, #2)
  \closepath
  \closedshadow
  }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
\makeatletter
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newsavebox\boxFlag

\def\pst at closedshadow{%
  \addto at pscode{%
    gsave
    \psk at shadowsize \psk at shadowangle \tx at PtoC
    \tx at Shadow
    \pst at usecolor\psshadowcolor
    gsave fill grestore
    stroke
    grestore%
  }%
}

\newcommand*\flag{%
\pspolygon[unit=1pt, linearc=0, linewidth=1.2pt,%
     linecolor=drapeauCouleur, linestyle=solid,%
     fillcolor=drapeauCouleurFond, fillstyle=solid]
     (0,1)(3,16)(6,14.5)(8.9,14)(11.5,14)
     (17.5,15)(17.5,7.4)(11.5,6)(8.9,6)(6,7.5)(1.5,8.6)
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                             \scrBlocFlag                              %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand\scrBlocFlag{%
    \savebox\boxFlag{\psset{unit=1pt}%
    \begin{pspicture}(0,0)(18,17) \flag \end{pspicture}}%
    \savebox\box@txt{%
        \txtFormat \color{txtCouleur}
        quand~\usebox\boxFlag{} est cliqué%
    }%
    \settowidth\txtLong{\usebox\box@txt}%
    \addtolength\txtLong{ 2\scrXmarge}%
    \settoheight\scrBlocHaut{\usebox\box@txt}%
    \settodepth\txtProf{\usebox\box@txt}%
    \addtolength\scrBlocHaut{\txtProf}%
    \setlength\scrBlocHaut{1.25\scrBlocHaut}%
    \psset{style=styleblocFlag}%
    \rput[l](!\strip@pt\scrXshift\space \strip@pt\scrYshift){%
        \scrBloceventbase{\strip@pt\txtLong}{\strip@pt\scrBlocHaut}{\cocheXb}%
%        \psset{shadow=false}%
        \rput[l](!\strip@pt\scrXmarge\space \strip@pt\scrBlocHaut\space 2 div ){%
            \usebox\box@txt
        }%
    }%
    \affNumLigne{\strip@pt\scrYshift\space \strip@pt\scrBlocHaut\space 2 div add}
    \addtolength\scrYshift{\scrDy}
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                         \scrBlocevent{text}                           
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand\scrBlocevent[1]{%
    \savebox\box@txt{%
        \psset{style=styleBlocEvt}%
        \color{txtCouleur}\txtFormat \strut #1%
    }
    \settowidth\txtLong{\usebox\box@txt}%
    \addtolength\txtLong{2\scrXmarge}%
    \settoheight\scrBlocHaut{\usebox\box@txt}%
    \settodepth\txtProf{\usebox\box@txt}%
    \addtolength\scrBlocHaut{\txtProf}%
    \setlength\scrBlocHaut{1.25\scrBlocHaut}%
    \psset{style=styleBlocEvt}%
    \rput[l](!\strip@pt\scrXshift\space \strip@pt\scrYshift){%
        \scrBloceventbase{\strip@pt\txtLong}{\strip@pt\scrBlocHaut}{\cocheXb}
        \rput[l](!\strip@pt\scrXmarge\space \strip@pt\scrBlocHaut\space 2 div)%
            {\usebox\box@txt}
    }
    \affNumLigne{\strip@pt\scrYshift\space \strip@pt\scrBlocHaut\space 2 div add}
    \addtolength\scrYshift{\scrDy}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                         \scrBlocFonction{text}                           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand\scrBlocFonction[1]{%
    \savebox\box@txt{%
        \psset{style=styleBlocFct}
        \color{txtCouleur} \txtFormat \strut #1
    }%
    \savebox\box@txt{%
        \psset{style=styleBlocFct}%
        \color{txtCouleur}\txtFormat définir~
        \settowidth\txtLong{\usebox\box@txt}%
        \addtolength\txtLong{2\scrXmarge}%
        \settoheight\scrBlocHaut{\usebox\box@txt}%
        \settodepth\txtProf{\usebox\box@txt}%
        \addtolength\scrBlocHaut{\txtProf}%
        \setlength\scrBlocHaut{1.25\scrBlocHaut}%
        \raisebox{-1.25\txtProf}{%        
        \psset{unit=1pt}
        \begin{pspicture}(0, 0)(\strip@pt\txtLong, -\strip@pt\scrBlocHaut)
        \rput[l](0, 0){%
            %\scrBlocBase w h a b z x y
            \psset{dimen=inner, linewidth=1.5pt, linecolor=white, linestyle=solid}
            \scrBlocBase{\strip@pt\txtLong}{\strip@pt\scrBlocHaut}{\cocheXa}%
                {\cocheXb}{0}{0}{0}
            \psset{style=styleBlocFct, shadow=false}%
            \scrBlocBase{\strip@pt\txtLong}{\strip@pt\scrBlocHaut}{\cocheXa}%
                {\cocheXb}{0}{0}{0}
            \rput[l](!\strip@pt\scrXmarge\space \strip@pt\scrBlocHaut\space .5 mul neg)  
                {\usebox\box@txt}
        }        
        \end{pspicture}
        }
    }%
    \settowidth\txtLong{\usebox\box@txt}%
    \addtolength\txtLong{2\scrXmarge}%
    \settoheight\scrBlocHaut{\usebox\box@txt}%
    \settodepth\txtProf{\usebox\box@txt}%
    \addtolength\scrBlocHaut{\txtProf}%
    \setlength\scrBlocHaut{1.25\scrBlocHaut}%
    \psset{style=styleBlocFct}%
    \rput[l](!\strip@pt\scrXshift\space \strip@pt\scrYshift){%
        \scrBlocFonctionBase{\strip@pt\txtLong}{\strip@pt\scrBlocHaut}{\cocheXb}
        \rput[l](!\strip@pt\scrXmarge\space \strip@pt\scrBlocHaut\space .7 mul)%
            {\usebox\box@txt}
    }
    \affNumLigne{\strip@pt\scrYshift\space \strip@pt\scrBlocHaut\space .7 mul add}
    \addtolength\scrYshift{\scrDy}
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                         \scrBloc{color}{text}                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*\scrBloc{\@ifstar\@@bloc\@bloc}

\newcommand*\@bloc[2]{%
    \savebox\box@txt{%
        \psset{style=styleBlocTxt, fillcolor=#1}
        \color{txtCouleur} \txtFormat \strut #2
    }%
    \settowidth\txtLong{\usebox\box@txt}%
    \addtolength\txtLong{2\scrXmarge}%
    \settoheight\scrBlocHaut{\usebox\box@txt}%
    \settodepth\txtProf{\usebox\box@txt}%
    \addtolength\scrBlocHaut{\txtProf}%
    \setlength\scrBlocHaut{1.3\scrBlocHaut}%
    \psset{style=styleBlocTxt, fillcolor=#1}%
    \rput[l](!\strip@pt\scrXshift\space \strip@pt\scrYshift){%
        %\scrBlocBase w h a b z x y
        \scrBlocBase{\strip@pt\txtLong}{\strip@pt\scrBlocHaut}{\cocheXa}%
            {\cocheXb}{0}{0}{0}
        \rput[l](!\strip@pt\scrXmarge\space \strip@pt\scrBlocHaut\space .5 mul neg)  
            {\usebox\box@txt}
    }
    \affNumLigne{\strip@pt\scrYshift\space \strip@pt\scrBlocHaut\space .5 mul sub}
    \addtolength\scrYshift{-\scrBlocHaut}
    \addtolength\scrYshift{\scrDy}
}

\newcommand*\@@bloc[1]{%
    \savebox\box@txt{\txtFormat \strut #1}%
    \settowidth\txtLong{\usebox\box@txt}%
    \addtolength\txtLong{2\scrXmarge}%
    \settoheight\scrBlocHaut{\usebox\box@txt}%
    \settodepth\txtProf{\usebox\box@txt}%
    \addtolength\scrBlocHaut{\txtProf}%
    \setlength\scrBlocHaut{1.3\scrBlocHaut}%
    \psset{style=styleBlocVide}
    \rput[l](!\strip@pt\scrXshift\space \strip@pt\scrYshift){%
        %\scrBlocBase w h a b z x y
        \scrBlocBase{\strip@pt\txtLong}{\strip@pt\scrBlocHaut}{\cocheXa}%
            {\cocheXb}{0}{0}{0}
    }
    \affNumLigne{\strip@pt\scrYshift\space \strip@pt\scrBlocHaut\space .5 mul sub}        
    \addtolength\scrYshift{-\scrBlocHaut}
    \addtolength\scrYshift{\scrDy}
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                           loopbloc{text}                           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*\repeteDeb[1]{%
    \addtocounter{scrCpt}{1}%    
    \expandafter\gdef\csname text\roman{scrCpt}\endcsname{%
        \psset{style=styleBlocCtrl}
        \color{txtCouleur} \txtFormat \strut répéter #1 fois
    }%
    \boucleDeb{répéter #1 fois}%
}
\newcommand*\repeteFin{%
    \boucleFin[$\boldsymbol \Lsh$]%
}
\newcommand*\siDeb[1]{%
    \addtocounter{scrCpt}{1}%    
    \expandafter\gdef\csname text\roman{scrCpt}\endcsname{%
        \psset{style=styleBlocCtrl}
        \color{txtCouleur} \txtFormat \strut si #1 alors
    }%
    \boucleDeb{si #1 alors}%
}
\newcommand*\siFin{%
    \boucleFin%
}


\newcommand*\tantqueDeb[1]{%
    \addtocounter{scrCpt}{1}%    
    \expandafter\gdef\csname text\roman{scrCpt}\endcsname{%
        \psset{style=styleBlocCtrl}
        \color{txtCouleur} \txtFormat \strut #1
    }%
    \boucleDeb{#1}%
}
\newcommand*\tantqueFin{%
    \boucleFin[$\boldsymbol \Lsh$]%
}

\newcommand*\boucleDeb[1]{%
%#1 le texte de la boucle
    \savebox\box@txt{\txtFormat\strut#1}%
    \settowidth\txtLong{\usebox\box@txt}%
    \addtolength\txtLong{2\scrXmarge}%
    \settoheight\scrBlocHaut{\usebox\box@txt}%
    \settodepth\txtProf{\usebox\box@txt}%
    \addtolength\scrBlocHaut{\txtProf}%
    \setlength\scrBlocHaut{1.3\scrBlocHaut}%    
    \expandafter\xdef\csname blocHaut\roman{scrCpt}\endcsname{\the\scrBlocHaut}%
    \expandafter\xdef\csname txtProf\roman{scrCpt}\endcsname{\the\txtProf}%
    \expandafter\xdef\csname ypos\roman{scrCpt}\endcsname{\the\scrYshift}%
    \expandafter\xdef\csname txtLong\roman{scrCpt}\endcsname{\the\txtLong}%
    \affNumLigne{\strip@pt\scrYshift\space \strip@pt\scrBlocHaut\space 2 div sub}
    \addtolength\scrXshift{\scrDx}
    \addtolength\scrYshift{-\scrBlocHaut} \addtolength\scrYshift{\scrDy}
}

\newcommand*\boucleFin[1][]{%
    \setlength{\scrYpos}{\csname ypos\roman{scrCpt}\endcsname}%
    \setlength{\txtLong}{\csname txtLong\roman{scrCpt}\endcsname}%
    \setlength{\scrBlocHaut}{\csname blocHaut\roman{scrCpt}\endcsname}%
    \setlength{\txtProf}{\csname txtProf\roman{scrCpt}\endcsname}%
    \addtolength\scrXshift{-\scrDx}%
    \psset{style=styleBlocCtrl}%
    \pscustom{%
        \scrBlocBase{\strip@pt\txtLong}{\strip@pt\scrBlocHaut}{\cocheXa}%
            {\cocheXbLoop}{\strip@pt\scrDx}{\strip@pt\scrXshift}{\strip@pt\scrYpos}
        \scrBlocEnd{\strip@pt\txtLong}{10}{\cocheXbLoop}{\cocheXa}{\strip@pt\scrDx}%
            {\strip@pt\scrXshift}{\strip@pt\scrYshift}
    \closepath
    \closedshadow
    }%
    \rput[l](!\strip@pt\scrXshift\space \strip@pt\scrYpos){%
        \rput[l](!\strip@pt\scrXmarge\space \strip@pt\scrBlocHaut\space 2 div neg){%
            \csname text\roman{scrCpt}\endcsname
        }
    }%
    \rput[r]{-90}(!\strip@pt\scrXshift\space \strip@pt\txtLong\space add
        \strip@pt\scrDx\space sub 
        \strip@pt\scrYshift\space 9 sub){%la flèche "retour"
            \color{txtCouleur} \scalebox{1.2}{#1}%
    }%
    \addtolength\scrYshift{-10pt}% hauteur blocEnd = 10pt
    \addtolength\scrYshift{\scrDy}%
    \addtocounter{scrCpt}{-1}%
}

\newcommand*\siNon{%
    \setlength{\txtLong}{\csname txtLong\roman{scrCpt}\endcsname}%
    \stepcounter{scrCptSinon}%
    \addtolength\txtLong{-3\scrXmarge}%
    \addtolength\txtLong{-\scrDx}%
    \scrBloc{controle}{\rule{\txtLong}{0pt}}
    \setlength{\ySinon}{\scrYshift}
    \addtolength{\ySinon}{.5\scrBlocHaut}
    \addtolength{\ySinon}{-\scrDy}
    \expandafter\xdef\csname ySinon\roman{scrCptSinon}\endcsname{\the\ySinon}%
    \setlength{\xSinon}{\scrXshift}
    \addtolength{\xSinon}{-\scrDx}
    \expandafter\xdef\csname xSinon\roman{scrCptSinon}\endcsname{\the\xSinon}%
}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                           \lfield{couleur}{text}    
%champ de liste - rectangulaire      %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*\lfield{\@ifstar\@@lfield\@lfield}
\newcommand*{\@lfield}[2]{%
    \psframebox[style=styleBlocChampL, fillcolor=#1]{%
      \color{txtCouleur}\txtFormat \strut #2
      \color{couleurDefaut}{$^\blacktriangledown$}
    }
}
\newcommand*{\@@lfield}[2]{%texte blanc sur fond blanc
    \psframebox[style=styleBlocChampL, fillcolor=white]{%
           \color{white}{\txtFormat \strut #1}%
           \color{couleurDefaut}{$^\blacktriangledown$}
    }
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                     \iffield{color}{text}  
%champ de test = hexagone aplati                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*\iffield{\@ifstar\@@iffield\@iffield}
\newcommand*{\@iffield}[2]{%
    \savebox\box@txt{\txtFormat \color{txtCouleur} \strut #2}%
    \iffield@i{#1}
}
\newcommand*{\@@iffield}[2]{%
    \savebox\box@txt{\txtFormat \color{#1} \strut #2}%
    \iffield@i{#1}
}
\newcommand*{\iffield@i}[1]{%
    \settowidth\txtLong{\usebox\box@txt}%
    \settoheight\scrBlocHaut{\usebox\box@txt}%
    \settodepth\txtProf{\usebox\box@txt}%
    \addtolength\scrBlocHaut{\txtProf}%
    \addtolength\scrBlocHaut{4pt}%
    \setlength\scrBlocHaut{.5\scrBlocHaut}%
    \newcommand*\y@tmp{\strip@pt\scrBlocHaut\space}%
    \newcommand*\x@tmp{\strip@pt\txtLong\space}%
    \setlength{\longTmp}{\txtLong}%
    \addtolength\longTmp{1.25\scrBlocHaut}%
    \raisebox{-\txtProf-2pt}{%
    \begin{pspicture}(0, -\y@tmp)(\strip@pt\longTmp, \y@tmp)
        \pspolygon[style=styleChampSi, fillcolor=#1]
         (0,0)(!\y@tmp .75 mul \y@tmp)(!\y@tmp .75 mul \x@tmp add \y@tmp)
         (!\y@tmp 1.5 mul \x@tmp add 0)
         (!\y@tmp .75 mul \x@tmp add \y@tmp neg)(!\y@tmp .75 mul \y@tmp neg)
        \rput[l](!\y@tmp .75 mul 0){\usebox\box@txt}%
    \end{pspicture}
    }
}



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                      \tfield{color}{text}      
% champ de texte = rectangle coins arrondis                    
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*\tfield{\@ifstar\@@tfield\@tfield}
\newcommand*{\@tfield}[2]{%
    \,\psframebox[style=styleChampTxt, fillcolor=#1]{%
        \color{txtCouleur}\txtFormat \strut #2%
    }%
}
\newcommand*{\@@tfield}[2]{%le texte est de la couleur du fond
    \,\psframebox[style=styleChampTxt, fillcolor=#1]{%
        \color{#1}\txtFormat \strut #2%
    }%
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                      \Tfield{text}      
% champ de texte = rectangle coins droits
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*\Tfield{\@ifstar\@@Tfield\@Tfield}
\newcommand*{\@Tfield}[1]{%
    \,\psframebox[style=styleChampTxT]{%
        \color{black}\txtFormat \strut #1%
    }%
}
\newcommand*{\@@Tfield}[1]{%le texte est de la couleur du fond
    \,\psframebox[style=styleChampTxT]{%
        \color{white}\txtFormat \strut #1%
    }%
}


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                           \Nfield{text}                             %
% champ rectangle arrondi avec un nombre ET une flèche
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*\Nfield{\@ifstar\N@@field\N@field}
\newcommand*{\N@field}[1]{%
    \psframebox[style=styleChampN]{%
        \color{couleurDefaut}{\mathsFormat{\mathstrut#1}}
        \color{couleurDefaut}{\mathsFormat{\,^\blacktriangledown}}%
}}
\newcommand*{\N@@field}[1]{%le texte est écrit dans la couleur du fond
    \psframebox[style=styleChampN]{%
        \color{champNbCouleur}{\mathsFormat{\mathstrut#1}}%
        \color{couleurDefaut}{\mathsFormat{\,^\blacktriangledown}}%
}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                           \nfield{text}                             %
% champ rectangle arrondi avec un nombre SANS une flèche
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand*\nfield{\@ifstar\n@@field\n@field}
\newcommand*{\n@field}[1]{%
    \psframebox[style=styleChampN]{%
        \color{couleurDefaut}{\mathsFormat{\mathstrut#1}}
}}
\newcommand*{\n@@field}[1]{%le texte est écrit dans la couleur du fond
    \psframebox[style=styleChampN]{%
        \color{champNbCouleur}{\mathsFormat{\mathstrut#1}}%
}}



\newcommand*\placerSinon{%
\setcounter{scrCpt}{0}
\savebox\box@txt{\txtFormat\strut sinon}%
\settoheight\scrBlocHaut{\usebox\box@txt}%
\settodepth\txtProf{\usebox\box@txt}%
\addtolength\scrBlocHaut{\txtProf}%
\multido{\i=1+1}{\thescrCptSinon}{%
    \stepcounter{scrCpt}%
    \setlength{\scrYpos}{\csname ySinon\roman{scrCpt}\endcsname}%
    \setlength{\scrXpos}{\csname xSinon\roman{scrCpt}\endcsname}%
    \psline[linewidth=3pt, linecolor=controle, shadow=none, shadowsize=0pt]%
        (!\strip@pt\scrXpos\space \strip@pt\scrDx\space add 
         \strip@pt\scrYpos\space \strip@pt\scrBlocHaut\space .5 mul add)%
        (!\strip@pt\scrXpos\space \strip@pt\scrDx\space add 
         \strip@pt\scrYpos\space \strip@pt\scrBlocHaut\space .5 mul sub)%
    \rput[l](!\strip@pt\scrXpos\space\strip@pt\scrXmarge\space add %
         \strip@pt\scrYpos){%
        \color{txtCouleur} \txtFormat \strut sinon
    }%rput
}%mltd
}%plcsn



%%
\makeatother
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\newcommand*\larrow{ \!\!\raisebox{0.7em}{%
    \scalebox{1.2}{\rotatebox{-45}{$\boldsymbol \curvearrowleft$}}%
}}
\newcommand*\rarrow{ \!\!\raisebox{-0.2em}{%
    \scalebox{1.2}{\rotatebox{45}{$\boldsymbol \curvearrowright$}}%
}}


\begin{document}

\section{DNB 2018 : Amérique du Nord}

\begin{Scratch}{180}{200}{0}{0}%
\psgrid[unit=20pt]
\scrBlocFlag
\scrBloc{mouvement}{aller à x : \nfield{-200} y: \nfield{0}}
\scrBloc{mouvement}{s'orienter à \Nfield{90}}
\scrBloc{stylo}{effacer tout}
\scrBloc{stylo}{mettre la taille du stylo à \nfield{1}}
\scrBloc{donnees}{mettre \lfield{donnees}{côté} à \nfield{40}}
\repeteDeb{\nfield{4}}
    \scrBloc{ajouterblocs}{carré}
    \scrBloc{mouvement}{avancer de \tfield{donnees}{côté}}
    \scrBloc{donnees}{ajouter à \lfield{donnees}{côté} \nfield{20}}
\repeteFin
\end{Scratch}
\hfill
%
\begin{Scratch}{170}{120}{1}{0}%
\scrBlocFonction{carré}
\scrBloc{stylo}{stylo en position d'écriture}
\repeteDeb{\nfield{4}}
    \scrBloc{mouvement}{avancer de \tfield{donnees}{côté}}
    \scrBloc{mouvement}{tourner \larrow de \Nfield{90}  degrés }
\repeteFin
\scrBloc{stylo}{relever stylo}
\end{Scratch}

\begin{Scratch}{180}{200}{0}{1}%
%\psgrid[unit=20pt]
\scrBlocFlag
\scrBloc{mouvement}{aller à x : \nfield{-200} y: \nfield{0}}
\scrBloc{mouvement}{s'orienter à \Nfield{90}}
\scrBloc{stylo}{effacer tout}
\scrBloc{stylo}{mettre la taille du stylo à \nfield{1}}
\scrBloc{donnees}{mettre \lfield{donnees}{côté} à \nfield{40}}
\repeteDeb{\nfield{4}}
    \scrBloc{ajouterblocs}{carré}
    \scrBloc{mouvement}{avancer de \tfield{donnees}{côté}}
    \scrBloc{donnees}{ajouter à \lfield{donnees}{côté} \nfield{20}}
\repeteFin
\end{Scratch}
\hfill
%
\begin{Scratch}{150}{170}{1}{1}%
%\psgrid[unit=20pt]
\setlength{\scrDy}{-10pt}% écart entre les blocs
\setlength{\scrDx}{15pt}% décalage des blocs dans bloc contrôle
\renewcommand*\cocheXbLoop{29}% = dx + cocheXa
\scrBlocFonction{carré}
\scrBloc{stylo}{stylo en position d'écriture}
\repeteDeb{\nfield{4}}
    \scrBloc{mouvement}{avancer de \tfield{donnees}{côté}}
    \scrBloc{mouvement}{tourner \larrow de \Nfield{90}  degrés }
\repeteFin
\scrBloc{stylo}{relever stylo}
\end{Scratch}
\vfill

%\includegraphics[width=12cm]{dnb2018_am-nord}




\section{DNB 2018 : Pondichéry}
\begin{Scratch}{500}{200}{1}{0}
%\psgrid[unit=10pt]
\scrBlocFlag
\scrBloc{donnees}{mettre \lfield{donnees}{score} à \nfield{0}}
\repeteDeb{\nfield{120}}
    \scrBloc{mouvement}{aller à x :
        \tfield{operateurs}{nombre aléatoire entre \nfield{-100} et \nfield{100}}
        y: 
        \tfield{operateurs}{nombre aléatoire entre \nfield{-100} et \nfield{100}}
        }
    \scrBloc{donnees}{mettre \lfield{donnees}{carré de OF} à
        \tfield{operateurs}{%
            \tfield{operateurs}{%
                \tfield{mouvement}{abscisse x} * \tfield{mouvement}{abscisse x}
            } +
            \tfield{operateurs}{%
                \tfield{mouvement}{abscisse y} * \tfield{mouvement}{abscisse y}
            }
        }
     }
     \scrBloc{donnees}{mettre \lfield{donnees}{distance} à 
         \tfield{operateurs}{~\lfield{operateurs}{racine} de \tfield{donnees}{carré de OF}}
     }        
    \siDeb{\iffield{operateurs}{\tfield{donnees}{distance} < \nfield{100}}}
        \scrBloc{donnees}{ajouter à \lfield{donnees}{score} \nfield{1}}
    \siFin
\repeteFin
\end{Scratch}

\begin{Scratch}{500}{200}{1}{0}
%\psgrid[unit=10pt]
\scrBlocFlag
\scrBloc{donnees}{mettre \lfield{donnees}{score} à \nfield{0}}
\repeteDeb{\nfield{120}}
    \scrBloc{mouvement}{aller à x :
        \tfield{operateurs}{nombre aléatoire entre \nfield{-100} et \nfield{100}}
        y: 
        \tfield{operateurs}{nombre aléatoire entre \nfield{-100} et \nfield{100}}
        }
    \scrBloc{donnees}{mettre \lfield{donnees}{carré de OF} à
        \tfield{operateurs}{%
            \tfield{operateurs}{%
                \tfield{mouvement}{abscisse x} * \tfield{mouvement}{abscisse x}
            } +
            \tfield*{operateurs}{%
%                \tfield{mouvement}{abscisse y} * \tfield{mouvement}{abscisse y}
                abscisse y * abscisse y
            }
        }
     }
     \scrBloc{donnees}{mettre \lfield{donnees}{distance} à 
         \tfield{operateurs}{~\lfield{operateurs}{racine} de \tfield*{donnees}{carré de OF}}
     }        
    \siDeb{\iffield{operateurs}{\tfield{donnees}{distance} < \nfield*{100}}}
        \scrBloc{donnees}{ajouter à \lfield{donnees}{score} \nfield{1}}
    \siFin
\repeteFin
\end{Scratch}



\begin{Scratch}[35]{500}{200}{0}{1}
%\psgrid[unit=10pt]
\scrBlocFlag
\scrBloc{donnees}{mettre \lfield{donnees}{score} à \nfield{0}}
\repeteDeb{\nfield{120}}
    \scrBloc{mouvement}{aller à x :
        \tfield{operateurs}{nombre aléatoire entre \nfield{-100} et \nfield{100}}
        y: 
        \tfield{operateurs}{nombre aléatoire entre \nfield{-100} et \nfield{100}}
        }
    \scrBloc{donnees}{mettre \lfield*{carré de OF} à
        \tfield{operateurs}{%
            \tfield{operateurs}{%
                \tfield{mouvement}{abscisse x} * \tfield{mouvement}{abscisse x}
            } +
            \tfield{operateurs}{%
                \tfield{mouvement}{abscisse y} * \tfield{mouvement}{abscisse y}
            }
        }
     }
     \scrBloc{donnees}{mettre \lfield*{distance} à 
         \tfield{operateurs}{~\lfield{operateurs}{racine} de \tfield{donnees}{carré de OF}}
     }        
    \siDeb{\iffield{operateurs}{\tfield{donnees}{distance} < \nfield{100}}}
        \scrBloc{donnees}{ajouter à \lfield{donnees}{score} \nfield{1}}
    \siFin
\repeteFin
\end{Scratch}

%\includegraphics[width=17cm]{dnb2018_pondi}


\section{Tests N. Poulain}
\begin{Scratch}[60]{200}{300}{1}{0}%
\psgrid[unit=50pt]
\scrBlocFlag
\scrBloc{stylo}{effacer tout}
\scrBloc{stylo}{stylo en position d'écriture}
\scrBloc{apparence}{mettre l'effet \lfield*{couleur} à  \nfield{0} }
\repeteDeb{\nfield{240}}
      \repeteDeb{\nfield{4}}
        \scrBloc{mouvement}{%
            avancer de \tfield{operateurs}{\tfield{donnees}{var} * \nfield{10}}}
        \siDeb{\iffield*{operateurs}{\nfield{2} < \nfield{3}}}
            \scrBloc{mouvement}{tourner \larrow de \nfield*{90}  degrés }
        \siFin
    \repeteFin
    \scrBloc{mouvement}{tourner \rarrow de \nfield{1.5} degrés }
    \scrBloc{stylo}{ajouter \nfield{1} à  la couleur du stylo }
\repeteFin
\scrBloc{stylo}{relever le stylo}
\scrBloc*{BLOC VIDE À COMPLÉTER }
\end{Scratch}
\hfill
\begin{Scratch}{170}{300}{0}{1}%
\scrBlocFlag
\scrBloc{stylo}{effacer tout}
\scrBloc{stylo}{stylo en position d'écriture}
\scrBloc{apparence}{mettre l'effet \lfield*{couleur} à  \nfield{0} }
\repeteDeb{\nfield{240}}
      \repeteDeb{\nfield{4}}
        \scrBloc{mouvement}{%
            avancer de \tfield{operateurs}{\tfield{donnees}{var} * \nfield{10}}}
        \siDeb{\iffield*{operateurs}{\nfield{2} < \nfield{3}}}
            \scrBloc{mouvement}{tourner \larrow de \nfield*{90}  degrés }
        \siFin
    \repeteFin
    \scrBloc{mouvement}{tourner \rarrow de \nfield{1.5} degrés }
    \scrBloc{stylo}{ajouter \nfield{1} à  la couleur du stylo }
\repeteFin
\scrBloc{stylo}{relever le stylo}
\scrBloc*{BLOC VIDE À COMPLÉTER }
\end{Scratch}


\begin{Scratch}{200}{70}{20}{1}%
%\psgrid[unit=20pt]
\setlength{\scrDy}{-15pt}
\scrBlocevent{quand \lfield*{fleche droite} est pressé}
\scrBloc{mouvement}{s'orienter à  \nfield*{90} }
\scrBloc{mouvement}{%
    avancer de \tfield*{operateurs}{\tfield{donnees}{var} + \nfield{2} }}
\scrBloc*{ BLOC VIDE À COMPLÉTER }
\end{Scratch}



\section{Tests minipages, tableaux}

\begin{tabular}{l@{\hspace{1cm}}l}
\hline\hline
\begin{Scratch}{200}{70}{20}{1}%
%\psgrid[unit=20pt]
\setlength{\scrDy}{-15pt}
\scrBlocevent{quand \lfield*{fleche droite} est pressé}
\scrBloc{mouvement}{s'orienter à  \nfield*{90} }
\scrBloc{mouvement}{%
    avancer de \tfield*{operateurs}{\tfield{donnees}{var} + \nfield{2} }}
\scrBloc*{ BLOC VIDE À COMPLÉTER }
\end{Scratch}
&
\begin{Scratch}{200}{70}{0}{0}%
%\psgrid[unit=20pt]
\scrBlocevent{quand \lfield*{fleche droite} est pressé}
\scrBloc{mouvement}{s'orienter à  \nfield*{90} }
\scrBloc{mouvement}{%
    avancer de \tfield*{operateurs}{\tfield{donnees}{var} + \nfield{2} }}
\scrBloc*{ BLOC VIDE À COMPLÉTER }
\end{Scratch}\\
\hline\hline
\end{tabular}



\begin{minipage}{.4\linewidth}
\begin{Scratch}{200}{70}{0}{1}%
%\psgrid[unit=20pt]
\setlength{\scrDy}{-15pt}
\scrBlocevent{quand \lfield*{fleche droite} est pressé}
\scrBloc{mouvement}{s'orienter à  \nfield*{90} }
\scrBloc{mouvement}{%
    avancer de \tfield*{operateurs}{\tfield{donnees}{var} + \nfield{2} }}
\scrBloc*{ BLOC VIDE À COMPLÉTER }
\end{Scratch}
\end{minipage}
\hfill
%
\begin{minipage}{.4\linewidth}
\begin{Scratch}{200}{70}{10}{0}%
%\psgrid[unit=20pt]
\scrBlocevent{quand \lfield*{fleche droite} est pressé}
\scrBloc{mouvement}{s'orienter à  \nfield*{90} }
\scrBloc{mouvement}{%
    avancer de \tfield*{operateurs}{\tfield{donnees}{var} + \nfield{2} }}
\scrBloc*{ BLOC VIDE À COMPLÉTER }
\end{Scratch}
\end{minipage}
\medskip

l'instruction 
\raisebox{-14pt}{%
\begin{Scratch}[0]{93}{25}{0}{1}
    %\psgrid[unit=10pt]%
    \scrBloc{mouvement}{s'orienter à \Nfield{90}}
\end{Scratch}
}
signifie que\dots

\begin{Scratch}{200}{70}{0}{0}%
%\psgrid[unit=20pt]
\scrBlocevent{quand \lfield*{fleche droite} est pressé}
\scrBloc{mouvement}{s'orienter à  \nfield*{90} }
\scrBloc{apparence}{dire \Tfield{je te vois !}}
\end{Scratch}
\hfill
%

\begin{Scratch}{220}{80}{0}{1}
\psgrid[unit=20pt]
\scrBlocevent{Quand \lfield{evenements}{n'importe quoi} est cliqué}
\siDeb{\iffield{capteurs}{\lfield{capteurs}{balle} touché ?}}
    \scrBloc{apparence}{dire \Tfield{Je t'ai attrapé} pendant \nfield{2} secondes}
    \scrBloc{ajouterblocs}{Départ}
\siFin
\end{Scratch}



\newpage
\section{Stages PAF}

\subsection{Fabophilie}
Combien de galettes faut-il manger pour obtenir la collection de 10 fèves ?


\begin{Scratch}{450}{380}{1}{0}%
%\psgrid[unit=20pt]
\scrBlocFlag
\scrBloc{donnees}{supprimer tous les éléments de la liste 
     \lfield{donnees}{numFeve}}
\scrBloc{donnees}{mettre \lfield{donnees}{k} à \nfield{0}}
\repeteDeb{\nfield{10}}
    \scrBloc{donnees}{insérer \nfield{0} en position \tfield{donnees}{k} %
        de \lfield{donnees}{numFeve}}
    \scrBloc{donnees}{ajouter \nfield{1} à  \lfield{donnees}{k} }
\repeteFin
\tantqueDeb{répéter jusqu'à 
    \iffield{operateurs}{non \iffield{donnees}{
        \lfield{donnees}{numFeve} contient \nfield{0} ?
        }}
    }
    \scrBloc{donnees}{mettre \lfield{donnees}{k} à \tfield{operateurs}
        {nombre aléatoire entre \nfield{1} et \nfield{10}}}
    \scrBloc{donnees}{remplacer l'élément \tfield{donnees}{k} de la liste
        \lfield{donnees}{numFeve} par \tfield{operateurs}{
            \tfield{donnees}{élément \tfield{donnees}{k} de \lfield{donnees}
            {numFeve}} + \nfield{1}}
            }
\tantqueFin
\scrBloc{donnees}{mettre \lfield{donnees}{nbGalettes} à \nfield{0}}
\scrBloc{donnees}{mettre \lfield{donnees}{k} à \nfield{1}}
\repeteDeb{\nfield{10}}
    \scrBloc{donnees}{ajouter \tfield{donnees}{élément \tfield{donnees}{k}
        de \lfield{donnees}{numFeve}} à \tfield{donnees}{nbGalettes}}
    \scrBloc{donnees}{ajouter \nfield{1} à \lfield{donnees}{k}}
\repeteFin
\end{Scratch}



\subsection{Anniversaires}
Probabilité d'avoir deux élèves qui ont la même date d'anniversaire (dans une
classe de 30 élèves)



\begin{Scratch}{360}{250}{1}{0}
%\psgrid[unit=10pt]
\scrBlocFlag
\scrBloc{donnees}{mettre \lfield{donnees}{message} à \Tfield{"dates différentes"}}
\scrBloc{donnees}{mettre \lfield{donnees}{compteur} a \nfield{1}}
\scrBloc{donnees}{supprimer l'élément \tfield{donnees}{tout} de la liste 
    \lfield{donnees}{dates\_anniv}}
\tantqueDeb{répéter jusqu'à \iffield{operateurs}{\tfield{donnees}{compteur} > \nfield{30}}}
     \scrBloc{donnees}{mettre \lfield{donnees}{jour} à 
         \tfield{operateurs}{nombre aléatoire entre \nfield{1} et \nfield{365}}}
     \siDeb{\iffield{donnees}{
             \lfield{donnees}{dates\_anniv} contient \tfield{donnees}{jour} ?}}
         \scrBloc{donnees}{mettre \lfield{donnees}{message} à 
              \Tfield{"2 élèves ont la même date d'anniversaire"}}
         \scrBloc{controle}{stop \lfield{controle}{tout}}
     \siNon    
        \scrBloc{donnees}{ajouter \tfield{donnees}{jour} à     
            \lfield{donnees}{dates\_anniv}}
     \siFin
\tantqueFin
\end{Scratch}

\begin{Scratch}{350}{245}{0}{1}
%\psgrid[unit=10pt]
\scrBlocFlag
\scrBloc{donnees}{mettre \lfield{donnees}{message} à \Tfield{"dates différentes"}}
\scrBloc{donnees}{mettre \lfield{donnees}{compteur} a \nfield{1}}
\scrBloc{donnees}{supprimer l'élément \tfield{donnees}{tout} de la liste 
    \lfield{donnees}{dates\_anniv}}
\tantqueDeb{répéter jusqu'à \iffield{operateurs}{\tfield{donnees}{compteur} > \nfield{30}}}
     \scrBloc{donnees}{mettre \lfield{donnees}{jour} à 
         \tfield{operateurs}{nombre aléatoire entre \nfield{1} et \nfield{365}}}
     \siDeb{\iffield{donnees}{
             \lfield{donnees}{dates\_anniv} contient \tfield{donnees}{jour} ?}}
         \scrBloc{donnees}{mettre \lfield{donnees}{message} à 
              \Tfield{"2 élèves ont la même date d'anniversaire"}}
         \scrBloc{controle}{stop \lfield{controle}{tout}}
     \siNon    
        \scrBloc{donnees}{ajouter \tfield{donnees}{jour} à     
            \lfield{donnees}{dates\_anniv}}
     \siFin
\tantqueFin
\end{Scratch}



\end{document}
