\documentclass[a4paper,11pt]{article} \usepackage{array} \usepackage{multirow} \usepackage{lastpage} \usepackage{verbatim} \usepackage[francais]{babel} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{tikz} \usetikzlibrary{calc} \usepackage{amsfonts,amsmath,amssymb,mathrsfs,amsthm} \usepackage{fancyhdr} \usepackage{lmodern} \usepackage{ScratchX} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %----------------------------------- SI ALORS TOUTE BLANCHE----------------------------------------------------------- \newcommand{\whitesailors}[2]{%loop with as many blocks as we want % Créer un compteur à chaque passage dans cette boucle. % l'incrémenter du nombre de fois où ce décalage s'opère % décaler en abscisse : ajouter 0,4 à x % mettre le compteur NbreComptr à NbreComptr+1 \ifthenelse{\value{NbrCptrLoupeDuplicate}=0}%aucun compteurs loupe créés { \ifthenelse{\value{CompteurMax}=0} {\loope{\theNbrCptrLoupe}{#2}} { \ifthenelse{\value{NbrCptrLoupe}<\value{CompteurMax}}%\or\value{NbrCptrLoupe}=\value{CompteurMax}} {\looope{\theNbrCptrLoupe}{#2}} {\loope{\theNbrCptrLoupe}{#2}}%pour ne pas recréer des compteurs déjà créés } } {\looope{\theNbrCptrLoupe}{#2}} \ifthenelse{\value{NbrCptrAlorsDuplicate}=0}%aucun compteurs aloors créés {\sialoors{#1}} {\sialooors{#1}}%pour ne pas recréer des compteurs déjà créés \settowidth{\malongueuR}{\pgfinterruptpicture #1 \endpgfinterruptpicture} \FPeval{X}{\x+(0.4)*\thedecalageX} \FPeval{Y}{\y+(neg 0.66)*(\thedecalageY)} %\StrLen{#1}[\valeur]% pour ajuster la longueur de la boîte en fonction de la longueur du texte \FPeval{b}{neg 0.1+Y}\FPeval{c}{0.36+Y}\FPeval{d}{0.1+X} \FPeval{e}{0.46+Y}\FPeval{f}{0.4+X}\FPeval{g}{0.5+X}\FPeval{h}{0.7+X}\FPeval{i}{0.8+X}\FPeval{j}{0.7+(X)} \FPeval{ii}{1.2+X}\FPeval{iii}{1.1+X}\FPeval{iiii}{0.9+X}\FPeval{gg}{0.6+X} \FPeval{l}{neg 0.2+(Y)}\FPeval{m}{neg 0.3+(Y)}\FPeval{o}{0.1+(Y)} %top %bottom#1 \FPeval{mm}{neg 0.1+(neg 0.66)*(#2)+(Y)} \FPeval{mmm}{neg 0.2+(neg 0.66)*(#2)+(Y)}\FPeval{mmmm}{neg 0.3+(neg 0.66)*(#2)+(Y)}\FPeval{M}{neg 0.75+(neg 0.66)*(#2)+(Y)}\FPeval{MM}{neg 0.85+(neg 0.66)*(#2)+(Y)}\FPeval{MN}{neg 0.95+(neg 0.66)*(#2)+(Y)}\FPeval{MMM}{neg 0.55+(neg 0.66)*(#2)+(Y)}\FPeval{MMMM}{MMM-0.02}\FPeval{JJ}{j+0.02}%adjusting the height of the bottom \coordinate (A) at ($(\d,\e) ! \malongueuR ! (\f,\e)$); \coordinate (AA) at ($(\X,\c) ! \malongueuR+0.2cm ! (\g,\c)$); \coordinate (BB) at ($(\X,\M) ! \malongueuR+0.2cm ! (\f,\M)$); \coordinate (B) at ($(\g,\mmm) ! \malongueuR-0.4cm ! (\i,\mmm)$); \multido{\i=1+1}{\value{NbrCptrLoupe}}{%Fait défiler tous les compteurs jusqu'au nombre de compteurs : si compteur différent de -1 : % si différent de 0, leur enlever 1. / si égal à 0 : enlever 1 à décalageX et mettre le compteur correspondant à -1. \ifthenelse{\value{loupe\i}>-1}{ \ifthenelse{\value{loupe\i}=0} {\addtocounter{decalageX}{-1}\addtocounter{decalageY}{1}\setcounter{loupe\i}{-1}} {\addtocounter{loupe\i}{-1}} }{} } \addtocounter{decalageX}{1} \addtocounter{decalageY}{1} } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \pagestyle{fancy} \fancyhead{} \fancyhead[LE,LO]{\em \LaTeX} \fancyhead[CE,CO]{\Large \textsc{Le paquet \texttt{ScratchX.sty}}} \fancyhead[RE,RO]{\em 2016--2017} \fancyfoot[CE,CO]{\thepage /\pageref{LastPage}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %----------------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------------% \section*{ \centering{ \begin{Scratch} \beginbox{Guide d'utilisation du paquet \cb[ope]{ScratchX.sty\ }} \end{Scratch} } } \begin{center} \begin{Scratch} \scbox{Thibault Ralet}{ctrl} \scbox{mars \rb{2017}}{data} \end{Scratch} \end{center} \noindent\rule{\linewidth}{.5pt} \parbox{1ex}{\Scratchy[0.1][0.1]}\\ \hspace{1cm}\parbox{1ex}{\Scratchy[0.2][0.2]}\\ \hspace{2cm}\parbox{1ex}{\Scratchy[0.5][1]}\\ \hspace{5cm}\parbox{1ex}{\Scratchy[0.75][1.5]}\\ %----------------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------------% \section{Introduction} Le paquet \texttt{ScratchX.sty} permet d'écrire n'importe quel programme Scratch en \LaTeX. Le paquet \texttt{ScratchX.sty} doit être mis dans le même dossier que celui dans lequel le fichier \texttt{.tex} est créé, ou dans le dossier dédié aux packages de l'éditeur de fichiers .tex. Le paquet\texttt{ScratchX.sty} doit être appelé dans le préambule du fichier \texttt{.tex} par : \begin{verbatim} \usepackage{ScratchX} \end{verbatim} Le paquet \texttt{ScratchX.sty} utilise les paquets suivants : \begin{verbatim} \usepackage[nomessages]{fp} \usepackage{calc} \usepackage{xstring} \usepackage[alpine]{ifsym}%pour avoir VarFlag comme %drapeau de départ de Scratch \usepackage{ifthen} \usepackage{multido} \usepackage{xargs} \end{verbatim} Dans le document \texttt{.tex} créé, il faut charger : \begin{verbatim} \usepackage{tikz} \usetikzlibrary{calc} \end{verbatim} et aussi : \begin{verbatim} \usepackage{amssymb} \end{verbatim} La compilation peut s'effectuer en XeLaTeX ou en pdfLaTeX. \newpage %----------------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------------% \section{Description générale} On écrit un programme (ou simplement une commande) Scratch à l'aide de l'environnement : \begin{verbatim} \begin{Scratch} %commandes LaTeX pour créer les commandes Scratch \end{Scratch} \end{verbatim} La commande \texttt{\textbackslash begin\{Scratch\}} admet en option l'échelle (1 par défaut). Ainsi,\texttt{\textbackslash begin\{Scratch\}[2]} double la taille du programme, alors que \texttt{\textbackslash begin\{Scratch\}[0.7]} réduit de 70\% la taille du programme créé. \begin{center} \begin{tabular}{cc} \begin{Scratch}[1] \scbox{taille par défaut}{app} \end{Scratch} & \begin{Scratch}[2] \scbox{plus gros}{app} \end{Scratch}\\ & \begin{Scratch}[0.7] \scbox{plus petit}{app} \end{Scratch} \end{tabular} \end{center} %----------------------------------------------------------------------------------------------------------------------------------% \subsection*{Les couleurs} Les dix couleurs spécifiques à Scratch sont définies ainsi : \begin{center} \begin{tabular}{c@{:\quad}cp{1cm}c@{:\quad }c}\hline mvt&\textcolor{mvt}{Mouvement}&&evt&\textcolor{evt}{Evénements}\\ app&\textcolor{app}{Apparence}&&ctrl&\textcolor{ctrl}{Contrôle}\\ son&\textcolor{son}{Sons}&&capt&\textcolor{capt}{Capteurs}\\ stylo&\textcolor{stylo}{Stylo}&&ope&\textcolor{ope}{Opérateurs}\\ data&\textcolor{data}{Données}&&bloc&\textcolor{bloc}{Ajouter blocs}\\\hline \end{tabular} \end{center} \newpage %----------------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------------% \section{Liste des commandes} %----------------------------------------------------------------------------------------------------------------------------------% \subsection{Commandes Scratch simples} On les obtient avec \texttt{\textbackslash scbox\{\}\{\}}. En tapant : \begin{verbatim} \begin{Scratch} \scbox{rebondir si le bord est atteint}{mvt} \scbox{cacher}{app} \scbox{arrêter tous les sons}{son} \scbox{stylo en position d'écriture}{stylo} \scbox{réinitialiser le chronomètre}{capt} \end{Scratch} \end{verbatim} on obtient :\\ \begin{Scratch} \scbox{rebondir si le bord est atteint}{mvt} \scbox{cacher}{app} \scbox{arrêter tous les sons}{son} \scbox{stylo en position d'écriture}{stylo} \scbox{réinitialiser le chronomètre}{capt} \end{Scratch} %----------------------------------------------------------------------------------------------------------------------------------% \subsection{Commandes Scratch spéciales} \subsubsection{\'Evénement}%%%%%%%%%%%%%%%%%%%%%%%% On les obtient avec \texttt{\textbackslash beginbox\{\}}. \texttt{\textbackslash beginbox\{\}} produit \parbox{1ex}{\begin{Scratch}\beginbox{}\end{Scratch}} \texttt{\textbackslash beginbox\{clone\}} produit \parbox{1ex}{\begin{Scratch}\beginbox{clone}\end{Scratch}} \texttt{\textbackslash beginbox\{quand ce lutin est cliqué\}} produit \hfill\parbox{6cm}{\begin{Scratch}\beginbox{quand ce lutin est cliqué}\end{Scratch}} \subsubsection{Tourner}%%%%%%%%%%%%%%%%%%%%%%%% On les obtient avec \texttt{\textbackslash turnbox\{\}\{\}}.\\ \texttt{\textbackslash turnbox\{\}\{-145\}} produit \raisebox{-3mm}{\begin{Scratch}\turnbox{}{-145}\end{Scratch}} \texttt{\textbackslash turnbox\{gauche\}\{30\}} produit \raisebox{-3mm}{\begin{Scratch}\turnbox{gauche}{30}\end{Scratch}} On peut également écrire \texttt{\textbackslash turnbox\{g\}\{30\}} ou \texttt{\textbackslash turnbox\{G\}\{30\}} \subsubsection{Boucles}%%%%%%%%%%%%%%%%%%%%%%%% On les obtient avec \texttt{\textbackslash boucle\{\}\{\}\{\}}, où est un entier égal à 1 (\emph{répéter $x$ fois} ou \emph{répéter jusqu'à}) ou -1 (\emph{répéter indéfiniment}).\\ \parbox{0.53\linewidth}{\texttt{\textbackslash boucle\{répéter \$x\$ fois\}\{2\}\{1\}} \par \texttt{\textbackslash scbox\{deux blocs\}\{red\}} \par \texttt{\textbackslash scbox\{dans la boucle\}\{gray\}} } \parbox{0.12\linewidth}{produit} \parbox{0.2\linewidth}{\raisebox{-3mm}{ \begin{Scratch}[0.9] \boucle{répéter $x$ fois}{2}{1} \scbox{deux blocs}{red} \scbox{dans la boucle}{gray} \end{Scratch}}} \begin{center} \begin{tabular}{lcr} \texttt{\textbackslash boucle\{répéter indéfiniment\}\{3\}\{-1\}}&&\multirow{3}{*}{\begin{Scratch}[0.9] \boucle{répéter indéfiniment}{3}{-1} \scbox{cette fois-ci}{pink} \scbox{trois blocs}{blue} \scbox{dans la boucle}{purple} \end{Scratch}}\\ \texttt{\textbackslash scbox\{cette fois-ci\}\{pink\}}&&\\ \texttt{\textbackslash scbox\{trois blocs\}\{blue\}}&&\\ \texttt{\textbackslash scbox\{dans la boucle\}\{purple\}}&&\\ &&\\ &&\\ \end{tabular}\end{center} \emph{Attention, lorsque l'on souhaite placer des boucles dans des boucles, il faut repenser le nombre de blocs de la boucle principale ! En effet, une boucle compte pour deux blocs (sans les blocs contenus à l'intérieur).} \subsubsection{Si \dots\ Alors}%%%%%%%%%%%%%%%%%%%%%%%% \emph{Attention, on obtient cette commande Scratch avec la même syntaxe que précédemment, à savoir :} \texttt{\textbackslash boucle\{\}\{\}\{2\}}.\\ \parbox{0.53\linewidth}{\texttt{\textbackslash boucle\{si 4 > 5 alors\}\{1\}\{2\}} \par \texttt{\textbackslash scbox\{rien ne va plus !\}\{app\}} } \parbox{0.12\linewidth}{produit} \parbox{0.2\linewidth}{\raisebox{-3mm}{ \begin{Scratch}[0.9] \boucle{si 4 > 5 alors}{1}{2} \scbox{rien ne va plus !}{app} \end{Scratch}}} Remarque : pour connaître comment bien écrire le test du si, voir \emph{les petites boîtes} à la section 3.3. \subsubsection{Si \dots\ Alors \dots\ Sinon}%%%%%%%%%%%%%%%%%%%%%%%% On les obtient avec \texttt{\textbackslash sailors\{\}\{\}} et \texttt{\textbackslash simenon\{\}}.\\ En tapant : \begin{verbatim} \begin{Scratch} \sailors{si cet exemple est parlant alors}{1} \scbox{tout va bien}{app} \simenon{2} \scbox{ne pas paniquer}{stylo} \scbox{voir la section \emph{Exemples}}{capt} \end{Scratch} \end{verbatim} on obtient :\\ \begin{Scratch} \sailors{si cet exemple est parlant alors}{1} \scbox{tout va bien}{app} \simenon{2} \scbox{ne pas paniquer}{stylo} \scbox{voir la section \emph{Exemples}}{capt} \end{Scratch} \subsubsection{Ajouter blocs}%%%%%%%%%%%%%%%%%%%%%%%% On les obtient avec \texttt{\textbackslash blocbox\{\}}.\\ \texttt{\textbackslash blocbox\{triangle\}} produit \raisebox{-3mm}{\begin{Scratch}\blocbox{triangle}\end{Scratch}} \subsubsection{Contrôle spécial}%%%%%%%%%%%%%%%%%%%%%%%% Cela concerne \raisebox{-3mm}{\begin{Scratch}\kbox{stop \rb{tout}}\end{Scratch}}\hspace{-1cm} et \raisebox{-2mm}{\begin{Scratch}\kbox{supprimer ce clone}\end{Scratch}}\hspace{-1cm}. Ces commandes s'obtiennent avec \texttt{\textbackslash kbox\{\}}. %----------------------------------------------------------------------------------------------------------------------------------% \subsection{À l'intérieur des commandes Scratch : les petites boîtes} Comment obtenir certaines commandes plus évoluées, comme par exemple : \raisebox{-3mm}{\begin{Scratch}\kbox{stop \rb{tout}}\end{Scratch}}\hspace{-1cm} ? Comment écrire \raisebox{-3mm}{\begin{Scratch}\scbox{attendre jusqu'à \hb[capt]{couleur \sqb{orange} touche \sqb{green} ?}}{ctrl}\end{Scratch}}\hspace{-1cm} ? ou \raisebox{-3mm}{\begin{Scratch}\scbox{aller à \rb{pointeur de souris}}{mvt}\end{Scratch}}\hspace{-1cm} ? ou encore \raisebox{-3mm}{\begin{Scratch} \scbox{ajouter \cb[ope]{nombre aléatoire entre \cb[w]{1} et \cb[w]{10}} au volume}{son}\end{Scratch}}\hspace{-1cm} ? \subsubsection{Les petites boîtes rectangulaires}%%%%%%%%%%%%%%%%%%%%%%%% \begin{itemize} \item Dans les \texttt{\textbackslash scbox} : on les obtient avec \texttt{\textbackslash rb[]\{\}}\\ \item dans les \texttt{\textbackslash beginbox} : on les obtient avec \texttt{\textbackslash rbb[]\{\}}\\ \end{itemize} Dans les deux cas, a par défaut la couleur de la boîte dans laquelle il est inscrit. Pour obtenir une boîte rectangulaire blanche, il suffit de mettre à white ou w.\\ En tapant : \begin{verbatim} \begin{Scratch} \scbox{jouer le son \rb{miaou}}{son} \scbox{penser à \rb[white]{Hmm\dots}}{app} \scbox{demander \rb[w]{What's your name?} et attendre}{capt} \end{Scratch} \end{verbatim} on obtient :\\ \begin{Scratch} \scbox{jouer le son \rb{miaou}}{son} \scbox{penser à \rb[white]{Hmm\dots}}{app} \scbox{demander \rb[w]{What's your name?} et attendre}{capt} \end{Scratch} \subsubsection{Les petites boîtes circulaires}%%%%%%%%%%%%%%%%%%%%%%%% Elles sont en creux ou en relief. On les obtient avec \texttt{\textbackslash cb[]\{\}}\\ Par défaut, est de la couleur de la boîte dans laquelle la boîte circulaire est insérée. Si est white ou w, la boite circulaire est en creux.\\ En tapant : \begin{verbatim} \begin{Scratch} \scbox{mettre la transparence vidéo à \cb{réponse} \%}{capt} \scbox{aller à x:\cb[w]{x} y:\cb[white]{y}}{mvt} \scbox{ajouter \cb[data]{variable} au tempo}{son} \end{Scratch} \end{verbatim} on obtient :\\ \begin{Scratch} \scbox{mettre la transparence vidéo à \cb{réponse} \%}{capt} \scbox{aller à x:\cb[w]{x} y: \cb[white]{y}}{mvt} \scbox{ajouter \cb[data]{variable} au tempo}{son} \end{Scratch} \subsubsection{Les petites boîtes hexagonales}%%%%%%%%%%%%%%%%%%%%%%%% Elles ne concernent que les commandes \emph{Capteurs} et \emph{Opérateurs}. On les obtient avec \texttt{\textbackslash hb[]\{\}}\\ Par défaut, est ope. En tapant : \begin{verbatim} \begin{Scratch} \boucle{si \hb{\cb[data]{variable}=\rb[w]{10}} alors}{1}{1} \scbox{attendre jusqu'à \hb[capt]{souris pressée?}}{ctrl} \end{Scratch} \end{verbatim} on obtient :\\ \begin{Scratch} \boucle{si \hb{\cb[data]{variable}=\rb[w]{10}} alors}{1}{1} \scbox{attendre jusqu'à \hb[capt]{souris pressée?}}{ctrl} \end{Scratch} \subsubsection{Les petites boîtes carrées}%%%%%%%%%%%%%%%%%%%%%%%% Elles ne concernent que les carrés de couleur. On les obtient avec \texttt{\textbackslash sqb\{\}}\\ En tapant : \begin{verbatim} \begin{Scratch} \scbox{mettre la couleur du stylo à \sqb{brown}}{stylo} \end{Scratch} \end{verbatim} on obtient : \raisebox{-3mm}{\begin{Scratch} \scbox{mettre la couleur du stylo à \sqb{brown}}{stylo} \end{Scratch}} %----------------------------------------------------------------------------------------------------------------------------------% \subsection{Des commandes plus riches} \begin{Scratch}%%%%%%%%%%%%%%%%%%%%%%%% 1 \beginbox{clone} \boucle{répéter jusqu'à \hb[capt]{couleur \sqb{black} touche \sqb{yellow} ? }}{1}{1} \scbox{aller à x: \cb[ope]{\cb[data]{x}+\cb[w]{10}} y: \cb[data]{y}}{mvt} \boucle{si \hb{\cb[data]{y}<\cb[capt]{réponse}} alors}{3}{1} \scbox{mettre \rb{y} à \cb[son]{volume}}{data} \scbox{dire \rb[w]{Hello!} pendant \cb[capt]{distance de \rb{pointeur de souris} } secondes}{app} \kbox{stop \rb{tout}} \turnbox{2}{-146} \end{Scratch} Obtenu avec : \begin{verbatim} \begin{Scratch} \beginbox{clone} \boucle{répéter jusqu'à \hb[capt]{couleur \sqb{black} touche \sqb{yellow} ? }}{1}{1} \scbox{aller à x: \cb[ope]{\cb[data]{x}+\cb[w]{10}} y: \cb[data]{y}}{mvt} \boucle{si \hb{\cb[data]{y}<\cb[capt]{réponse}} alors}{3}{1} \scbox{mettre \rb{y} à \cb[son]{volume}}{data} \scbox{dire \rb[w]{Hello!} pendant \cb[capt]{distance de \rb{pointeur de souris}} secondes}{app} \kbox{stop \rb{tout}} \turnbox{2}{-146} \end{Scratch} \end{verbatim} %----------------------------------------------------------------------------------------------------------------------------------% \subsection{Autre type de commandes} \subsubsection{Dans les boucles}%%%%%%%%%%%%%%%%%%%%%% La commande \texttt{\textbackslash blank} ne s'emploie (artificiellement) que lorsque dans le programme Scratch, deux boucles se terminent l'une après l'autre.\\ En tapant : \begin{verbatim} \begin{Scratch} \boucle{répéter \cb[w]{3} fois}{4}{1} \scbox{avancer de \cb[w]{10}}{mvt} \boucle{répéter \cb[w]{5} fois}{1}{1} \scbox{ajouter \cb[w]{10} à x}{mvt} \scbox{ce bloc ne va pas}{data} \end{Scratch} \end{verbatim} on obtient :\\ \begin{Scratch} \boucle{répéter \cb[w]{3} fois}{4}{1} \scbox{avancer de \cb[w]{10}}{mvt} \boucle{répéter \cb[w]{5} fois}{1}{1} \scbox{ajouter \cb[w]{10} à x}{mvt} \scbox{ce bloc ne va pas}{data} \end{Scratch} \vspace{0.5cm} Alors qu'en tapant : \begin{verbatim} \begin{Scratch} \boucle{répéter \cb[w]{3} fois}{4}{1} \scbox{avancer de \cb[w]{10}}{mvt} \boucle{répéter \cb[w]{5} fois}{1}{1} \scbox{ajouter \cb[w]{10} à x}{mvt} \blank \scbox{ce bloc est bien placé}{data} \end{Scratch} \end{verbatim} on obtient :\\ \begin{Scratch} \boucle{répéter \cb[w]{3} fois}{4}{1} \scbox{avancer de \cb[w]{10}}{mvt} \boucle{répéter \cb[w]{5} fois}{1}{1} \scbox{ajouter \cb[w]{10} à x}{mvt} \blank \scbox{ce bloc est bien placé}{data} \end{Scratch} \vspace{0.5cm} Noter que si l'on tape : \begin{verbatim} \begin{Scratch} \boucle{répéter \cb[w]{3} fois}{5}{1} \scbox{avancer de \cb[w]{10}}{mvt} \boucle{répéter \cb[w]{5} fois}{1}{1} \scbox{ajouter \cb[w]{10} à x}{mvt} \scbox{ce bloc est placé autrement}{data} \end{Scratch} \end{verbatim} on obtient :\\ \begin{Scratch} \boucle{répéter \cb[w]{3} fois}{5}{1} \scbox{avancer de \cb[w]{10}}{mvt} \boucle{répéter \cb[w]{5} fois}{1}{1} \scbox{ajouter \cb[w]{10} à x}{mvt} \scbox{ce bloc est placé autrement}{data} \end{Scratch} \subsubsection{Dessiner le chat} Le chat de la couverture est obtenu en appelant la commande : \texttt{\small\textbackslash Scratchy[<échelle>][]} Par défaut, l'échelle est 0.25 et la largeur des lignes est fixée à 0.25 pt.\\ Voici le code écrit pour la couverture : \begin{verbatim} \parbox{1ex}{\Scratchy[0.1][0.1]}\\ \hspace{1cm}\parbox{1ex}{\Scratchy[0.2][0.2]}\\ \hspace{2cm}\parbox{1ex}{\Scratchy[0.5][1]}\\ \hspace{5cm}\parbox{1ex}{\Scratchy[0.75][1.5]}\\ \end{verbatim} \newpage %----------------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------------% \section{Problèmes connus et solutions} \begin{enumerate} \item On n'a pas le petit triangle dans la commande \emph{s'orienter à} (mouvement). Il faut le placer à la main. \begin{verbatim} \scbox{s'orienter à \cb[w]{90 \scriptsize$\blacktriangledown$}}{mvt} \end{verbatim} \raisebox{-3mm}{\begin{Scratch}\scbox{s'orienter à \cb[w]{90 \scriptsize$\blacktriangledown$}}{mvt}\end{Scratch}}\\ \item La hauteur des boîtes est fixée. Ainsi, on ne peut pas imbriquer beaucoup de sous-commandes dans des commandes Scratch.\\ \item Lorsque l'on insère une seule commande Scratch dans du texte, elle n'est pas centrée verticalement. On peut la réajuster avec un \texttt{\textbackslash raisebox\{-3mm\}}.\\ \item Il y a un également un décalage horizontal. À la fin d'un environnement Scratch, il faut souvent ajouter un \texttt{\textbackslash hspace\{-1cm\}}.\\ \item Le temps de compilation est parfois assez long. \end{enumerate} %----------------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------------% \section{Résumé des commandes} \begin{tabular}{m{5cm}l}%%%%%%%%%% \texttt{\small\textbackslash beginbox\{\}} &\begin{Scratch}[0.75] \beginbox{} \end{Scratch} \\%%%%%%%%%% \texttt{\small\textbackslash beginbox\{\}} \tiny(quand ce lutin est cliqué) &\begin{Scratch}[0.75] \beginbox{quand ce lutin est cliqué} \end{Scratch}\\%%%%%%%%%% \texttt{\small\textbackslash beginbox\{clone\}} &\begin{Scratch}[0.75] \beginbox{clone} \end{Scratch} \\%%%%%%%%%% \texttt{\small\textbackslash blocbox\{\}} &\begin{Scratch}[0.75] \blocbox{fonction} \end{Scratch} \\%%%%%%%%%% \texttt{\small\textbackslash turnbox\{\}\{90\}} &\begin{Scratch}[0.75] \turnbox{}{90} \end{Scratch}\\%%%%%%%%%% \texttt{\small\textbackslash turnbox\{g\}\{-270\}} \tiny(ou ou ou ) &\begin{Scratch}[0.75] \turnbox{g}{-270} \end{Scratch} \\%%%%%%%%%% \texttt{\small\textbackslash scbox\{\}\{\}} &\begin{Scratch}[0.75] \scbox{texte et couleur que l'on veut}{purple} \end{Scratch}\\%%%%%%%%%% \texttt{\small\textbackslash boucle\{répéter\}\{2\}\{1\}} \tiny(\{\}\{\}\{\}) \vspace{3cm} &\begin{Scratch}[0.75] \boucle{répéter}{2}{1} \end{Scratch}\vspace{-1.5cm} \\%%%%%%%%%% \texttt{\small\textbackslash boucle\{répéter indéfiniment\}\{1\}\{-1\}} \tiny(\{\}\{\}\{\}) \vspace{2cm} &\begin{Scratch}[0.75] \boucle{répéter indéfiniment}{1}{-1} \end{Scratch}\vspace{-1.2cm} \\%%%%%%%%%% \texttt{\small\textbackslash boucle\{si \dots alors\}\{1\}\{2\}} \tiny(\{\}\{\}\{\}) \vspace{2cm} &\begin{Scratch}[0.75] \boucle{si \dots alors}{1}{2} \end{Scratch}\vspace{-1.2cm} \\%%%%%%%%%% \texttt{\small\textbackslash sailors\{si\dots alors\dots\}\{2\}} \tiny(\{\}\{\}) \vspace{2cm} &\begin{Scratch}[0.75] \sailors{si\dots alors\dots}{2} \end{Scratch}\vspace{-1cm} \\%%%%%%%%%% \texttt{\small\textbackslash simenon\{\}} \tiny(ici, \textbackslash simenon\{1\}) \vspace{2.2cm} &\begin{Scratch}[0.75] \whitesailors{il faut que ce }{1} \simenon{1} \end{Scratch}\vspace{-1.2cm} \\%%%%%%%%%% \texttt{\small\textbackslash kbox\{\}} &\begin{Scratch}[0.75] \kbox{supprimer ce clone} \end{Scratch} \\%%%%%%%%%% \end{tabular} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{tabular}{m{5cm}l} \texttt{\small\textbackslash rb\{\}} \tiny (\texttt{\textbackslash rb\{variable\}}) &\begin{Scratch}[0.75] \scbox{\phantom{tex} \rb{variable} \phantom{tex}}{data} \end{Scratch} \\ \texttt{\small\textbackslash rb[w]\{\}} \tiny(ou \texttt{\textbackslash rb[white]\{\}}) &\begin{Scratch}[0.75] \scbox{\phantom{tex} \rb[w]{texte} }{data} \end{Scratch} \\ \texttt{\small\textbackslash rbb\{\}} \tiny(uniquement pour \texttt{\textbackslash beginbox}) \texttt{\textbackslash beginbox\{quand je reçois \textbackslash rbb\{message1\}\}} &\begin{Scratch}[0.75] \beginbox{quand je reçois \rbb{message1}} \end{Scratch} \\ \texttt{\small\textbackslash cb\{\}} \tiny(transparent) &\begin{Scratch}[0.75] \scbox{\phantom{rex} \cb{réponse}}{ctrl} \end{Scratch} \\ \texttt{\small\textbackslash cb[w]\{\}} \tiny(ou \textbackslash cb[white]\{\}) &\begin{Scratch}[0.75] \scbox{\phantom{rex} \cb[w]{réponse}}{ctrl} \end{Scratch} \\ \texttt{\small\textbackslash cb[]\{\}} \texttt{\tiny\textbackslash cb[ope]\{réponse\}} &\begin{Scratch}[0.75] \scbox{\phantom{rex} \cb[ope]{réponse}}{ctrl} \end{Scratch} \\ \texttt{\small\textbackslash hb\{\}} &\begin{Scratch}[0.75] \scbox{\phantom{rex} \hb{réponse}}{ctrl} \end{Scratch} \\ \texttt{\small\textbackslash hb[capt]\{\}} &\begin{Scratch}[0.75] \scbox{\phantom{rex} \hb[capt]{réponse}}{ctrl} \end{Scratch} \\ \texttt{\small\textbackslash sqb\{\}} &\begin{Scratch}[0.75] \scbox{mettre la couleur du stylo à \sqb{red}}{stylo} \end{Scratch} \\ \end{tabular} %----------------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------------% \newpage \section{Exemples de programme} \begin{verbatim} \begin{Scratch} \boucle{répéter \cb[w]{3} fois}{5}{1} \scbox{avancer de \cb[w]{10}}{mvt} \boucle{répéter \cb[w]{5} fois}{1}{1} \scbox{ajouter \cb[w]{10} à x}{mvt} \scbox{ce bloc est placé autrement}{data} \scbox{un nouveau bloc}{son} \end{Scratch} \end{verbatim} \begin{verbatim} \begin{Scratch} \beginbox{quand \rbb{espace} est pressé} \boucle{répéter \cb[w]{3} fois}{8}{1} \scbox{aller à x: \cb[w]{0} y: \cb[data]{y}}{mvt} \boucle{répéter \cb[w]{2} fois}{3}{1} \scbox{mettre \rb{x} à \rb[w]{0}}{data} \scbox{ajouter à \rb{y} \cb[w]{10}}{data} \scbox{mettre la couleur du stylo à \sqb{red}}{stylo} \scbox{mon bloc}{bloc} \scbox{montrer}{app} \scbox{effacer tout}{stylo} \end{Scratch} \end{verbatim} \begin{center} \begin{tabular}{cc}%\hline \parbox[b]{5.5cm}{ \hspace{1cm}deuxième programme $\rightarrow$ \vspace{2em} \par premier programme \par \hspace{1.25em}$\downarrow$ \par \begin{Scratch} \boucle{répéter \cb[w]{3} fois}{5}{1} \scbox{avancer de \cb[w]{10}}{mvt} \boucle{répéter \cb[w]{5} fois}{1}{1} \scbox{ajouter \cb[w]{10} à x}{mvt} \scbox{ce bloc est placé \dots}{data} \scbox{un nouveau bloc}{son} \end{Scratch} } & \begin{Scratch} \beginbox{quand \rbb{espace} est pressé} \boucle{répéter \cb[w]{3} fois}{8}{1} \scbox{aller à x: \cb[w]{0} y: \cb[data]{y}}{mvt} \boucle{répéter \cb[w]{2} fois}{3}{1} \scbox{mettre \rb{x} à \rb[w]{0}}{data} \scbox{ajouter à \rb{y} \cb[w]{10}}{data} \scbox{mettre la couleur du stylo à \sqb{red}}{stylo} \scbox{mon bloc}{bloc} \scbox{montrer}{app} \scbox{effacer tout}{stylo} \end{Scratch} \end{tabular} \end{center} \newpage %----------------------------------------------------------------------------------------------------------------------------------% \subsection{Des boucles imbriquées} %%%%%%%%%%%%%%%%%%%%%%%% 1 \begin{verbatim} \begin{Scratch} \beginbox{quand \rb{chronomètre} > \cb[w]{10}} \sailors{si \hb[capt]{touche \rb{espace} pressée?} alors}{12} \sailors{si \hb[capt]{souris pressée?} alors}{1} \scbox{aller à x: \cb[w]{0} y: \cb[w]{0}}{mvt} \simenon{2} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \scbox{ajouter \cb[w]{10} à y}{mvt} \sailors{si couleur \sqb{son} touchée?}{1} \scbox{aller à x: \cb[w]{0} y: \cb[w]{0}}{mvt} \simenon{1} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \simenon{1} \scbox{donner la valeur \cb[w]{0} à y}{mvt} \sailors{si \hb[capt]{souris pressée?} alors}{1} \scbox{ajouter \cb[w]{10} à y}{mvt} \simenon{2} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \scbox{cacher la variable \rb{variable}}{data} \end{Scratch} \end{verbatim} \begin{center} \begin{Scratch}[1]%%%%%%%%%%%%%%%%%%%%%%%% 1 \beginbox{quand \rb{chronomètre} > \cb[w]{10}} \sailors{si \hb[capt]{touche \rb{espace} pressée?} alors}{12} \sailors{si \hb[capt]{souris pressée?} alors}{1} \scbox{aller à x: \cb[w]{0} y: \cb[w]{0}}{mvt} \simenon{2} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \scbox{ajouter \cb[w]{10} à y}{mvt} \sailors{si couleur \sqb{son} touchée?}{1} \scbox{aller à x: \cb[w]{0} y: \cb[w]{0}}{mvt} \simenon{1} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \simenon{1} \scbox{donner la valeur \cb[w]{0} à y}{mvt} \sailors{si \hb[capt]{souris pressée?} alors}{1} \scbox{ajouter \cb[w]{10} à y}{mvt} \simenon{2} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \scbox{cacher la variable \rb{variable}}{data} \end{Scratch}\end{center} \newpage %%%%%%%%%%%%%%%%%%%%%%%% 2 \begin{verbatim} \begin{Scratch} \beginbox{} \sailors{si couleur \sqb{stylo} touchée?}{12} \sailors{si \hb[capt]{souris pressée?} alors}{6} \scbox{aller à x: \cb[w]{0} y: \cb[w]{0}}{mvt} \sailors{si \hb[capt]{touche \rb{espace} pressée?} alors}{1} \scbox{aller à x: \cb[w]{0} y: \cb[w]{0}}{mvt} \simenon{1} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \simenon{2} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \scbox{ajouter \cb[w]{10} à y}{mvt} \simenon{1} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \end{Scratch} \end{verbatim} \begin{center} \begin{Scratch}[1]%%%%%%%%%%%%%%%%%%%%%%%% 2 \beginbox{} \sailors{si couleur \sqb{stylo} touchée?}{12} \sailors{si \hb[capt]{souris pressée?} alors}{6} \scbox{aller à x: \cb[w]{0} y: \cb[w]{0}}{mvt} \sailors{si \hb[capt]{touche \rb{espace} pressée?} alors}{1} \scbox{aller à x: \cb[w]{0} y: \cb[w]{0}}{mvt} \simenon{1} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \simenon{2} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \scbox{ajouter \cb[w]{10} à y}{mvt} \simenon{1} \scbox{donner la valeur \cb[w]{0} à x}{mvt} \end{Scratch}\end{center} \newpage %%%%%%%%%%%%%%%%%%%%%%%% 3 \begin{verbatim} \begin{Scratch} \beginbox{} \boucle{répéter indéfiniment}{13}{-1} \turnbox{}{24} \boucle{répéter \cb[w]{4} fois}{2}{1} \scbox{stylo en position d'écriture}{stylo} \scbox{ajouter \cb[w]{20} au tempo}{son} \boucle{quand le lutin s'en va}{6}{1} \scbox{cacher la variable \rb{A}}{data} \scbox{costume suivant}{app} \scbox{arrêter tous les sons}{son} \turnbox{g}{24} \scbox{stylo en position d'écriture}{stylo} \scbox{ajouter \cb[w]{20} au tempo}{son} \blank \end{Scratch} \end{verbatim} \begin{center} \begin{Scratch}[1]%%%%%%%%%%%%%%%%%%%%%%%% 3 \beginbox{} \boucle{répéter indéfiniment}{13}{-1} \turnbox{}{24} \boucle{répéter \cb[w]{4} fois}{2}{1} \scbox{stylo en position d'écriture}{stylo} \scbox{ajouter \cb[w]{20} au tempo}{son} \boucle{répéter \cb[w]{4} fois}{6}{1} \scbox{cacher la variable \rb{A}}{data} \scbox{costume suivant}{app} \scbox{arrêter tous les sons}{son} \turnbox{g}{24} \scbox{stylo en position d'écriture}{stylo} \scbox{ajouter \cb[w]{20} au tempo}{son} \blank \end{Scratch} \end{center} \newpage %%%%%%%%%%%%%%%%%%%%%%%% 4 \begin{verbatim} \begin{Scratch} \beginbox{quand on le veut} \boucle{répéter un certain nombre de fois}{8}{1} \scbox{aller à x: \cb[w]{0} y: \cb[w]{0}}{mvt} \boucle{le dernier ??}{2}{1} \scbox{on peut faire}{gray} \scbox{ce que l'on veut}{black} \boucle{ne pas répéter}{1}{1} \scbox{faux bloc}{brown} \blank \scbox{dernier bloc}{pink} \end{Scratch} \end{verbatim} \begin{center} \begin{Scratch}[1]%%%%%%%%%%%%%%%%%%%%%%%% 4 \beginbox{quand on le veut} \boucle{répéter un certain nombre de fois}{8}{1} \scbox{aller à x: \cb[w]{0} y: \cb[w]{0}}{mvt} \boucle{se répéter que}{2}{1} \scbox{l'on peut faire}{gray} \scbox{ce que l'on veut}{black} \boucle{ne pas répéter}{1}{1} \scbox{faux bloc}{brown} \blank \scbox{dernier bloc}{pink} \end{Scratch} \end{center} \newpage %%%%%%%%%%%%%%%%%%%%%%%% 5 \begin{verbatim} \begin{Scratch} \beginbox{} \boucle{répéter \cb[w]{3} fois}{19}{1} \scbox{costume suivant}{app} \scbox{arrêter tous les sons}{son} \turnbox{1}{24} \scbox{stylo en position d'écriture}{stylo} \boucle{répéter \cb[data]{compteur} fois}{10}{1} \scbox{ajouter \cb[w]{20} au tempo}{son} \boucle{répéter \cb[ope]{\cb[data]{A}+1} fois}{6}{1} \scbox{réinitialiser le chronomètre}{capt} \boucle{répéter jusqu'à \hb[capt]{\rb{pointeur de souris} touché?}}{2}{1} \scbox{cacher la variable \rb{A}}{data} \scbox{avancer de 35}{mvt} \scbox{regroupe \rb[w]{hello}\rb[w]{world}}{ope} \scbox{nouveau bloc}{bloc} \turnbox{2}{-146} \scbox{estampiller}{stylo} \scbox{annuler les effets graphiques}{app} \sailors{si ça marche}{1} \scbox{je suis content}{stylo} \simenon{1} \scbox{je suis déçu}{app} \end{Scratch} \end{verbatim} \begin{center} \begin{Scratch}[1]%%%%%%%%%%%%%%%%%%%%%%%% 5 \beginbox{} \boucle{répéter \cb[w]{3} fois}{19}{1} \scbox{costume suivant}{app} \scbox{arrêter tous les sons}{son} \turnbox{1}{24} \scbox{stylo en position d'écriture}{stylo} \boucle{répéter \cb[data]{compteur} fois}{10}{1} \scbox{ajouter \cb[w]{20} au tempo}{son} \boucle{répéter \cb[ope]{\cb[data]{A}+1} fois}{6}{1} \scbox{réinitialiser le chronomètre}{capt} \boucle{répéter jusqu'à \hb[capt]{\rb{pointeur de souris} touché?}}{2}{1} \scbox{cacher la variable \rb{A}}{data} \scbox{avancer de 35}{mvt} \scbox{regroupe \rb[w]{hello}\rb[w]{world}}{ope} \scbox{nouveau bloc}{bloc} \turnbox{2}{-146} \scbox{estampiller}{stylo} \scbox{annuler les effets gRaphiques}{app} \sailors{si ça marche}{1} \scbox{je suis content}{stylo} \simenon{1} \scbox{je suis déçu}{app} \end{Scratch} \end{center} \newpage %----------------------------------------------------------------------------------------------------------------------------------% %----------------------------------------------------------------------------------------------------------------------------------% \section{Conclusion} %Voilà une toute première version qui attend des améliorations. %La finalité étant d'en faire un package.\\ %C'est l'utilisation dans la durée de ce programme qui permettra de connaître ses faiblesses et surtout les points à améliorer.\\ Pour tout suggestion, remarque ou commentaire : Thibault.Ralet\at ac-clermont.fr. \end{document} %% %% This is file `ScratchX.sty', %% %% Copyright (C) Thibault Ralet - Thibault.Ralet@ac-clermont.fr %% %% 16 mars 2017 (version 0.1) - 27 juillet 2017 (version 1.1) %% %% the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt %% %% Unlimited copying and redistribution of this file are permitted as %% long as this file is not modified. Modifications, and distribution %% of modified versions, are permitted, but only if the resulting file %% is renamed.