<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>p5.js</title>
<link rel="stylesheet" href="style.css">
<!-- cette ligne est à décommenter si on souhaite avoir la dernière version de p5.js
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.4.23/p5.min.js"></script>
-->
<script src="p5.min.js"></script>
<script src="script.js"></script>
</head>
<body>
</body>
</html>
</br>
Le fichier script.js qui contiendra ceci au départ :
function setup() {
// à compléter ici
}
function draw() {
// à compléter ici
}
Enfin, vous mettrez la page en forme grâce au fichier de style style.css et vous aurez aussi besoin d'un dossier images pour stocker des fichiers (nous verrons ça plus tard).
Finalement, l'ensemble des fichiers dont vous avez besoin pour débuter est disponible sur l'ENT ou ici (à télécharger et dézipper dans le dossier ICN de votre clé ou de votre espace personnel).
Pour chaque exercice, vous téléchargerez une nouvelle version de ce projet "vide" et vous renommerez le dossier au nom de l'exercice.
Il ne vous reste plus qu'à ouvrir le fichier script.js avec NotePad++ et le fichier index.html avec le navigateur.
Vous êtes prêts à travailler !
var
suivi du nom de la variable et éventuellement de son initialisation à une valeur. Ces déclarations sont à faire avant le "function setup()
".
Par exemple un script pourrait commencer par :
var nom = "toto";
var age;
function setup() {
</br>
}
setup
est la méthode "lancée" au début du script lorsqu'on ouvre la page html (en fait, il peut y avoir une autre méthode qui se lance avant pour charger les images : la méthode preload
mais nous verrons cela plus tard). C'est dans cette méthode setup
que nous allons initialiser un certain nombre de paramètres et de variables.
function setup() {
// Création d'une fenêtre grise
createCanvas(400,400);// Dimensions
background(128);// Couleur de fond
//On trace un rectangle rempli en rouge
fill(255,0,0);//remplissage rouge
rect(100,100,300,100);
text("un rectangle rouge",100,50);
}
textSize()
);
fill()
);
draw
est une méthode "lancée" automatiquement un certain nombre de fois par seconde.
C'est dans cette méthode que nous écrirons les instructions de dessin lorsque nous voudrons animer l'écran.
draw()
, nous allons d'abord apprendre à dessiner des formes à l'écran. Dans cette partie, vous écrirez les instructions de dessin dans la méthode setup()
.
Pour une fenêtre définie par
createCanvas(200,100)
, les abscisses vont de 0 à 199 et les ordonnées de 0 à 99.
Enfin, pour en finir avec les généralités, à tout moment du programme, on peut connaître la largeur et la hauteur de la fenêtre à l'aide des mots-clés width
et height
. Ceci peut être pratique pour repérer le milieu de l'écran (qui a pour coordonnées (width/2,height/2)
).
point(30,40);
Attention, et ceci est vrai pour toutes les formes, il faut que les coordonnées du point soient entre 0 et width-1
pour l'abscisse et entre 0 et height-1
pour l'ordonnée; sinon on ne le voit pas !
line(xA,yA,xB,yB);
rect(xA,yA,larg,haut);
Il est aussi possible de modifier le mode de définition des rectangles (donner les coordonnées de deux coins opposés ou du centre et des largeurs/hauteurs), si vous en avez besoin, voir ici.
// ellipse de centre (50,50) de diamètre horiz 60 et vertical 20
ellipse(50,50,60,20);
Comme pour le rectangle, il existe plusieurs autres modes décrits ici. Le mode RADIUS
est sans doute le plus intéressant :
// Mode RADIUS : cercle de centre (100,50) et Rayon=20
ellipseMode(RADIUS);
ellipse(100,50,20,20);
D'autres instructions permettant de réaliser des formes diverses sur la page des références de
fill(R,G,B,t);
// R, G, B quantités de rouge, vert et bleu entre 0 et 255
// t : degré de transparence (0:transparent, 255:opaque)
fill(N);
// N étant entre 0 et 255 (0=noir, 255=blanc)
fill(#hhhhhh);
// hhhhhh : code hexadécimal de la couleur entre 0 et ffffff
noFill();// Pas de remplissage
La couleur de fond se modifie à l'aide de :
background(R,G,B);
Attention : modifier le fond après avoir construit des figures les efface !
Pour supprimer le contour, on commence par l'instruction :
noStroke();
Pour modifier la couleur et l'épaisseur du contour :
stroke(R,G,B,t);
strokeWeight(2);
function setup() {
createCanvas(600,600);
for (lgn=0; lgn<600; lgn = lgn+10) {
line(0, lgn, 600, lgn);
}
}
for
?
Vous pouvez les voir en plus grand à cette adresse http://reymarlioz.free.fr/icnmarlioz/p5dessin/.
setup
: le résultat est statique à l'écran. La méthode draw
va être très utile pour créer des animations (par exemple pour déplacer des personnages dans un jeu).
var lgn = 0;
function setup() {
createCanvas(600,600);
frameRate(2);
}
</br>
function draw() {
line(0,lgn, 600,lgn);
if (lgn < 600) {
lgn = lgn + 10;
}
}
frameRate
? (Modifier la valeur 2 pour tester)
for
ou while
) ? Comment expliquer que ce script trace plusieurs lignes ?
Méthode | Événement associé |
mousePressed() | un bouton de la souris est appuyé |
mouseReleased() | un bouton de la souris est relâché |
mouseClicked() | un bouton de la souris est cliqué (appui + relâche) |
mouseDragged() | la souris est déplacée avec un bouton enfoncé |
keyPressed() | une touche du clavier est appuyée |
keyReleased() | une touche du clavier est relâchée |
Variable | Paramètre enregistré |
mouseX | abscisse du curseur de la souris |
mouseY | ordonnée du curseur de la souris |
pmouseX | abscisse de la position précédente du curseur de la souris |
pmouseY | ordonnée de la position précédente du curseur de la souris |
key | dernière touche enfoncée |
keyCode | code de la dernière touche enfoncée |
function preload()
(à écrire au début du programme), on charge chaque image dans des variables (par exemple img1, img2, ...) à l'aide d'instructions img1 = loadImage("images/fichier.png")
(en remplaçant fichier.png par le nom de votre fichier bien sûr !);
image(img1,100,50)
.
var img1;
var x, y;
</br>
function preload() {
img1 = loadImage("images/FannyNatacha.png");
}
function setup() {
createCanvas(600,600);
}
function draw() {
x = int(random(600));
y = int(random(600));
image(img1,x,y);
}