INTRODUCTION :

Porteur du projet : Ariane Loizon, Mathias Lorenzetti

Contexte : Processing

BASE DE QUESTIONNEMENT :

Qu’est ce qui rend un jeu agréable ou non à jouer ? Le rôle de maître du jeu (comme le compteur au loup garou ou le maître de la girouette au twister) qui est là pour diriger le jeu et qui ne prend pas véritablement place aux côté des autres joueurs est souvent celui dont personne ne veut. La robotisation, permettant l’élimination de certains métiers ou de tâches trop lourdes, peut ici remplir ce poste ingrat et par la même occasion donner la possibilité à tous les joueurs d’avoir le même type de rôle et donc de s’amuser en même temps. La robotisation peut donc ici être vue comme une alternative positive de l’homme. Plutôt que de « voler » la place d’un homme elle lui permet de choisir le rôle qu’il veut occuper dans le jeu. Pour cela, dérivation du jeu twister en un jeu interactif mêlant analogique et digital. Jeu programmé en processing et réalisé avec un makey-makey.

PROGRAMME :

programme_processing.zip

schéma explicatif du programme

UTILISATION DE DEUX LIBRAIRIES :

// IMPORT LIBRAIRIES
import processing.sound.*;
import processing.video.*;
// DÉCLARATION VARIABLES GLOBALES
// sons
SoundFile mga; // "main gauche argent"
SoundFile mgo; // "main gauche or"
SoundFile mgb; // "main gauche bronze"
// videos
Movie AnimMDa; // vidéo main droite argent
Movie AnimMDb; // vidéo main droite bronze
Movie AnimMDo; // vidéo main droite or
// INNITIALISATION DES VARIABLES GLOBALES ET DES PARAMETRES D'AFFICHAGE
void setup(){
// initialisation des variables de sons
mga = new SoundFile(this, "mgA.wav");
mgo = new SoundFile(this, "mgO.wav");
mgb = new SoundFile(this, "mgB.wav");
// initialisation des variables de vidéo
AnimMDa = new Movie(this, "MDargent.mov");
AnimMDb = new Movie(this, "MDbronze.mov");
AnimMDo = new Movie(this, "MDor.mov");
}
// BOUCLE D'AFFICHAGE, RAFRAICHISSEMENT DE LA FENETRE D'AFFICHAGE
void draw(){
// vérifie si vidéos peuvent être lancées
if (AnimPGa.available()) { // Si nouvelle trame dispo alors
AnimPGa.read(); // Lecture de la trame
image(AnimPGa, 0, 0, width, height); // Et affichage à l’écran
}
if (AnimPGb.available()) { // Si nouvelle trame dispo alors
AnimPGb.read(); // Lecture de la trame
image(AnimPGb, 0, 0, width, height); // Et affichage à l’écran
}
if (AnimPGo.available()) { // Si nouvelle trame dispo alors
AnimPGo.read(); // Lecture de la trame
image(AnimPGo, 0, 0, width, height); // Et affichage à l’écran
}
choixcorpcouleur();
}
// MÉTHODES
void choixcorpcouleur(){
pdo.play(); // alors son "pied droit or" se lance
AnimPDo.play(); // alors video se lance
AnimPDo.jump(0); // alors video se rembobinent
}

MÉTHODES PRINCIPALES :

// choix de l'élément du corps et de la couleur
void choixcorpcouleur(){
xcorps = int(random(0, 4)); // corps prend valeur aléatoire entre 0 et 3
xcouleur = int(random(0, 3)); // couleur prend valeur aléatroire entre 0 et 3
if (xcorps == 0){ // si variable du corps = 0
corps = "pied gauche"; // alors corps = pied gauche
if (xcouleur == 0){ // si variable couleur = 0
couleur = "or"; // alors couleur = or
Pg = false; // alors boolean pied gauche devient faux
or = false; // alors boolean or devient faux
pgo.play(); // alors son "pied gauche or" se lance
AnimPGo.play(); // alors vidéo se lance
AnimPGo.jump(0); // alors vidéo se rembobine
}
if (xcouleur == 1){ // si variable couleur = 1
couleur = "argent"; // alors couleur = argent
Pg = false; // alors boolean pied gauche devient faux
argent = false; // alors boolean argent devient faux
pga.play(); // alors son "pied gauche argent" se lance
AnimPGa.play(); // alors vidéo se lance
AnimPGa.jump(0); // alors vidéo se rembobine
}
if (xcouleur == 2){ // si variable couleur = 2
couleur = "bronze"; // alors couleur = bronze
Pg = false; // alors boolean pied gauche devient faux
bronze = false; // alors boolena bronze devient faux
pgb.play(); // alors son "pied gauche bronze" se lance
AnimPGb.play(); // alors video se lance
AnimPGb.jump(0); // alors video se rembobine
}
ccpg = corps + " " + couleur; // chaine de caractère ccpg = partie du corps + couleur associée
println(ccpg); // afficher ccpg dans console
}

// valide positon du joueur
void keyPressed(){
if ((Pg == false) && (or == false)){ // si boolean pied gauche et boolean or = faux
if (key == 'w' || key == 'a' || key == 's'){ // si touches w / a / s sont appuyées
Pg = true; // alors boolean pied gauche devient vrai
or = true; // alors boolean or devient vrai
}
}
if ((Pg == false) && (argent == false)){ // si boolean pied gauche et boolean argent = faux
if (key == 'd' || key == 'f' || key == 'g'){ // si touches d / f / g sont appuyées
Pg = true; // alors boolean pied gauche devient vrai
argent = true; // alors boolean argent devient vrai
}
}
if (key == CODED){
if ((Pg == false) && (bronze == false)){ // si boolean pied gauche et boolean bronze = faux
if (keyCode == UP || keyCode == DOWN || keyCode == LEFT){ // si touches haut / bas / gauche sont appuyées
Pg = true; // alors boolean pied gauche devient vrai
bronze = true; // alors boolean bronze devient vrai
}
}
}
if ((Pg == true) && (Pd == true) && (Mg == true) && (Md == true) && (or == true) && (argent == true) && (bronze == true)){ // si tous les boolean sont vrais
i = i + 1; // compteur de joueur +1
if (i == xj){ // si compteur de joueur = nombre de joueur
i = 1; // alors compteur de joueur = 1
}
j = "joueur" + " " + (i);
println("");
println(j); // affiche numéro du joueur dans console
if (i == 1){ // si compteur de joueur = 2
j1.play(); // alors son "joueur 1" se lance
}
if (i == 2){ // si compteurde joueur = 1
j2.play(); // alors son "joueur 2" se lance
}
}

}

RÉFÉRENCES :

Twister, MB Jeux

Les éditions volumiques

Dominic Crapuchettes, conférence Ted Talks

IMAGES ET VIDÉO :

twister-filmcourt.mp4