» codelab : http://codelab.fr/accueil » Forum : Processing : http://codelab.fr/processing » Besoin d'aide projet ISN : http://codelab.fr/5760 Ceci est la version imprimable d'un sujet du forum, pour retourner à la version complète : Besoin d'aide projet ISN |
muse — 2015-05-02 12:48:23 |
Bonjour à tous, je suis nouvelle sur ce forum et viens de commencer la programmation cette année. |
Mushussu — 2015-05-02 16:12:28 |
Ton projet est rigolo. ArrayList<Aliment> aliments; ArrayList<Aliment> hamburger; La classe Aliment devrait contenir comme variable la position de l'aliment, sa vitesse et une image à afficher. class Aliment { float x, y, vitesse; PImage img; Aliment(String s) { x = random(30, 1160); y = 0; vitesse = random(5, 10); img = loadImage(s); } } Il faut ensuite initialiser les listes et les éléments de la liste d'aliments et l'unique élément de la liste hamburger qui est composé du pain porteur. |
muse — 2015-05-02 16:39:50 |
Je te remercie énormément! C'est vrai que l'idée de créer une classe aliment m'a l'air très bien, je vais tester ça et je te remercie encore une fois. |
muse — 2015-05-02 18:18:43 |
Par contre avec quoi as tu retaillé les images? Car avec Gimp je n'arrive qu'à redimensionner la fenêtre, mais pas l'image en elle même car il y a un canal alpha. |
Mushussu — 2015-05-02 18:57:45 |
Je l'ai fait avec Gimp, tu fais une sélection de 125 x 88 que tu places autour de l'image puis tu vas dans Image / Rogner sur la sélection. Et hop ! |
muse — 2015-05-02 19:48:10 |
Ah d'accord, je ne savais pas, merci beaucoup c'est vraiment gentil! |
muse — 2015-05-02 23:45:27 |
Donc la classe Aliment devra comporter toutes les autres classes (tomates, salade...), c'est bien ça? Parce que je sais pas exactement comment m'y prendre, s'il ne faut mettre qu'une image dans la classe Aliment :/ |
Mushussu — 2015-05-02 23:56:01 |
Tu oublies les autres classes. Il n'y a que la classe Aliment, ce sont les instances de la classe qui représentent les différents aliments. Tu peux les instancier comme cela : La variable img de la classe s'initialise pour chaque instance de la classe Aliment avec un chemin vers une image différent (cornichon.png …) |
muse — 2015-05-03 00:00:30 |
Ah d'accord j'vais tester ça, merci beaucoup de ton aide |
muse — 2015-05-03 14:51:06 |
Voilà à quoi ressemble mon programme pour l'instant, je n'ai pas encore fait l'empilement avec les listes car je ne sais pas comment m'y prendre, je dois utiliser une boucle? |
Mushussu — 2015-05-03 15:53:48 |
Bonjour, ArrayList<Aliment> aliments; ArrayList<Aliment> hamburger; void setup() { size(1300, 675); smooth(); aliments = new ArrayList<Aliment>(); aliments.add(new Aliment("salade.png")); aliments.add(new Aliment("cornichon.png")); aliments.add(new Aliment("fromage.png")); aliments.add(new Aliment("oignon.png")); aliments.add(new Aliment("steak.png")); aliments.add(new Aliment("tomate.png")); aliments.add(new Aliment("pain.png")); hamburger = new ArrayList<Aliment>(); hamburger.add(new Aliment("painporteur.png", true)); imageMode(CENTER); } void draw() { background(0); cursor(HAND); for (Aliment a : hamburger) { a.miseAjourEmpilement(); a.display(); } for (Aliment a : aliments) { a.miseAjour(); a.display(); } } class Aliment { float x, y, vitesse; PImage img; Aliment(String s) { x = random(30, 1160); y = 0; vitesse = random(5, 10); img = loadImage(s); } Aliment(String s, boolean e) { this(s); if (e) { y = height - 100; } } void miseAjourEmpilement() { x = mouseX; } void miseAjour() { y+=vitesse; } void display() { image(img, x, y); } } Ensuite, il faut que tu vérifies dans la méthode miseAJour si l'aliment qui choie est dans la zone de contact du hamburger. Comme toutes les images ont la même hauteur, il est simple de calculer la hauteur actuelle du hamburger. |
muse — 2015-05-06 14:28:03 |
Bonjour, j'ai essayé de faire ce que tu m'as proposé pour l'empilement mais le problème est que le joueur doit empiler le maximum d'aliments jusqu'à ce que le pain du haut arrive, il ne doit donc en avoir qu'un seul et la hauteur du hamburger sera aléatoire. |
muse — 2015-05-06 16:00:58 |
J'ai eu un problème pour changer les aliments de listes, voici mon programme: |
Mushussu — 2015-05-06 23:31:32 |
Il faut bien que tu comprennes ce qui est dans la classe et hors de la classe. ArrayList<Aliment> aliments; ArrayList<Aliment> hamburger; void setup() { size(1300, 675); smooth(); noCursor(); aliments = new ArrayList<Aliment>(); aliments.add(new Aliment("salade.png")); aliments.add(new Aliment("cornichon.png")); aliments.add(new Aliment("fromage.png")); aliments.add(new Aliment("oignon.png")); aliments.add(new Aliment("pain.png")); aliments.add(new Aliment("steak.png")); aliments.add(new Aliment("tomate.png")); hamburger = new ArrayList<Aliment>(); hamburger.add(new Aliment("painporteur.png", true)); imageMode(CENTER); cursor(HAND); } void draw() { background(0); for (Aliment a : hamburger) { a.miseAJour(); a.affichage(); } for (int i = 0; i < aliments.size (); i++) { Aliment a = aliments.get(i); boolean empilement = a.miseAJour(hamburger.size()); if (empilement) { hamburger.add(a); aliments.remove(a); } a.affichage(); } } class Aliment { float x, y, vitesse; float decalage; PImage img; Aliment(String s) { x = random(30, 1160); y = 0; vitesse = random(5, 10); img = loadImage(s); decalage = 0; } Aliment(String s, boolean e) { this(s); if (e) { y = height - 100; } } void miseAJour() { x = mouseX - decalage; } boolean miseAJour(int empilement) { if ((x > mouseX - 40) && (x < mouseX + 40) && (y > height - 110 - empilement * img.height / 4) && (y < height - 100 - empilement * img.height / 4)) { y = height - 100 - empilement * img.height / 4; decalage = mouseX - x; return true; } else { y += vitesse; if (y > height) { x = random(30, 1160); y = 0; } return false; } } void affichage() { image(img, x, y); } } |
muse — 2015-05-11 18:53:31 |
Bonjour, |
muse — 2015-05-14 15:01:31 |
J'ai essayé avec la méthode contains() mais cela n'a pas fonctionné, peut être que je m'y suis mal prise :/ |
Mushussu — 2015-05-14 15:58:50 |
Bonjour, |
muse — 2015-05-14 16:52:46 |
Merci beaucoup! Le programme fonctionne trés bien, il y a juste un passage que je n'ai pas compris, à quoi sert : nom = s.substring(0, s.length() - 4); ? |
Mushussu — 2015-05-14 17:18:10 |
En fait, j'enlève le ".png" du nom du fichier et je stocke ce résultat dans la variable nom que j'utilise après dans la comparaison pour trouver si c'est le "pain". |
muse — 2015-05-23 14:25:31 |
Bonjour, |