Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// partage de liens //// une carte des membres//// (apéros) codelab


#1 2017-04-11 19:30:04 Blocage Projet ISN

imnotarobot
membre
Date d'inscription: 2017-04-11
Messages: 16

Blocage Projet ISN



Bonjour,
je poste ici pcq j'ai absolument besoin d'aide en isn. Alors que tous les groupes ont déja ou presque fini leurs projets, moi j'en suis qu'au début. Pour ne rien arranger, je loupe les deux séances d'isn à la rentrée car je passe mes oraux de langues. Il ne me reste donc qu'une séance et les vacances pour terminer (continuer).
Alors voici, mon jeu est le suivant:
des images défilent et le joueur doit cliquer sur les images correspondant au thème du jeu (ici le Maroc). A chaque bonne image cliquer, je voudrais que un point s'ajoute (compteur de point), si il clique sur une mauvaise image aucun point ne s'ajoute.
Où je suis rendue?
J'ai rentré toutes mes images (j'en ai que 13 pour l'instant), je l'ai fait défiler. J'ai crée un tableau où j'ai rentré les bonnes images (0 pour mauvaises 1 pour bonnes) et c'est tout. La prof m'a dit de faire ce tableau pour que le "compteur de point" sache laquelle est bonne laquelle est mauvaise. Maintenant je suis bloquée.
Mon programme:
PImage photo1;

PImage photo2;

PImage photo3;

PImage photo4;

PImage photo5;

PImage photo6;

PImage photo7;

PImage photo8;

PImage photo9;

PImage photo10;

PImage photo11;

PImage photo12;

PImage photo13;
int compt;
int[] ensemblephoto = {1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0};
void setup()
{
size(800,600);

background(255,50,50);

compt = 0;

photo1 = loadImage("babouche.jpg");

photo2 = loadImage("tatouage.jpg");

photo3 = loadImage("thé.jpg");

photo4 = loadImage("tajine.jpg");

photo5 = loadImage("caftan.jpg");

photo6 = loadImage("tajinedecor.jpg");

photo7 = loadImage("maroc.jpg");

photo8 = loadImage("corne de gazelle.jpg");

photo9 = loadImage("robe.jpg");

photo10 = loadImage("patisserie.jpg");

photo11 = loadImage("frites.jpg");

photo12 = loadImage("henne.jpg");

photo13 = loadImage("tisane.jpg");
}

void draw() {

compt=compt+1;

if(compt<100){

image(photo1,150,150) ;}

if((compt>100)&&(compt<200)){

image(photo2,150,150) ;}

if((compt>200)&&(compt<300)){

image(photo3,150,150);}

if((compt>300)&&(compt<400)){

image(photo4,150,150);}

if((compt>400)&&(compt<500)){

image(photo5,150,150);}

if((compt>500)&&(compt<600)){

image(photo6,150,150);}

if((compt>600)&&(compt<700)){

image(photo7,150,150);}

if((compt>700)&&(compt<800)){

image(photo8,150,150);}

if((compt>800)&&(compt<900)){

image(photo9,150,150);}

if((compt>900)&&(compt<1000)){

image(photo10,150,150);}

if((compt>1000)&&(compt<1100)){

image(photo11,150,150);}

if((compt>1100)&&(compt<1200)){

image(photo12,150,150);}

if((compt>1200)&&(compt<1300)){

image(photo13,150,150);
}

{cursor(HAND); // Affiche une main pour la souris
}
}

Hors ligne

 

#2 2017-04-11 19:56:01 Re : Blocage Projet ISN

imnotarobot
membre
Date d'inscription: 2017-04-11
Messages: 16

Re: Blocage Projet ISN



S'il vous plaît, personne pour m'aider?sad

Hors ligne

 

#3 2017-04-11 21:54:50 Re : Blocage Projet ISN

jojolaglaise
membre
Lieu: Basse Normandie
Date d'inscription: 2014-04-20
Messages: 128
Site web

Re: Blocage Projet ISN



Calmos, calmos. Bon, pour commencer et pour pouvoir justifier et comprendre les bribes de codes que nous, praticiens du forum, seront susceptibles de donner ici, je te conseille de prendre le temps de lire la documentation/tutos sur Processing.

>>> https://www.flossmanualsfr.net/processing/

J'imagine qu'il y a un oral, comprendre les concepts généraux utilisés en programmation n'est pas de trop pour défendre son projet. Il s'agit d'être à l'aise, ne serait-ce qu'agile un chouïa avec certaines notions… Bon j'ai fini de faire la morale… smile

On remarque qu'il y a beaucoup de répétitions dans ton code, notamment tes innombrables variables images. Typiquement, ce sont des choses qui peuvent se faire avec plus de paresse; si il y a bien un truc que l'ordinateur sait faire, c'est compter et répéter des tâches fastidieuses… Nous, on est flemmard, on assume!

Je reprends un peu ton programme. Ton idée si j'ai bien compris, c'est de faire correspondre ton tableau "ensemble photo" avec tes images, 1 pour vrai, 0 pour faux. Les indices de cette liste doivent correspondre avec les indices des photos présentées.

Tout d'abord, faisons le tableau d'images. Tu as 13 images en tout (et c'est possible que tu veuilles un jour changer le nombre d'images dans ton programmes). Si tu es en ISN, j'imagine que tu fais un peu de maths: bien, alors disons que tu as "n" images, soit un ensemble d'éléments de cardinal n. Pour l'instant je dis que n = 13.

int n = 13;
PImage[] photo = new PImage[n];

Maintenant, on va définir le contenu de chacune des images de la liste. On va utiliser une boucle (le principe d'itération de la boucle est similaire au sigma de la somme en maths). >> https://fr.flossmanuals.net/processing/les-repetitions/

void setup(){
  for(int i = 0; i < n; i++){
     photo[i] = loadImage("photo" + i + ".jpg");
  }
}

Évidemment pour que ça marche, il faudra soit renommer tes images dans l'ordre comme ça: "photo0.jpg", "photo1.jpg", etc. jusqu'à "photo12.jpg".Il y a d'autres façon de faire ça, mais il me semble que c'est la moins fastidieuse, et celle qui permet un code plus clair: en moins de 10 lignes, on a chargé toutes les images dans le programme.
J'ajoute ton tableau "ensemblephoto" au programme, nous avons maintenant deux tableau de même taille. On pourra alors comparer aisément les deux, on gagnera en flexibilité que d'utiliser moult conditions. Voilà ce qu'on a pour l'instant:

int n = 13;
PImage[] photo = new PImage[n];
int[] ensemblephoto = {1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0};

void setup(){
  for(int i = 0; i < n; i++){
     photo[i] = loadImage("photo" + i + ".jpg");
  }
}

Maintenant, je choisis arbitraiement la façon de jouer(les images s'affichent une à une, on peut les passer avec les touches, ou bien cliquer pour dire "celle-ci est dans le thème, je valide et passe à une autre image". Je te laisse méditer sur ce morceau de code très perfectible:

int n = 13;
PImage[] photo = new PImage[n];
int[] ensemblephoto = {1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0};

int compteur = 0;
int score = 0;

void setup(){
  size(600, 400);
  for(int i = 0; i < n; i++){
     photo[i] = loadImage("photo" + i + ".png");
  }
}

void draw(){
  image(photo[compteur], 0, 0);
  println(score);
}

void mouseReleased(){
  if(ensemblephoto[compteur] == 1){
    score += 100;
  }
  compteur+=1;
}

void keyReleased(){
  compteur += 1;
}

Si l'image montrée (l'indice courant est commun à la liste d'image et au tableau des entiers) et que la variable du tableau "ensemblephoto" pointe un "1", alors on ajoute 100 points au score total et on passe à la suivante.

C'est un excellent exercice pour s'initier aux tableaux, voilà d'ailleurs un bon tutoriel sur le sujet:
http://www.ecole-art-aix.fr/article1230.html

Dernière modification par jojolaglaise (2017-04-11 22:02:14)

Hors ligne

 

#4 2017-04-13 10:41:14 Re : Blocage Projet ISN

imnotarobot
membre
Date d'inscription: 2017-04-11
Messages: 16

Re: Blocage Projet ISN



Merci de votre reponse, désolé du retard je suis en pleine révision ^^ Je vais essayer cela. Est-ce que Je  pourrais vous posez des questions si je ne comprends' Pas des choses?
Bonne journée! smile

Hors ligne

 

#5 2017-04-13 13:06:53 Re : Blocage Projet ISN

jojolaglaise
membre
Lieu: Basse Normandie
Date d'inscription: 2014-04-20
Messages: 128
Site web

Re: Blocage Projet ISN



Oui, oui… en sachant que je risque de ne pas être très réactif cette fin de semaine… mais à savoir qu'il y a de nombreux sujets sur le forum et toute une kyrielle de tutos sur le net en cas de pépin.

Hors ligne

 

#6 2017-04-13 17:59:58 Re : Blocage Projet ISN

imnotarobot
membre
Date d'inscription: 2017-04-11
Messages: 16

Re: Blocage Projet ISN



J'ai cherché plusieurs fois Mais je ne trouve... ca doit être moi qui ne comprends rien aha. Bonne fin de semaine 😊

Hors ligne

 

#7 2017-04-15 15:56:44 Re : Blocage Projet ISN

imnotarobot
membre
Date d'inscription: 2017-04-11
Messages: 16

Re: Blocage Projet ISN



void setup(){
  for(int i = 0; i < n; i++){
     photo[i] = loadImage("photo" + i + ".jpg");
  }
}

Évidemment pour que ça marche, il faudra soit renommer tes images dans l'ordre comme ça: "photo0.jpg", "photo1.jpg", etc. jusqu'à "photo12.jpg".

Bonjour, j'ai un peu de temps pour essayer le programme aujourd'hui. Quand vous dites renommer les images, je dois l'ecrire comme ça?
    photo[i] = loadImage("photo0" + i + ".jpg");
    photo[i] = loadImage("photo1" + i + ".jpg"); ect ect ou bien photo[i] = loadImage("photo0.jpg" + i + ".jpg");
                                                                                            photo[i] = loadImage("photo1.jpg" + i + ".jpg");

Je ne comprends pas trop...

Hors ligne

 

#8 2017-04-15 19:40:09 Re : Blocage Projet ISN

jojolaglaise
membre
Lieu: Basse Normandie
Date d'inscription: 2014-04-20
Messages: 128
Site web

Re: Blocage Projet ISN



imnotarobot a écrit:

void setup(){
  for(int i = 0; i < n; i++){
     photo[i] = loadImage("photo" + i + ".jpg");
  }
}

Évidemment pour que ça marche, il faudra soit renommer tes images dans l'ordre comme ça: "photo0.jpg", "photo1.jpg", etc. jusqu'à "photo12.jpg".

Bonjour, j'ai un peu de temps pour essayer le programme aujourd'hui. Quand vous dites renommer les images, je dois l'ecrire comme ça?
    photo[i] = loadImage("photo0" + i + ".jpg");
    photo[i] = loadImage("photo1" + i + ".jpg"); ect ect ou bien photo[i] = loadImage("photo0.jpg" + i + ".jpg");
                                                                                            photo[i] = loadImage("photo1.jpg" + i + ".jpg");

Je ne comprends pas trop...

Laisse le code comme je l'ai écrit, renomme juste tes fichiers en dehors du programme, pour être explicite: en double cliquant ou clic droit sur tes fichiers et renomme les comme ça :" photo0.jpg", "photo1.jpg", photo2.jpg", etc.
La boucle dans le setup

void setup(){
  for(int i = 0; i < n; i++){
     photo[i] = loadImage("photo" + i + ".jpg");
  }
}

se chargera d'importer ces images; l'utilité ici est de ne pas écrire autant de ligne de code que de fichiers importés dans le programme.

Hors ligne

 

#9 2017-04-15 23:00:44 Re : Blocage Projet ISN

imnotarobot
membre
Date d'inscription: 2017-04-11
Messages: 16

Re: Blocage Projet ISN



void draw(){
  image(photo[compteur], 0, 0);
  println(score);
}

Ah d'accord, je vois! Merci smile
Je me demandais pour la ligne image(photo[compteur], 0, 0) il marque une erreur, je dois importer une image?

Hors ligne

 

#10 2017-04-17 09:13:21 Re : Blocage Projet ISN

jojolaglaise
membre
Lieu: Basse Normandie
Date d'inscription: 2014-04-20
Messages: 128
Site web

Re: Blocage Projet ISN



Lorsque j'exécute le code, je n'ai pas d'erreurs, quelle est la tienne? Je clique ou je tape sur un bouton pour passer les images (j'ai expliqué ça plus haut au cas ou).

Mais j'imagine que c'est pour les erreurs de type "arrayIndexOutOfBoundsException"; je n'ai pas écrit les conditions qui permettent de controler si compteur est positif et inférieur au nombre d'images (n). C'est quelque chose comme :

void mouseReleased(){
  if(compteur < n-1){
    if(ensemblephoto[compteur] == 1){
      score += 100;
    }
    compteur+=1;
  }
}

void keyReleased(){
   if(compteur < n-1){
    compteur += 1;
   }
}

Sans cela, on peut incrémenter à l'infini la variable compteur et "déborder" ou "exiger" des indices de tableaux qui n'existent pas (les nombres négatifs ou ce qui est supérieur à n). Lit bien le code en prenant soin de te rappeler:

1°) On affiche l'image et en même temps, on pointe sur l'indice du tableau ("ensemblephoto") des réponses correspondantes. La variable "compteur" sert à ça, à dire sur quel indice on pointe, tout en "accordant" les deux tableaux.
2°) Si on clique que que l'indice du tableau des réponses est égale à un, alors on change d'image et on gagne des points. Sinon, on passe l'image (mais, implicitement, on gagne rien).
3°) Si on appuie sur une touche du clavier, alors on passe l'image.

Bonne chance!

Dernière modification par jojolaglaise (2017-04-17 09:14:44)

Hors ligne

 

#11 2017-04-17 10:14:06 Re : Blocage Projet ISN

imnotarobot
membre
Date d'inscription: 2017-04-11
Messages: 16

Re: Blocage Projet ISN



Il me mette toujours une erreur sur la ligne image(photo[compteur], 0, 0).
Il marque NullPointerExeption et avec ca jusqu'a l'image 12:

The file "photo0.png" is missing or inaccessible, make sure the URL is valid or that the file has been added to your sketch and is readable.
The file "photo1.png" is missing or inaccessible, make sure the URL is valid or that the file has been added to your sketch and is readable.

Hors ligne

 

#12 2017-04-17 19:16:37 Re : Blocage Projet ISN

jojolaglaise
membre
Lieu: Basse Normandie
Date d'inscription: 2014-04-20
Messages: 128
Site web

Re: Blocage Projet ISN



Tu as bien renommé et importé tes fichiers dans ton sketch Processing? Les messages d'erreur le font douter.
Un exemple en fichier joint.

Hors ligne

 

#13 2017-04-17 23:20:43 Re : Blocage Projet ISN

imnotarobot
membre
Date d'inscription: 2017-04-11
Messages: 16

Re: Blocage Projet ISN



Bonsoir, oui je les ai bien importe et renommé. Une connaissance à lu le programme et m'a dit que le problème venait ptr de là: la variable
compteur dépasse la valeur 12 à un moment.

Hors ligne

 

#14 2017-04-18 09:41:36 Re : Blocage Projet ISN

jojolaglaise
membre
Lieu: Basse Normandie
Date d'inscription: 2014-04-20
Messages: 128
Site web

Re: Blocage Projet ISN



jojolaglaise a écrit:

Lorsque j'exécute le code, je n'ai pas d'erreurs, quelle est la tienne? Je clique ou je tape sur un bouton pour passer les images (j'ai expliqué ça plus haut au cas ou).

Mais j'imagine que c'est pour les erreurs de type "arrayIndexOutOfBoundsException";[b] je n'ai pas écrit les conditions qui permettent de controler si compteur est positif et inférieur au nombre d'images (n). C'est quelque chose comme :

void mouseReleased(){
  if(compteur < n-1){
    if(ensemblephoto[compteur] == 1){
      score += 100;
    }
    compteur+=1;
  }
}

void keyReleased(){
   if(compteur < n-1){
    compteur += 1;
   }
}[/b]

Sans cela, on peut incrémenter à l'infini la variable compteur et "déborder" ou "exiger" des indices de tableaux qui n'existent pas (les nombres négatifs ou ce qui est supérieur à n). Lit bien le code en prenant soin de te rappeler:

1°) On affiche l'image et en même temps, on pointe sur l'indice du tableau ("ensemblephoto") des réponses correspondantes. La variable "compteur" sert à ça, à dire sur quel indice on pointe, tout en "accordant" les deux tableaux.
2°) Si on clique que que l'indice du tableau des réponses est égale à un, alors on change d'image et on gagne des points. Sinon, on passe l'image (mais, implicitement, on gagne rien).
3°) Si on appuie sur une touche du clavier, alors on passe l'image.

Bonne chance!

Oui oui oui mais tu as essayé le code que je t'ai envoyé? Marche t-il? Et pour le compteur qui dépasse 12, je te renvoie justement à une de mes réponses (voir citation ou plus haut dans le fil). Envoie moi ton code, que je jette un coup d'œil, éventuellement en zip avec les fichiers.

Hors ligne

 

#15 2017-04-18 10:52:18 Re : Blocage Projet ISN

imnotarobot
membre
Date d'inscription: 2017-04-11
Messages: 16

Re: Blocage Projet ISN



Erreur bête de ma part, désolé! Tout très bien.
Cependant, ici les images ne défilent pas, c'est juste quand on clic dessus (ou sur le clavier) qu'elle change, je voudrai qu'elles défilent toutes seules. Dans mon programme original, je l'ai fait mais j'arrive pas à l'appliquer à ce programme comment je pourrai faire pour qu'elles défilent toutes seules?

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2017