Introduction à Processing et ses fonctions
Introduction à Processing et ses fonctions
Par gregoire22
[Link]
2/81
Sommaire
Sommaire ........................................................................................................................................... Partager .............................................................................................................................................. Processing ......................................................................................................................................... Partie 1 : Processing ........................................................................................................................... 2 1 3 4
Variables ............................................................................................................................................................................ 9
Variables ...................................................................................................................................................................................................................... 9 Variables de type entier ............................................................................................................................................................................................... 9 Variables de type rel .................................................................................................................................................................................................. 9 Variables de type caractre et chaine de caractres ................................................................................................................................................ 10
Fonctions ......................................................................................................................................................................... 10
Fentre/texte ............................................................................................................................................................................................................. 11 Couleurs .................................................................................................................................................................................................................... 15
Sous-Fonctions ............................................................................................................................................................... 32
Utilisation ................................................................................................................................................................................................................... Void setup() ............................................................................................................................................................................................................... Void draw() ................................................................................................................................................................................................................ mini TP ...................................................................................................................................................................................................................... 33 33 34 35
TD : Pong ........................................................................................................................................................................ 54
Prsentation .............................................................................................................................................................................................................. Ralisation ................................................................................................................................................................................................................ Correction .................................................................................................................................................................................................................. Amliorations ............................................................................................................................................................................................................ 55 55 59 60
[Link]
Sommaire
3/81
Processing
Par
gregoire22
Mise jour : 01/11/2010 Difficult : Facile 1 408 visites depuis 7 jours, class 102/797 Bienvenue sur ce tutoriel consacr Processing. C'est un langage de programmation bas sur la plate-forme Java, et qui dispose de plus d'une centaine de librairies ! Ce tutoriel sera structur de la manire suivante :
[Link]
Processing
4/81
Partie 1 : Processing
Avant de commencer...
Salut vous les zros ! Si vous tes ici, c'est que vous tes prts en dcoudre avec la programmation ! Mais non, ne vous inquitez pas, Processing n'est pas plus compliqu que les autres langages, voir un peu moins. Dans ce tutoriel, je vais vous appendre programmer sous Processing. V ous tes prts ? Allez, on s'y met Commenons par le dbut : l'installation.
[Link]
Partie 1 : Processing
5/81
Et le dernier, un petit mlange de 3D et de cration artistique : V ous dessinez ce que vous voulez, et en maintenant la touche "espace" enfonce, votre dessin tourne et cre une forme en 3 dimensions. Par ici
Bien sr, ici je ne vous ai slectionn que quelque crations, et d'ailleurs un peu au hasard, tellement il y en avait :-. J'espre cependant que vous vous tes fait une ide de l'tendue des possibilits de Processing .
Le tlchargement
Bon, c'est bien tout a, mais sans logiciel, comment on fait ? . Processing est disponible sous Macintosh, Linux et Windows, ce qui est un avantage. Pour tlcharger processing, rien de plus simple, il suffit de se rendre sur le site : ici. Je vous fait confiance pour le tlchargement, vous y arriverez (il suffit de cliquer le sur le bon OS).
Prise en main
Prise en main du logiciel
Nous venons d'installer Processing, on peut donc lancer l'application. Si tout s'est bien droul lors du tlchargement, lorsque vous lancez l'application, vous devez voir apparatre ceci sous Macintosh :
[Link]
Partie 1 : Processing
6/81
et sous Windows :
[Link]
Partie 1 : Processing
7/81
Excusez moi, je n'ai pas d'images de Processing sous Linux Donc voil, l'interface du logiciel est assez simple, la voici :
[Link]
Partie 1 : Processing
8/81
Elle se compose donc d'une barre d'outils, d'une entre de texte, o l'on codera, et une sortie de texte, o l'on pourra afficher du texte, et o les erreurs apparatront. La barre d'outils que voici est compose de 6 boutons :
Run : qui permet de lancer le programme, de l'excuter Stop : qui permet d'arrter l'excution du programme, de fermer la fentre du programme New : qui permet de crer une nouvelle fentre vierge Open : qui permet d'ouvrir un programme existant, enregistr, ou bien les exemples de crations Processing prenregistres Save : qui permet de sauvegarder votre fichier Le dernier n'est pas trs important
Dans ce tutoriel, nous utiliseront essentiellement l'entre de texte, l o l'on crira le code. Ce premier chapitre est fini, vous pouvez vous familiariser avec logiciel. Il est possible de crer un nouveau fichier en cliquant sur "file"/"new", ou sur l'icne , et le sauvegarder. Nous avons dsormais le logiciel, on peut passer la pratique. Rendez-vous au chapitre suivant
[Link]
Partie 1 : Processing
9/81
Variables
Dsormais, nous avons toutes les cls en main pour commencer programmer : le logiciel, et nous avons eu un aperu de son interface. Dans ce chapitre, nous allons apprendre ce qu'est une variable et comment s'en servir.
Variables
Qu'est-ce qu'une variable ??
Une variable est un lment qui permet de stocker une donne. Cette donne peut-tre un nombre entier, un dcimal, un caractre, une chane de caractres, un tableau de valeur, une matrice... Avant de commencer, je tiens vous prciser deux choses : un commentaire dans un code sous processing de note ainsi : Code : Autre //je mets mon commentaire ici A la fin d'une "ligne" de code, on met un point virgule
Comme vous le pouvez voir, la syntaxe est assez simple. Exemples : Code : Java int a; //ou encore int b,c,d; // il est possible de dclarer plusieurs variables comme ceci, la suite int f=1; // on donne comme valeur 1 f
Prenons le mme exemple que pour la variable de type entre : Code : Java float a=5.6;
[Link]
Partie 1 : Processing
10/81
Lorsque vous voulez utiliser un nombre dcimal, attention bien mettre un point, et non une virgule. Il faut utiliser la syntaxe amricaine.
Exemple : Code : Java char //ou char char a; encore d,b,c; e='$' ;
Attention, autour du caractre que vous assignez votre variable se trouvent des apostrophes
La variable de type chane de caractres permettent d'y assigner une chaine de caractre, donc plusieurs lettres, symboles ou nombres... Syntaxe : Code : Java String nom_de_la_variable;
Autour de la chane de caractre se trouvent des guillemets. Nous connaissons maintenant ce qu'est une variable, et comment s'en servir. On peut donc passer au chapitre suivant : les fonctions...
[Link]
Partie 1 : Processing
11/81
Fonctions
Donc voil, nous avons prcdemment appris comment gnrer une variable et l'utiliser, ou du moins thoriquement. Dans ce chapitre, nous allons apprendre utiliser des fonctions. Il en existe une multitude. Nous verrons donc qu'une partie.
Fentre/texte
Rgler la taille de la fentre
Lorsque vous crivez une ligne de code et que vous appuyez sur ,
une fentre s'ouvre, mais elle est toute petite. Pour rgler ce problme, nous allons rgler la taille de la fentre avec la fonction Size(). Syntaxe : Code : Java size(largeur,hauteur); //en anglais : size(width, height);
Exemple : Code : Java size(400,400); //fenetre de 400 pixels sur 400 pixels
Rendu :
[Link]
Partie 1 : Processing
12/81
Ecrire du texte
Je suis sr que vous attendiez ce moment depuis longtemps, nous allons apprendre crire du texte ! La fonction print() va nous permettre de le faire. Print() permet d'crire, sur la sortie standard (plus simplement d'afficher du texte), l'argument qui lui est pass en paramtres. Comme je vous ai montr dans la prsentation du logiciel, le texte s'affichera sur la sortie de texte. En l'occurrence, le passage de paramtre se fait ici entre les parenthses. Syntaxe : Code : Java print(argument);
[Link]
Partie 1 : Processing
13/81
Rendu :
le rendu est le mme, mais la faon d'crire le texte n'est pas la mme. La fonction println() est similaire d'utilisation, mais permet un retour la ligne, chaque nouvel affichage.
Concatnation
Concatnation ? La concatnation dsigne l'action de mettre bout bout au moins deux chanes. Sachez que avec print, vous pouvez, en utilisant une seule fois cette fonction crire plusieurs choses exemple : Code : Java String a = "tutoriel est", b = " Processing."; println("Ce " + a + " consacr " + b);
[Link]
Partie 1 : Processing
14/81
Et voil :
[Link]
Partie 1 : Processing
15/81
Rendu :
Couleurs
Avec les trois fonctions que je vais vous prsenter, vous pourrez donner une couleur une ligne, au background, une forme...
[Link]
Partie 1 : Processing
16/81
Background()
Tout d'abord, la fonction background() : comme vous l'avez peut-tre devin, cette fonction va nous permettre de donner une couleur notre fentre, l'arrire-plan. Syntaxe : Code : Java background(R,G,B);
Les paramtres utiliss dans cette fonction sont la composition de la couleur en RGB. Si vous ne connaissez pas : rfrez-vous cette page du tutoriel de M@teo21. Exemple: Code : Java size(200,200); //cran de 200 pixels sur 200 pixels background(38,164,248);
Rendu :
[Link]
Partie 1 : Processing
17/81
Stroke()
La fonction Stoke() permet de donner une couleur un trait, ou de donner une couleur autour d'une forme. Syntaxe : Code : Java stroke(R,G,B);
Exemple : Code : Java stroke(200,200,0); line(1,1,10,10); //je vous montrerai dans la souspartie suivante comment se servir de line()
Rendu :
[Link]
Partie 1 : Processing
18/81
Fill()
La fonction Fill() permet de remplir une forme avec une couleur. Syntaxe : Code : Java fill(R,G,B);
Exemple : Code : Java fill(200,200,0); rect(100,100,150,150); //je vous montrerai dans la souspartie suivante comment se servir de rect()
[Link]
Partie 1 : Processing
Rendu :
19/81
Rendez-vous au chapitre suivant, o nous allons pouvoir continuer sur notre lance des fonctions.
[Link]
Partie 1 : Processing
20/81
Fonctions 2/2
Nous avons vu un certain nombre de fonction dans le prcdent chapitre. Et bien nous allons en voir encore dans cette partie Allez, ne vous dcouragez pas, c'est pas bien dur
Tableaux
Un tableau, qu'est-ce que c'est ?
Un tableau est ce que l'on peut aussi appeler une liste. Le tableau est un lment de programmation assez abstrait ! C'est un ensemble de variables dans lequel on stocke plusieurs informations. Ces informations sont classes par cases, d'o a notion de tableau. Notez que les informations contenues dans un tableau doivent tre du mme type : donc soit des caractres, soit des chiffres...
V la syntaxe. Mais bien sr, vous pouvez mettre autant d'lments que vous voulez dans le tableau. oil C'est bien beau, mais quand je lance le programme, rien ne se passe, il y a juste une petite fentre grise qui s'ouvre !
Ne vous inquitez pas Pour ce qui est de la petite fentre grise, c'est absolument normal. En effet, tout programme que vous lancerez ouvrira une fentre, et par dfaut elle sera grise et de petite taille. (je n'ai pas la taille ) Maintenant, nous allons voir comment appeler un lment du tableau.
Entre les crochets, il faut renseigner le numro, ou la position, si vous prfrez, de l'lment dans la tableau. Prenons un exemple : Code : Java String[] arbre = {"chene", "sapin", "pommier", "cedre", "erable"}; print (arbre[3]);
[Link]
Partie 1 : Processing
V ous allez alors voir sur la sortie texte le texte suivant :
21/81
Bonne question. Lorsque vous crez un tableau, Processing considre que le premier lment a pour numro "0" et non "1".
[Link]
Partie 1 : Processing
22/81
Ici, "pommier" sera donc remplac par "bouleau". C'est trs simple, mais attention ne pas oublier que le premier lment est numro 0
Sachez cependant qu'il existe bon nombre de fonctions que je n'ai pas cit
Autre syntaxe
Et oui, il existe une autre syntaxe pour crer un tableau. La voici : Code : Java int[] nom_du_tableau = new int[2]; //le new int[2] signifie que l'on cre un tableau de deux cases tableau[0] = 10; tableau[1] = 25;
[Link]
Partie 1 : Processing
Reprenons nos arbres. Nous allons les insrer dans une variable "arbres", puis nous allons dcouper cette chane, au niveau des virgules. Code : Java String arbres = "chene, sapin, pommier, cedre, erable"; String[] tableau_arbres = split(arbres, ',');
23/81
tableau_arbres[0] aura donc pour valeur "chene", tableau_arbres[1] pour valeur "sapin", ect. N.B : Sachez que vous pouvez dcouper une chane au niveau des espaces comme ceci : Code : Java split(nom_de_la_chaine_de_caractres, ' ');
Formes
Line()
La fonction line() permet de tracer un trait entre deux points, donc tout simplement une trait. Syntaxe : Code : Java line(X1,Y1,X2,Y2); //X1 tant l'abscisse //Y1 tant l'ordonne //X2 tant l'abscisse //Y2 tant l'ordonne
du du du du
premier point (l'extrmit de la ligne) premier point second point second point
[Link]
Partie 1 : Processing
24/81
Rendu :
Rect()
La fonction Rect() permet de dessiner un rectangle. Syntaxe : Code : Java rect(X,Y,largeur,hauteur); //X tant l'abcisse du coin suprieur gauche du rectangle //Y tant l'ordonne du centre du rectangle
[Link]
Partie 1 : Processing
25/81
Rendu :
Ellipse()
La fonction Ellipse() permet de dessiner une ellipse, et un cercle. Syntaxe : Code : Java ellipse(X,Y,largeur,hauteur); //X tant l'abscisse du centre de l'ellipse //Y tant l'ordonne du centre de l'ellipse
[Link]
Partie 1 : Processing
26/81
Rendu :
Quad()
La fonction quad(), comme son nom l'indique permet la ralisation d'un quadrilatre. Pour se faire, il faut passe en paramtres les positions sur l'axe des abscisses et des ordonnes des sommets du quadrilatre. Le schma suivant vous vous indique l'ordre des points que l'on passe en paramtres. Ainsi, si vous voulez tracer un carr, vous ne vous retrouverez pas avec un quadrilatre crois
[Link]
Partie 1 : Processing
27/81
Syntaxe : Code : Java quad(x1, y1, x2, y2, x3, y3, x4, y4);
Rendu :
Point()
[Link]
Partie 1 : Processing
28/81
La fonction point() permet de faire un point, tout simplement Syntaxe : Code : Java point(x,y);
Rendu :
RectMode()
La fonction rectMode() permet de rgler rect(). En effet, comme je vous l'ai montr plus haut, X et Y sont respectivement l'abscisse et l'ordonne du coin gauche. Lorsque vous faites un rectangle, vous dclarez en premier x et y, puis la largeur et la hauteur. Par dfaut, x et y sont le coin suprieur gauche du rectangle. Si vous utilisez CORNER, x et y seront le centre du rectangle. Syntaxe : Code : Java rectMode(CENTER);
Il ne faut pas oublier la majuscule de Mode, sinon processing ne reconnatra pas la fonction.
[Link]
Partie 1 : Processing
size(200,200); rectMode(CENTER); rect(50,50,100,100);
29/81
Rendu :
EllipseMode()
La fonction ellipseMode() fonctionne sur le mme principe que rectMode(). Cependant, c'en est l'inverse. Par dfaut, x et y sont le centre de l'ellipse. En utilisant CORNER, x et y sont dfinis comme le coin suprieur gauche. Syntaxe : Code : Java ellipseMode(CORNER);
Smooth()
[Link]
Partie 1 : Processing
30/81
Je ne sais pas si vous avez remarqu, mais lorsque vous faites un cercle, le trait n'est pas net, c'est d la pixlisation. Pour y remdier, smooth() est l Syntaxe : Code : Java smooth();
Rendu :
MiniTP
V ous venez d'apprendre un certain nombre de choses, il est donc important de les mettre en pratique pour que vous vous en souveniez correctement. Je vais donc vous proposer un petit exercice. Bien sr, cet exercice ne vous servira strictement rien, mais vous permettra de mettre en pratique vos connaissances acquises jusque l.
[Link]
Partie 1 : Processing
Exercice 1:
31/81
Ecrire un programme pour dessiner un rectangle rouge l'intrieur, des traits bleu, de 100 pixels de hauteur sur 50 de largeur, dans une fentre de 300 pixels sur 300 pixels. Le fond sera vert. A vos crayons, ou plutt devrais-je dire vos claviers Si vous ne trouvez pas du premier coup, n'hsitez pas relire le cours, et faire un petit schma. Secret (cliquez pour afficher) Code : Java background(0,255,0); size(300,300); fill(255,0,0); stroke(0,0,255); rect(100,100,50,100); //dans votre "RGB", vous pouvez trs bien varier les valeurs.
Rendu :
Et voil, c'en est fini des fonctions ! Rendez-vous dans le prochain chapitre o nous allons parler des sous-fonctions.
[Link]
Partie 1 : Processing
32/81
[Link]
Partie 1 : Processing
33/81
Sous-Fonctions
Dans ce quatrime chapitre, nous allons apprendre raliser une sous-fonction. Pour cela, on va passer un niveau de difficult lgrement suprieur. Les sous-fonctions ressemblent aux fonctions utilisateurs dans les autres langages, des fonction qu'on peut crer nous-mme. V setup() et void draw() sont des fonctions pr-implmentes et prtes l'emploi. L'intrt premier, est d'viter les rptitions oid inutiles (de factoriser le code), et d'viter de rinventer la roue chaque programme que l'on fait.
Utilisation
Une sous-fonction est ralise partir des fonctions principales de processing (celles que je vous ai appris dans le chapitre prcdent). Elle permet de raliser des fonctions plus avances, de les crer. Syntaxe : Code : Java void nom_de_la_fonction() { instruction 1; instruction 2; ... } //void sert dclarer la sous-fonction //une instruction peut-tre par exemple un line()
Exemple : Je veux raliser une sous-fonction qui dessine une croix : Code : Java void croix() { line(0,0,200,200); line(200,200,0,0); }
Sauf que l vous vous dites : "pourquoi quand je tape a, rien ne se passe ?" C'est un peu compliqu, il faut en fait ajouter d'autres void... Il n'y a pas de point virgule la fin d'un void
Void setup()
Comme je vous l'ai dit, l'exemple du void cross() ne marche pas tout seul. Premirement, il faut ajouter un void setup()... Dans ce void, nous dclarerons toutes les fonctions qui seront valables tout au long de votre programme. En effet, si c'est une application, certaines fonctions varient... Les fonctions que nous y mettons sont en gnral background() et size(). V ous pouvez bien sr y mettre un tas d'autres fonctions. Syntaxe : Code : Java void setup() { instruction 1; instruction 2; ...
[Link]
Partie 1 : Processing
}
34/81
Exemple : Reprenons notre void cross() Code : Java void setup() { size(400,400); background(255); } void croix() { line(0,0,200,200); line(200,0,0,200); }
Et l vous me dtes, pourquoi a ne marche toujours pas ! C'est car il manque un autre void
Void draw()
V notre dernier void : void draw(). oil Dans ce void draw(), nous allons appeler la sous-fonction croix() avec la mthode void, mais nous pourrions trs bien appeler tout autre sous-fonction. Syntaxe : Code : Java void draw() { instruction 1; instruction 2; ... }
Maintenant, on va pouvoir crire en entier le code : Code : Java void setup() { background(255); size(200,200); } void draw() { croix(); } void croix() { line(0,0,200,200); line(200,0,0,200); }
[Link]
Partie 1 : Processing
35/81
Donc pour rcapituler, pour crer une sous-fonctions, il est ncessaire d'utiliser 3 void : void setup() o l'on dclare les fonctions principales telles que la taille de la fentre, le fond d'cran... void draw() o l'on appelle les sous fonctions de notre choix, tel que void croix; et dernirement, notre sous-fonction, ici void croix.
void setup() { int TF=100; size(TF,TF); //ici nous utilisons TF : taille de la fentre, cela permet d'utiliser cette valeur fonction // avec en passage de paramtre la taille de la fentre } void draw() { dclaration des variables fonction(); //ex : bouton(int a, float b); } void sous-fonction() { //si vous mettez de variables dans le code de votre fonction, mettez les entre pare instruction 1; instruction 2; dclaration; }
V ous pouvez mme crer des sous-sous fonction, en les appelant dans votre sous-fonction, comme on l'a fait dans le void draw()
mini TP
Tout comme le prcdent exercice, il a pour but de vous embter un peu, histoire que vous ressortiez toutes les fonctions que vous avez appris. Exercice 1 : Ecrire la sous-fonction qui permet de raliser une croix verte dans un rectangle bleu, aux contours rouges, dans une fentre orange (faites un mlange de couleurs) de 200 pixels sur 200. Le rectangle sera de 100 pixels de largeur sur 50 de hauteur, et son coin suprieur gauche en (40;60). Secret (cliquez pour afficher) Code : Java void setup() { background(200,75,0); size(200,200); } void draw() { croix(); }
[Link]
Partie 1 : Processing
void croix() { fill(0,0,255); stroke(255,0,0); rect(40,60,100,50); stroke(0,255,0); line(40,60,140,110); line(140,60,40,110); }
36/81
Rendu :
Exercice 2 : Ecrire la sous-fonction qui ralise un carr avec en passage de paramtre la largeur et la taille de la fentre. Le carr doit tre centr au milieu de la fentre. Faites attention aux priorits mathmatiques.
[Link]
Partie 1 : Processing
Pas facile, hein ? Aide : Secret (cliquez pour afficher)
37/81
Code : Secret (cliquez pour afficher) Code : Java int TF=200, l=120;//on dclare TF : la taille la fentre, et l : la largeur du carr void setup() { size(TF,TF); } void draw() { carre();//on dclare la fonction } void carre() { //voici la faon thorique pour raliser un carr, bien sr il est possible d'utiliser rect() //mais dans certains cas, cette fonction nous sera utile line((TF+l)/2,(TF+l)/2,(TF+l)/2,(TF-l)/2); line((TF+l)/2,(TF-l)/2,(TF-l)/2,(TF-l)/2);
[Link]
Partie 1 : Processing
line((TF-l)/2,(TF-l)/2,(TF-l)/2,(TF+l)/2); line((TF-l)/2,(TF+l)/2,(TF+l)/2,(TF+l)/2); }
38/81
Rendu :
Je pense qu'il est ncessaire que vous relisiez ce chapitre, ou bien que vous vous y entraniez. Si vous avez compris ce chapitre, vous pouvez ds prsent raliser des programmes intressants, presque complexes Dans le prochain chapitre, nous approfondiront avec le hasard, les conditions, les boucles, les conditions et l'incrmentation...
[Link]
Partie 1 : Processing
39/81
Structures de contrle
Dans seconde partie, nous allons tudier plus en profondeur Processing, nous y verrons notamment les boucles, le hasard, l'incrmentation, les conditions... Dans ce premier chapitre, nous allons voir les boucles, chose trs utile !
Incrmentation
L'incrmentation est un processus particulier que l'on utilise assez souvent dans les boucles. Il consiste augmenter la valeur d'une variable. Il est aussi possible d'utiliser la dcrmentation, qui est le processus inverse, qui consiste baisser la valeur d'une variable. Exemple : Code : Java //incrmentation : int a=0; a=a+1; println(a);
[Link]
40/81
Rendu :
//incrmentation : a++; a+=1;//on met un + a cote du a, avant le signe =, pour montrer que l'on va additionner, a=a*2; a*=2; //le principe est le mme pour la multiplication que pour l'addition
Code : Java
//dcrmentation : a--; a=1;//on met un + a cote du a, avant le signe =, pour montrer que l'on va additionner, p a=a-2; a-=2; //le principe est le mme pour la division que pour la soustraction
Boucles
Le fonctionnement des ordinateurs repose sur assez peu de fonctions : effectuer des calculs numriques accder des valeurs tester des conditions et rpter des actions
[Link]
41/81
Explication : Tant que la condition est respecte, le programme excute les instructions contenues dans la boucle. Dans la srie d'instructions, on retrouve gnralement une variable qui s'incrmente. Exemple : Code : Java int a = 0; while ( a < 10 ) { println(a); a++; }
Explication : Peut se traduire par : de la condition de dpart, jusqu' la condition de fin, j'effectue les instructions contenues dans la boucle et l'itration. L'itration correspond l'incrmentation ou la dcrmentation d'une variable.
[Link]
42/81
V ous avez sans doute remarqu, que dans l'exemple de gauche, le rond laisse une trace derrire lui... comment l'effacer dans la partie suivante.
Structures de contrle
Nous allons voir comment structurer un programme, une animation. Comme je vous l'ai montr dans la partie prcdente, l'ellipse laisse une grosse trace toute moche derrire elle solution, et je vais vous la donner Avant cela, je vais vous montrer la structure de notre programme : Code : Java int TF = 400; int x; void setup() { x=0; size(TF,TF); } void draw() { nettoyer(); dessiner(); } void nettoyer() { background(255); } . J'ai la
[Link]
43/81
V notre code de base d'une animation. La fonction if est une condition, chose que nous aborderons plus tard. Mais vous oil l'avez srement devin, dans ce cas, c'est si x atteint 395, et bien x reoit une nouvelle nouvelle valeur qui ici est 5. Dans le void draw, nous appelons deux sous-fonctions : nettoyer() et dessiner(). Nettoyer() va nous permettre d'effacer par exemple la trace de l'ellipse. Je vous explique : en fait lorsque le programme s'excute, c'est comme un film, c'est des image qui se superposent. Et bien, ici, chaque nouvelle image, on dit que le fond d'cran doit rester blanc, ducoup a nous enlve la trace. C'est dans dessiner que l'on mettra par exemple notre ellipse pour la faire bouger.
Essayons :
Et normalement, vous devez voir dfiler votre cercle comme ceci (mais ici c'est un mauvais gif :p) :
[Link]
44/81
Excusez moi, pour la mauvaise qualit du gif (il faut cliquer sur la miniature pour le voir) :-. Et voil, vous venez de raliser votre premire animation. L, j'ai choisi un exemple simple, mais avec ce qui suit : les conditions, le hasard et le dplacement, on va pouvoir faire un pong par exemple !
Conditions
Donc voil, comme je l'ai abord plus haut, nous allons parler des conditions. C'est un systme qui permet de poser des conditions. Pour raliser des tests conditionnels sur une variable, on utilise : if : de l'anglais qui signifie "si" else : de l'anglais qui signifie "autre"/"sinon" Une condition peut tre traduite ainsi : Code : Autre
Je veux que cette/ces action soi(en)t ralise(s) si ... sinon, cette/ces action(s) ...
Syntaxe : Code : Java if (condition) { instruction 1; instruction 2; ... } else { instruction 1; instruction 2; ... }
On peut faire le test (appliquer la condition) sur plusieurs, en les imbriquant. C'est dire que l'on peut prciser plusieurs conditions la fois. La syntaxe que je vous ai montr est celle de base, maintenant je vais vous montrer ce qu'il faut mettre entre parenthse dans la condition : Code : Java //condition gal if(variable_a==valeur) {} //condition suprieur if(variable_a>valeur) {} //condition suprieur ou gal if(variable_a>=valeur) {} //condition infrieur
[Link]
45/81
Il ne faut pas oublier que "valeur" peut-tre un nombre, mais aussi une variable ! Je vais vous donner quelques exemples afin que vous vous familiarisiez avec les conditions. Exemples : Code : Java if(x>10 && x<15) { y=45; }
Code : Java if(x!=0 && y <=23 && w ==78) { print("J'apprends les conditions !"); }
[Link]
46/81
Rendu :
V ous pouvez imbriquer autant de conditions que vous le souhaitez, mais fates attention ne pas trop en mettre, afin de ne pas vous emmler les pinceaux
Loop()
Loop() est une fonction qui permet l'excution d'une animation. En ralit, on n'en a pas besoin directement. Son "inverse" noLoop() est lui plus utile. Dans une animation, prenons l'exemple du pong que nous ferons en TP, si la balle touche le mur, et bien vous perdez. V ous pouvez donc utiliser la fonction noLoop(). Syntaxe : Code : Java
noLoop; //la fonction s'utilise trs simplement, mais est gnralement place dans une conditio
Prenons l'exemple du pong : Code : Java //soit x l'abcisse de l'ellipse qui fait office de balle if(x=0)
[Link]
47/81
Assurez vous d'avoir bien compris ce chapitre, il est relativement important. Prochain chapitre, les conditions.
[Link]
48/81
Souris et Clavier
Dans cette partie, je vais vous apprendre utiliser votre souris et votre clavier, dans votre programme.
Souris
MouseX et MouseY
Donc voil, on va apprendre utiliser la souris dans un code. Par exemple, imaginons que je souhaite qu'une ellipse se dplace pareil que ma souris sur l'ecran. Et bien c'est assez simple, voil comment on fait : Code : Java int x; int y; void draw() { ellipse(x,y,10,10); x=mouseX; y=mouseY; }
Essayez, et aprs avoir beaucoup boug la souris, vous devez obtenir quelque chose de ce genre
[Link]
49/81
Mais comme vous voyez, on retrouve notre trace... Il ne faut donc pas oublier notre void nettoyer(), enfin si vous ne voulez pas voir de cercles bien sr. Dans certains cas, si vous voulez faire la mme chose, mais avec point(), vous pouvez ne pas utiliser de void nettoyer(), afin de pouvoir dessiner avec Donc avec le void nettoyer(), a donne a :
MousePressed
La fonction mousePressed est simple d'utilisation : si elle est vrifie (on clique), elle fait ce que vous avez mis entre accolades, sinon, ce que vous avez mis dans else, ou rien si vous n'avez pas mit de else. La syntaxe que je vais vous donner est disons la plus courante, la plus utile : Syntaxe : Code : Java if (mousePressed == true ou false) { } else { }
[Link]
50/81
True et false servent dire si la fonction est vrifie ou non, dans ce cas, si on clique ou pas. Prenons un exemple o si l'on clique (restez appuys un peu), un rectangle change de couleur, mais vous pouvez faire ce que vous voulez, il peut changer de taille, vous pouvez changer le fond d'cran, faire apparatre quelque chose, crire sur la sortie texte, excuter une action... Exemple : Code : Java void draw() { if (mousePressed == true) { fill(200,0,155); } else { fill(255); } smooth(); ellipse(50, 50, 50, 50); }
MousePressed()
La fonction mousePressed() s'utilise exactement de la mme faon que mousePressed. Il y a seulement une diffrence : reprenons notre ellipse qui change de couleur lorsqu'on clique, et bien avec mousePressed(), en cliquant, vous changez la couleur, mais elle reste. Il faut recliquer pour qu'elle redevienne blanche. Essayez...
MouseDragged()
La fonction mouseDragged() utilise le mouvement de la souris, elle prend la valeur de la souris en x et y. Syntaxe : Code : Java mouseDragged() { }
Je vous donne un exemple : imaginons une ellipse, et on veut que la couleur de remplissage change avec la position de la souris. Et bien on va utiliser mouseDragged(). Je vous explique, on va initialiser trois variables, et remplir une ellipse avec (fil()). Ensuite, avec mouseDragged(), on va utiliser l'incrementationn pour augmenter les valeurs de ces trois variables, en fonction de la souris : Code : Java int a = 150; int c = 100; int b = 200; void draw() { fill(a,b,c); smooth(); ellipse(50, 50, 90, 90); }
[Link]
51/81
Rendu :
Clavier
KeyPressed
La fonction keyPressed marche exactement comme mousePressed, la syntaxe que je vous donne vous permet d'utiliser n'importe quelle touche, mais vous pouvez bien sr en spcifier une : Syntaxe : Code : Java if (keyPressed == true ou false) { }
Exemple : Code : Java void draw() { smooth(); ellipse(50,50,90,90); } void keyPressed() { if (key == '1') { fill(200,50,150); } else { fill(255); } smooth(); ellipse(50,50,90,90); }
[Link]
52/81
KeyCode
La fonction keyCode permet de spcifier une touche spciale : UP, DOWN, LEFT, RIGHT, ALT, CONTROL, SHIFT, BACKSPACE, TAB, ENTER, RETURN, ESC, et DELETE) Je vous donne ici le nom des touches anglaises, mais je suis sr que vous les reconnatrez Exemple : Code : Java void draw() { smooth(); ellipse(50,50,90,90); } void keyPressed() { if (keyCode == ENTER) { fill(200,50,150); } else { fill(255); } smooth(); ellipse(50,50,90,90); }
Je ne vais pas m'attarder sur ce point, en effet les fonctions pour le clavier sont les mmes que celles de la souris, except mouseDragged().
Liens
Avec processing, il est possible de faire des liens vers des URL internet ! Imaginons que vous ayez deux carrs, et bien vous avez la possibilit de crer une condition, selon laquelle si l'on appuie sur un des deux, a nous envoie vers un URL spcifi. : Exemple : Code : Java boolean overLeftButton = false; boolean overRightButton = false; void setup() { size(500, 500); } void draw() { background(255); line(250,0,250,500); if(overLeftButton == true) { fill(200,50,150); } else { fill(255); } rect(0,200,230,100); if(overRightButton == true) {
[Link]
53/81
void keyPressed() { if(overLeftButton) { link("[Link] } else if (overRightButton) { link("[Link] } } void mouseMoved() { checkButtons(); } void checkButtons() { if(mouseX > 0 && mouseX < 230 && mouseY > 200 && mouseY < 300) { overLeftButton = true; } else if (mouseX > 270 && mouseX < 500 && mouseY > 200 && mouseY < 300) { overRightButton = true; } else { overLeftButton = overRightButton = false; } }
Explication : Boolean sert de rfrence, c'est dire que par dfaut, overLeftButton et overRightButton sont faux. Nous mettons un void setup(), o nous dfinissons les paramtres de rfrence. Dans le void draw(), nous dfinissons un background, et ensuite nous posons une premire condition : si overLeftButton est vrai, on rempli le premier rectangle sinon, le rectangle est rempli en blanc Ensuite, on pose notre deuxime condition : si overRightButton est vrai, on rempli le premier rectangle sinon, le rectangle est rempli en blanc On utilise un void mouseMoved() dans lequel on appelle une sous-fonction : checkButtons(). Puis, on utilise un void pour dclarer checkButtons() et on pose la condition suivante : si les positions de la souris en X et Y sont comprises entre telles et telles valeur, overLeftButton est vrai, sinon, es positions de la souris en X et Y sont comprises entre telles et telles valeur, overRightButton est vrai, puis avec un deuxime else, mais sans condition, on dit que si ces deux conditions ne sont pas vrifies, donc autrement dit par dfaut, overLeftButton et overRightButton sont faux. Et voil, j'espre que vous avez compris le systme Mais plus classiquement la fonction pour faire un lien est : Code : Java
[Link]
54/81
[Link]
55/81
TD : Pong
Dans ce chapitre, je vais vous apprendre crer un Pong !!
Prsentation
Nous allons raliser un Pong, le premier jeu d'arcade, avant Pacman ! Pour cela, je vais tout d'abord vous donnez une sorte de cahier des charges. Le jeu sera seulement pour 1 joueur, ce sera vous d'apporter les amliorations =D
Le plateau (l o rebondit la balle) sera ainsi : rect(w,z,25,85); il bougera en Y avec la souris. La balle sera ainsi : ellipse(x,y,20,20); et bougera selon un deplacementX et deplacamentY prdfinis, et grce une incrmentation. La balle rebondira sur le plateau, sur le ct droit, sur le haut et les bas de la fentre. Si la balle touche le ct gauche, GAME OVER s'affiche sur la sortie texte.
Ralisation
Allez c'est partis, on entame le code !
Initialisation
Premirement, vous allez initialiser les variables : x et y qui sont les coordonnes de la balle deplacementX et deplacementY qui seront la direction de la balle w et z les coordones du plateau
Ensuite, nous initialisons notre void setup(). Nous allons donner des valeurs ces variables : z = 60; w = 15; deplacementY = -3; deplacementX = 6;
[Link]
56/81
Puis nous allons donner un fond d'cran blanc ainsi qu'une taille de fentre de 400 sur 400 pixels. Puis, nous allons initialiser un void draw() dans lequel nous allons appeler quatre sous-fonctions : nettoyer(); dessiner(); bouger(); rebondir();
Void nettoyer()
Dans le void nettoyer(), vous n'avez qu'une seule chose mettre : Code : Java background(0);
Void dessiner()
Premirement, on va dessiner notre plateau ainsi : Code : Java rect(w,z,25,85);
Pour ma part, je l'ai rempli en blanc. Ensuite, on va dessiner notre balle ainsi : Code : Java smooth(); ellipse(x,y,20,20);
Je l'ai elle aussi remplie de blanc. Pour finir, on peut dessiner une ligne blanche en plein milieu pour dlimiter les deux terrains : Code : Java line(200,0,200,400);
Void bouger()
Le void bouger() est lui aussi assez cours et simple. Pour x et y, on va utiliser une incrmentation, pour faire bouger la balle : Code : Java x = x + deplacementX; y = y + deplacementY;
[Link]
57/81
Test
Avant de commencer la partie du void rebondir(), on va faire un petit rcapitulatif du code : Code : Java int deplacementX, deplacementY; int x, y; int w, z; void setup() { size(400,400); background(0); x = 200; y = 200; deplacementX = 6; deplacementY = -3; w = 15; z = 60; } void draw() { nettoyer(); bouger(); dessiner(); } void nettoyer() { background(0); } void dessiner() { smooth(); fill(255); rect(w,z,25,85); fill(255); ellipse(x,y,20,20); line(200,0,200,400); } void bouger() { x = x + deplacementX; y = y + deplacementY; } z = (mouseY);
Donc voil, comme vous avez pu le voir, notre plateau bouge correctement, et la balle aussi. Gros bmol, la balle ne rebondit pas,
[Link]
58/81
Void rebondir()
Premire ligne : Nous voulons que si la balle touche le bord droit, elle rebondisse. Pour a, nous allons dcrter que si x (l'abscisse de la balle, l'axe horizontal) est suprieur la largeur de la fentre et que le dplacement est positif, c'est dire de la gauche vers la droite, deplacementX est invers : Code : Java // si on est trop droite et que le dplacement horizontal est positif if (x > width-10 && deplacementX > 0) //10 pour que ce soit le au niveau du bord de la balle et non du centre { deplacementX = -deplacementX; // inverser la valeur }
Deuxime ligne : Nous voulons que si la balle touche le bas de la fentre, elle rebondisse. Pour a, nous allons dcrter que si y (l'ordonne de la balle, l'axe vertical) est suprieur la hauteur de la fentre et que le dplacement est positif, c'est dire du haut vers le bas, deplacementY est invers : Code : Java // si on est trop bas et le dplacement vertical est positif if (y > width-10 && deplacementY > 0) { deplacementY = -deplacementY; // rendre ngative la valeur }
Troisime ligne : Nous voulons que si la balle touche le haut de la fentre, elle rebondisse. Pour a, nous allons dcrter que si y (l'ordonne de la balle, l'axe vertical) est infrieur la hauteur de la fentre et que le dplacement est ngatif, c'est dire du bas vers le haut, deplacementY est positif : Code : Java // si on est trop haut et le dplacement vertical est negatif if (y < 10 && deplacementY < 0) { deplacementY = abs(deplacementY); // rendre positive cette valeur }
Quatrime ligne : Nous voulons que si la balle touche le plateau, elle rebondisse. Pour cela, nous allons poser comme condition que si x est infrieur w+35(largeur du plateau + la moiti de celle de la balle), que y est suprieur z et que y est infrieur z+85 (hauteur du plateau), deplacementX est invers : Code : Java if (x<w+35 && y>z && y<z+85) { deplacementX = -deplacementX; // inverser la valeur }
[Link]
59/81
Dernire ligne : Pour finir, nous pouvons dire que si la balle touche le ct gauche de la fentre, l'animation s'arrte et on affiche sur la sortie texte "GAME OVER" : Code : Java if (x < 10) { noLoop(); println("GAME OVER"); }
Correction
Donc voil, nous avons termin le pong ! J'ai le plaisir de vous donner le code final Secret (cliquez pour afficher) Code : Java int deplacementX, deplacementY; int x, y; int w, z; void setup() { size(400,400); background(0); x = 200; y = 200; deplacementX = 6; deplacementY = -3; w = 15; z = 60; } void draw() { nettoyer(); bouger(); rebondir(); dessiner(); } void nettoyer() { background(0); } void dessiner() { smooth(); fill(255); rect(w,z,25,85); fill(255); ellipse(x,y,20,20); line(200,0,200,400); } void bouger() { x = x + deplacementX; y = y + deplacementY; z = (mouseY);
[Link]
60/81
// si on est trop bas et le dplacement vertical est positif if (y > width-10 && deplacementY > 0) { deplacementY = -deplacementY; // rendre ngative la valeur } // si on est trop haut et le dplacement vertical est negatif if (y < 10 && deplacementY < 10) { deplacementY = abs(deplacementY); // rendre positive cette valeur } if (x<w+35 && y>z && y<z+85) { deplacementX = -deplacementX; // inverser la valeur } if (x < 10) { noLoop(); println("GAME OVER"); }
Amliorations
Les amlioration sont nombreuses: amliorer le systme des rebonds ajouter un deuxime plateau, pour jouer deux modifier le design ajouter un comptage de points un menu pour choisir entre 1 et deux joueurs changer l'apparence (les couleurs) ...
Enfin bon, comme vous pouvez le voir, c'est considrable. Le code que je vous ai donn est donc simplifi Et voil, vous venez de crer votre premier jeu sous Processing !!!!
V ous tes dsormais capables de crer beaucoup de choses diverses et varies Rendez-vous la troisime partie
[Link]
61/81
Image et vido
Dans ce chapitre, vous apprendrez traiter les photos et les vidos avec Processing ! Attachez vous bien, a dcoiffe Non, plus srieusement, plus l'on avance dans le tutoriel, plus vous pouvez constater l'tendue des possibilits de ce langage !
Image
Comme vous le savez, Processing dispose de grandes ressources et offre de larges possibilits, dont le traitement d'images. C'est ce que nous allons voir ici.
Sachez que les formats pris en charge par Processing sont les suivants : .gif, .jpg, .tga, et .png
Et l vous me dtes : "Euh pourquoi j'ai une erreur qui s'affiche et aucune image dans ma fentre effet, il faut charger l'image dans le fichier de notre script .
Pour cela, allez dans "Sketch">"Add File", et l vous choisissez l'image en question. Il ne vous reste plus qu' lancer votre programme, et l magie .
Avant d'ajouter l'image dans le fichier, veillez avoir sauvergard le script, sinon ell sera place dans un fichier temporaire Sachez que vous pouvez voir ce que contient le dossier de votre script en allant dans "Sketch">"Show sketch folder".
[Link]
62/81
. Je vais vous donner un exemple, je pense que a sera
[Link]
63/81
Ensuite,
V mon code : oil Code : Java PImage monImage; monImage = loadImage("[Link]"); size([Link]+50,[Link]+50); background(255); tint(204, 153, 0); image(monImage, ([Link])/2 , ([Link])/2); noFill(); rect(25,25,width-50,height-50);
Et le rendu, qui je vous l'accorde, n'est pas des plus beaux A vous de trouver une me d'artiste en vous. Personnellement, je l'ai pas encore trouve
Sachez qu'il existe de nombreuses autres fonctions telles que blend(), mais qui seraient trop longues dtailler.
[Link]
64/81
Vido
A venir Et voil, rendez-vous dans la troisime partie de ce tutoriel, qui sera consacre au librairies disponibles avec Processing.
[Link]
65/81
TP : Effet Tunnel
Dans ce TP, vous allez apprendre crer un effet tunnel. V ous aurez rellement l'impression de rentrer dedans et de le voir tourner, mais tout a ne sera qu'illusion !
Prsentation
Le but de ce TD est de raliser un effet tunnel. Aprs, vous de voir ce que vous voulez en faire. Il est mme possible d'en faire un jeu de voiture ! L'effet tunnel que nous allons raliser ensemble n'est qu'une version parmi des dizaines.
A vous d'imaginer votre effet tunnel, mais voici celui que je vous propose : des carrs mouvants, qui relis entre eux donneront l'impression de faire un couloir. Et tout a, incrment, pour donner cet effet de couloir qui avance. V oil, donc maintenant, vous de faire les carrs ; je vous en conseille 3 et un quatrime statique, faisant office de fond de couloir. Je vous conseille aussi de prendre une fentre d'assez grande taille, et un peu plus large que longue.
Correction
V oil, je me doute que vos esprits se sont chauff. Je met donc fin votre supplice pour ceux qui n'auraient pas trouv. V une correction possible. oici Cependant, elle est un peu "barbare" disons. C'est en fait fait exprs, je n'ai pas simplifi le code afin que vous le fassiez par vous mme. Comme vous allez le voir, il y a des tonnes de variables. A vous de voir celles qui pourront tre supprimes. Secret (cliquez pour afficher) Code : Java float x=400, y=300, l=200, q=400, s=300, f=400, a=400, z=300, r=600; float i=300, j=300, p=600, o=450, c=400, w=300, t=20; int b=0, g=400, h=300, tf=800, TF=600; void setup() { size(tf,TF); background(255); } void draw() { nettoyer(); bouger(); lignesentrecarres(); carre(); nitro(); } void nettoyer()
[Link]
66/81
void bouger() { println(b); background(0); l=l+2; f=f+2; r=r+2; if (l>600) { l=0; b=b+1;//compteur } if (f>600) { f=0; b=b+1; } if (r>600) { r=0; b=b+1; } //gauche - droite if (b >= 4 && b <= 5) { x=x+.3; q=q+.5; a=a+.7; } if (b >= 6 && b <= 7) { x=x-.3; q=q-.5; a=a-.7; } //haut-bas if (b >= 9 && b <= 10) { y=y+.7; s=s+.5; z=z+.3; } if (b >= 11 && b <= 12) { y=y-.7; s=s-.5; z=z-.3; } } void lignesentrecarres() { //lignes des coins stroke(255); if (f > l & f > r) { line(0,600,q-(f/2),s+(f/2)); line(800,600,q+(f/2),s+(f/2)); line(0,0,q-(f/2),s-(f/2)); line(800,0,q+(f/2),s-(f/2));
[Link]
67/81
if (f < l & f < r && l > f && l > r) { //entre r et f line(q-(f/2),s+(f/2),a-(r/2),z+(r/2)); line(q+(f/2),s+(f/2),a+(r/2),z+(r/2)); line(q-(f/2),s-(f/2),a-(r/2),z-(r/2)); line(q+(f/2),s-(f/2),a+(r/2),z-(r/2)); } else if (r > l && r > f) { //entre f et l line(q-(f/2),s+(f/2),x-(l/2),y+(l/2)); line(q+(f/2),s+(f/2),x+(l/2),y+(l/2));
[Link]
68/81
//lignes entre carres 3 et fixe if (f < l & f < r) { //entre f et fixe line(q-(f/2),s+(f/2),c-(t/2),w+(t/2)); line(q+(f/2),s+(f/2),c+(t/2),w+(t/2)); line(q-(f/2),s-(f/2),c-(t/2),w-(t/2)); line(q+(f/2),s-(f/2),c+(t/2),w-(t/2)); } if (r < f & r < l) { //entre r et fixe line(c-(t/2),w+(t/2),a-(r/2),z+(r/2)); line(c+(t/2),w+(t/2),a+(r/2),z+(r/2)); line(c-(t/2),w-(t/2),a-(r/2),z-(r/2)); line(c+(t/2),w-(t/2),a+(r/2),z-(r/2)); } else if (l < r && l < f) { //entre l et fixe line(c-(t/2),w+(t/2),x-(l/2),y+(l/2)); line(c+(t/2),w+(t/2),x+(l/2),y+(l/2)); line(c-(t/2),w-(t/2),x-(l/2),y-(l/2)); line(c+(t/2),w-(t/2),x+(l/2),y-(l/2)); } } { void carre() line (x-(l/2),y-(l/2),x+(l/2),y-(l/2)); line (x+(l/2),y-(l/2),x+(l/2),y+(l/2)); line (x-(l/2),y-(l/2),x-(l/2),y+(l/2)); line (q-(f/2),s-(f/2),q+(f/2),s-(f/2)); line (q+(f/2),s-(f/2),q+(f/2),s+(f/2)); line (q-(f/2),s-(f/2),q-(f/2),s+(f/2)); line (a-(r/2),z-(r/2),a+(r/2),z-(r/2)); line (a+(r/2),z-(r/2),a+(r/2),z+(r/2)); line (a-(r/2),z-(r/2),a-(r/2),z+(r/2)); //carre fixe line (c-(t/2),w-(t/2),c+(t/2),w-(t/2)); line (c+(t/2),w-(t/2),c+(t/2),w+(t/2)); line (c-(t/2),w-(t/2),c-(t/2),w+(t/2));
void nitro() { if (key == 'a') { frameRate(1000); } else if (key == 'z') { frameRate(60); } } void departarrivee() { if (b > 0 && b < 1) {
[Link]
69/81
Dans ma grande bont, je vous ai rajout un effet nitro, activable avec la touche 'Z' et dsactivable avec la touche 'A'. Une fois l'arrive, il vous suffit de presser 'Entrer' et c'est reparti pour un trou ! Comme vous pouvez le voir, j'ai choisir de prendre des carrs mouvants, relis entre eux afin de crer l'effet tunnel. Il est possible voire probable que vous n'ayez pas fait de mme.
Amliorations possibles
V ous avez peut-tre devin, que si je vous ai fait faire cet effet tunnel, c'est qu'il y a une bonne raison ! En effet, de nombreuses amliorations et adaptations de ce script existent. Et celle qui va peut-tre vous plaire et un jeu de voiture ! Et oui, c'est possible ! Pour cela, vous devrez : ajouter une voiture la possibilit de la faire bouger pourquoi pas mettre des obstacles rgler la vitesse de dfilement des carrs grer les collisions revoir le design ...
Aprs, vous de voir, si a vous tente de raliser un petit jeu de voiture, ou bien si vous prfrez vous orienter vers autre chose En tout, comme vous avez pu le constater, votre niveau s'amliore trs nettement, et vous pouvez dsormais raliser des choses sympa et utiles. Et voil, vous venez de crer un effet tunnel. Avec les conseils que je vous ai donn dans les amliorations possibles, vous avez de quoi laisser vagabonder votre imagination. Dans la prochaine partie, nous allons faire de la 3D !
[Link]
70/81
[Link]
Partie 3 : Annexes
71/81
Partie 3 : Annexes
Cette partie annexes est consacre des informations supplmentaires
Annexes
Dans cette partie, vous trouverez une annexes. Dans cette annexes se trouveront des informations utiles, relatives Processing.
Rfrence
Donc voil, je cre juste un petit chapitre afin de prciser que toutes les fonctions sont disponibles partir du logiciel. Il suffit d'aller dans "Help", puis "Reference" : Screen 1 : Secret (cliquez pour afficher)
[Link]
Partie 3 : Annexes
72/81
[Link]
Partie 3 : Annexes
73/81
[Link]
Partie 3 : Annexes
Screen 3 : Secret (cliquez pour afficher)
74/81
[Link]
Partie 3 : Annexes
75/81
Erreurs frquentes
Dans cette sous-partie, nous parlerons des erreurs les plus frquentes, et de la faon de les rsoudre. Les erreurs indiques par le logiciel ne sont pas 100% fiable.
[Link]
Partie 3 : Annexes
void setup() { size(400,400); } void draw() { mafonction(); } void mafonction() { }
76/81
NullPointerException
Cette erreur intervient lorsque vous utiliser un objet non initialis, dclar, auparavant. Code : Java //vous devez donc dclarer de cette manire votre objet Objet monObjet = new Objet();
Mobile Processing
Eh oui, il est possible d'utiliser vos scripts sur votre tlphone portable ! Cependant, il est prfrable que votre portable ne soit pas trop vieux (de 3 5 ans grand maximum) ni votre script trop lourd. Malheureusement, il me semble (je n'en ai pas, donc vous de tester) que Mobile Processing ne fonctionne pas sur les PDA, Iphone et autres tlphones tactiles. En effet, sinon votre programme sera d'une lenteur dsesprante... Les librairies utilisables sur Processing ne seront malheureusement pas sur Mobile Processing. En revanche, d'autres sont incluses dans le logiciel, des librairies propres au tlphone :
[Link]
Partie 3 : Annexes
77/81
Installation
Pour utiliser vos programmes sur votre tlphone, vous allez devoir tlcharger deux petits logiciels. Le premier est Mobile Processing, vous pouvez le tlcharger sur le site officiel : [Link] Une fois tlcharg, dzippez le et placez le parmi vos applications. Il faut ensuite tlcharger une application spciale, un mulateur nomm "Mpowerplayer SDK " qui simulera votre portable : Pour les Windows Pour les Mac Placez ensuite cet mulateur dans vos applications.
Configuration
Passons maintenant la configuration de Mobile Processing. C'est trs simple et trs court. Il vous suffit d'ouvrir l'application, et d'aller dans les prfrences. Puis, cliquez sur l'onglet mobile, slectionnez l'mulateur au niveau de "Wireless Toolkit location" l'aide du bouton browse ; et enfin, rglez "MIDP version" sur 2.0, si votre portable est rcent.
Utilisation
L'utilisation de Mobile Processing est exactement la mme que Processing. Seulement, certaines fonctions de Processing ne sont pas utilisables sur Mobile Processing. Et comme je l'ai dit plus haut, les librairies utilisables ne sont pas les mmes.
Exemple
Souvenez-vous du Pong que nous avons ralis ensemble. Je l'ai un peu adapt : j'ai remplac le dplacement du plateau qui tait avec la souris, par les touches; le dplacement est alatoirment gnr chaque fois; si la balle a touch le mur de gauche, vous pouvez la relancer en appuyant sur la touche '1', plutot que de relancer l'application
[Link]
Partie 3 : Annexes
int deplacementX, deplacementY; int x, y; int deplacementW, deplacementZ; int w, z; void setup() { size(400,400); background(0); x = 200; y = 200; deplacementX = random(4,8); deplacementY = random(-4,-1); w = 15; z = 60; noStroke(); fill(255); } void draw() { nettoyer(); bouger(); rebondir(); dessiner(); } void nettoyer() { background(0); } void rebondir() { // si on est trop droite ET le dplacement horizontal est positif if (x > width-10 && deplacementX > 0) { deplacementX = -deplacementX; // inverser la valeur }
78/81
// si on est trop gauche et le dplacement horizontal est ngatif if (x < 10 && deplacementX < 10) { deplacementX = abs(deplacementX); // abs() enlve le ngative de la valeur } // si on est trop bas et le dplacement vertical est positif if (y > width-10 && deplacementY > 0) { deplacementY = -deplacementY; // rendre ngative la valeur } // si on est trop haut et le dplacement vertical est negatif if (y < 10 && deplacementY < 10) { deplacementY = abs(deplacementY); // rendre positive cette valeur } if (x<w+25 && y>z && y<z+85)
[Link]
Partie 3 : Annexes
{ } deplacementX = -deplacementX; // inverser la valeur
79/81
if (x < 10) { deplacementX = 0; deplacementY = 0; if(keyPressed) { if(key == '1') { deplacementX = random(4,8); deplacementY = random(-4,-1); } }
void bouger() { x = x + deplacementX; y = y + deplacementY; if(keyPressed) { if(keyCode == DOWN || key == '8') { z+=4; } if(keyCode == UP || key == '5') { z-=4; } }
V ous pouvez tlcharger l'excutable >ici< pour le tester. J'espre que cette annexe vous a t utile. Et voil, c'est la fin, nous nous quittons Mais le tutoriel doit encore tre continu ! De nouvelles parties, plus intressantes les unes que les autres devraient sortir. Repassez de temps en temps, et n'hsitez pas essayer de dcouvrir Processing plus en profondeur seul Merci d'avoir suivi ce tutoriel .
Remerciements
[Link]
Partie 3 : Annexes
Je remercie mon prof d'ISI de St' Conflict pour ses conseils lors de la validation du tutoriel et pour ceux qu'il continue de me prodiguer
80/81
[Link]