Bonjour,
J'ai posté un message tout à l'heure mais à mon avis, pas au bon endroit... Donc, je vous le copie ici !
Bonjour,
Je suis nouvelle sur ce forum et je débute également avec processing. Je fais actuellement un jeu de l'oie interactif. Je vous explique mon dilemme car je ne suis pas sûre de la façon dont je dois procéder en programmation. Comme tout jeu de l'oie, il me fallait des dés. J'ai donc fait 6 animations (.mov) de dés pour avoir six possibilités différentes de résultats. Je me suis dis donc, qu'il me fallait faire un random avec les vidéos. Cependant, je ne trouve strictement aucun exemple sur internet donc, je me demande si c'est bien la meilleure façon de faire. Quelqu'un a-t-il un avis sur le sujet ???
Mille mercis pour "la ou les" réponses
Hors ligne
Bonjour et bienvenue,
Je ne suis pas bien sûr de comprendre ta question, il n'y a peut être pas de "meilleure manière" pour montrer les résultats d'un tirage de dé, tu pourrais aussi afficher des faces de dés graphiquement (avec les fonctions graphiques de processing : ellipse, etc.) qui défilent rapidement, et progressivement plus lentement jusqu'au résultat, ou faire défiler verticalement à la manière d'un jackpot, ou d'un paquet de manières différentes
C'est plutôt de choix graphique en rapport avec l'ensemble de ton jeu.
Hors ligne
Un petit exemple, finalement bien plus long que ce que j'avais imaginé avant de le faire...
boolean resultat_affiche; int resultat; int resultat_temp; int step; int next_step; int compteur; void setup() { size(500, 500); frameRate(25); initialiser(); } void draw() { if (step <= 0) { resultat_affiche = true; } if (resultat_affiche) { background(255, 0, 0); afficher_valeur(resultat); } else { background(0); if (step <= next_step) { next_step = next_step - compteur; resultat_temp = tirage_de(); } afficher_valeur(resultat_temp); step --; compteur ++; } } void initialiser() { resultat_affiche = false; step = 100; next_step = 99; compteur = 0; resultat = tirage_de(); } int tirage_de() { return floor(random(6) + 1); } void afficher_valeur(int chiffre) { fill(255); stroke(255); rect(50, 50, 400, 400); fill(0); ellipseMode(CENTER); switch(chiffre) { case 1 : ellipse(width / 2, height / 2, 40, 40); break; case 2 : ellipse(width / 3, 2 * height / 3, 40, 40); ellipse(2 * width / 3, height / 3, 40, 40); break; case 3 : ellipse(width / 3, 2 * height / 3, 40, 40); ellipse(width / 2, height / 2, 40, 40); ellipse(2 * width / 3, height / 3, 40, 40); break; case 4 : ellipse(width / 3, height / 3, 40, 40); ellipse(width / 3, 2 * height / 3, 40, 40); ellipse(2 * width / 3, height / 3, 40, 40); ellipse(2 * width / 3, 2 * height / 3, 40, 40); break; case 5 : ellipse(width / 3, height / 3, 40, 40); ellipse(width / 3, 2 * height / 3, 40, 40); ellipse(width / 2, height / 2, 40, 40); ellipse(2 * width / 3, height / 3, 40, 40); ellipse(2 * width / 3, 2 * height / 3, 40, 40); break; case 6 : ellipse(width / 3, height / 3, 40, 40); ellipse(width / 2, height / 3, 40, 40); ellipse(width / 3, 2 * height / 3, 40, 40); ellipse(2 * width / 3, height / 3, 40, 40); ellipse(width / 2, 2 * height / 3, 40, 40); ellipse(2 * width / 3, 2 * height / 3, 40, 40); break; } } void keyPressed() { if (key == ' ') { // espace pour tirer un nouveau chiffre initialiser(); } }
Hors ligne
Bonjour,
Le dé fût un de mes premiers programme en Processing. Je n'ai pas pris le temps de le revoir, il y a sans doute beaucoup de chose à améliorer. Mais cela peut t'inspirer.
int compteurX = 0; int rotationX = 0; int compteurY = 0; int rotationY = 0; int compteurZ = 0; int rotationZ = 0; Cube cube = new Cube(); void setup() { size(400, 400, P3D); stroke(0); lights(); frameRate(30); } void draw() { if (compteurX < rotationX) { compteurX = compteurX + 10; } if (compteurY < rotationY) { compteurY = compteurY + 10; } if (compteurZ < rotationZ) { compteurZ = compteurZ + 10; } background(0); translate(width/2, height/2, 0); cube.rotationCube(compteurX, compteurY, compteurZ); cube.dessinCube(); } void keyPressed() { compteurX = (rotationX % 360); rotationX = compteurX + 90*(1 + int(random(8))); compteurY = (rotationY % 360); rotationY = compteurY + 90*(1 + int(random(8))); compteurZ = (rotationZ % 360); rotationZ = compteurZ + 90*(1 + int(random(8))); } class Cube { Cube(){ } void rotationCube(int rx, int ry, int rz){ rotateX(radians(rx)); rotateY(radians(ry)); rotateZ(radians(rz)); } void dessinCube() { stroke(0); fill(255, 0, 0); box(100); fill(255); // Le 6 dessinPoint(0, 30, 50.1, 0 ,0); dessinPoint(0, -30, 50.1, 0 ,0); dessinPoint(30, 30, 50.1, 0 ,0); dessinPoint(-30, 30, 50.1, 0 ,0); dessinPoint(30, -30, 50.1, 0 ,0); dessinPoint(-30, -30, 50.1, 0 ,0); // Le 1 dessinPoint(0, 0, -50.1, 0 ,0); // Le 5 dessinPoint(-50.1, 30, -30, 0, 90); dessinPoint(-50.1, 30, 30, 0, 90); dessinPoint(-50.1, 0, 0, 0, 90); dessinPoint(-50.1, -30, 30, 0, 90); dessinPoint(-50.1, -30, -30, 0, 90); // Le 2 dessinPoint(50.1, -30, -30, 0, 90); dessinPoint(50.1, 30, 30, 0, 90); // Le 4 dessinPoint(-30, 50.1, -30, 90, 0); dessinPoint(30, 50.1, -30, 90, 0); dessinPoint(-30, 50.1, 30, 90, 0); dessinPoint(30, 50.1, 30, 90, 0); // Le 3 dessinPoint(-30, -50.1, -30, 90, 0); dessinPoint(0, -50.1, 0, 90, 0); dessinPoint(30, -50.1, 30, 90, 0); } void dessinPoint(float px, float py, float pz, int rx, int ry) { pushMatrix(); translate(px, py, pz); rotateX(radians(rx)); rotateY(radians(ry)); noStroke(); ellipse(0, 0, 18, 18); popMatrix(); } }
Hors ligne
euh, il manque ta classe Cube
Hors ligne
Sinon, pour utiliser des vidéos,
ton programme peut choisir la vidéo en fonction d'un jet de dés
la fonction random() est là : http://processing.org/reference/random_.html
int de=int(random(6)+1) si je n'm'abuse
random(6) retourne un flottant entre 0 et 5
Hors ligne
tu peux aussi taper int()random(6)+1 , ça marche aussi, on appel ça un casting
Hors ligne
Merci maître …
Hors ligne
OUi, en effet !
Désolé, j'aurais dû être plus attentif !
(J'avais mal fait mon copier/coller !!!!)
C'est vraiment très chouette !!!
Hors ligne