bonjour.
Est il possible de faire des cliquer déposé ,avec plusieurs objets ,qui puissent fonctionner indépendamments les uns des autres.
Merci.
int a=50,b=100; int c=100,d=75; void setup(){ size(500,500); } void draw() { background(200); joueur_1(); joueur_2(); } void joueur_1(){ if (mousePressed == true) { a=mouseX; b=mouseY; ellipse(a,b,50,50); } else{ ellipse(a,b,50,50); } } void joueur_2(){ if (mousePressed == true) { c=mouseX; d=mouseY; rect(c,d,50,50); } else{ rect(c,d,50,50); } }
Hors ligne
Oui, bien sûr, pour cela il faut penser classe d'objets. Il y a encore moyen d'être plus concis et indépendant. Mais cela te demande des connaissances en héritage. J'ai voulu rendre ceci accessible sans ces notions.
Joueur[] joueurs; void setup() { size(500, 500); ellipseMode(CORNER); joueurs = new Joueur[2]; joueurs[0] = new Joueur(100, 100, 50, 50, "Rectangle"); joueurs[1] = new Joueur(200, 100, 50, 50, "Ellipse"); } void draw() { background(255); for (Joueur j : joueurs) { j.affichage(); } } void mousePressed() { for (Joueur j : joueurs) { j.selectionner(mouseX, mouseY); } } void mouseDragged() { for (Joueur j : joueurs) { j.bouger(mouseX, mouseY); } } void mouseReleased() { for (Joueur j : joueurs) { j.deselectionner(); } } class Joueur { PVector position; String forme; boolean selection; int largeur, hauteur; int decalageX, decalageY; Joueur(int x, int y, int _largeur, int _hauteur, String _forme) { position = new PVector(x, y); largeur = _largeur; hauteur = _hauteur; forme = _forme; selection = false; } void selectionner(int x, int y) { if (forme.equals("Rectangle") && (x > position.x) && (x < position.x + largeur) && (y > position.y) && (y < position.y + hauteur)) { selection = true; } if (forme.equals("Ellipse") && (dist(position.x + largeur / 2, position.y + hauteur / 2, x, y) < largeur / 2)) { selection = true; } if (selection) { decalageX = int(x - position.x); decalageY = int(y - position.y); } } void bouger(int x, int y) { if (selection) { position.x = x - decalageX; position.y = y - decalageY; } } void deselectionner() { selection = false; } void affichage() { if (selection) { fill(255, 0, 0); } else { noFill(); } if (forme.equals("Rectangle")) { rect(position.x, position.y, largeur, hauteur); } if (forme.equals("Ellipse")) { ellipse(position.x, position.y, largeur, largeur); } } }
Hors ligne
Merci pour le programme ,je vois un un for " for (Joueur j : joueurs) {"cela fait quoi exactement ?.c'est trés compliqué comme programme pour 2 objets imagine un jeu de dame!Il va me falloir le reste de mes jours pour comprendre.
Hors ligne
En gros je voulais faire un truc qui fasse jouer l'ordinateur tout seul;mais ce n'est pas fini les deux premières cases fonctionnent(et encore les croix ne reste pas) ,mais si tu mets juste 100 case il y en a jusqu'à la nuit des temps.
int nb=3; int [][]tab_max=new int[nb][nb]; int [][]tab_min=new int[nb][nb]; int val_max=1; int val_min=-1; int val=0; int a,b; boolean bouton=true; void setup(){; size(400,400); for(int i=0;i<nb;i++) { for(int j=0;j<nb;j++) { tab_max[i][j]=val_max; tab_min[i][j]=val_min; } } } void draw(){ affichage_tabl(); affichage_grille(); donner(); a=mouseX; b=mouseY; println(a); println(b); } void affichage_tabl(){ background(200); for(int i=0;i<nb;i++) { for(int j=0;j<nb;j++) { fill(0,255,255); text(tab_max[i][j],50+i*20,50+j*20); text(tab_min[i][j],200+i*20,50+j*20); } } } void affichage_grille(){ for(int i=0;i<nb+1;i++) { line(50,200+i*50,200,200+i*50); line(50+i*50,200,50+i*50,350); } } void donner(){ if(bouton == true&&mouseX>50&&mouseX<100&&mouseY>200&&mouseY<250) { tab_max[0][0]=val; tab_min[0][0]=val; affichage_tabl(); line(50,250,100,200); line(50,200,100,250); affichage_grille(); bouton=false; bouton=true; } if(bouton == true&&mouseX>100&&mouseX<150&&mouseY>200&&mouseY<250) { tab_max[1][0]=val; tab_min[1][0]=val; affichage_tabl(); line(100,200,150,250); line(100,250,150,200); affichage_grille(); } }
Hors ligne
Je voulais à des fins pédagogiques montrer une autre façon de réaliser une itération avec des tableaux.
Pour la définition du for :
http://processing.org/reference/for.html
for (Joueur j : joueurs) { j.fonction(); }
Je parcours le tableau joueurs et chaque éléments est accessible avec l'objet j.
Pour les dames, c'est justement plus facile car tu as un objet pièce et ce sont 40 instances de pièces que tu crées et peut bouger en utilisant le même code.
Piece[] pieces; static final int NOIRE = 0; static final int BLANCHE = 255; static final int tailleCase = 50; void setup() { size(500, 500); pieces = new Piece[40]; for (int i = 0; i < pieces.length / 2; i++) { pieces[i] = new Piece(tailleCase / 2 + tailleCase * ((i /5) % 2) + (i % 5) * 2 * tailleCase, tailleCase / 2 + (i / 5) * tailleCase, 40, NOIRE); pieces[i + pieces.length / 2] = new Piece(tailleCase / 2 + tailleCase * ((i /5) % 2) + (i % 5) * 2 * tailleCase, tailleCase * 6 + tailleCase / 2 + (i / 5) * tailleCase, 40, BLANCHE); } } void draw() { background(255); fill(127); noStroke(); for (int i = 0; i < 50; i++) { rect(tailleCase * ((i /5) % 2) + (i % 5) * 2 * tailleCase, (i / 5) * tailleCase, tailleCase, tailleCase); } for (Piece j : pieces) { j.affichage(); } } void mousePressed() { for (Piece j : pieces) { j.selectionner(mouseX, mouseY); } } void mouseDragged() { for (Piece j : pieces) { j.bouger(mouseX, mouseY); } } void mouseReleased() { for (Piece j : pieces) { j.deselectionner(); } } class Piece { PVector position; boolean selection; int taille, type; int decalageX, decalageY; Piece(int x, int y, int _taille, int _type) { position = new PVector(x, y); taille = _taille; type = _type; selection = false; } void selectionner(int x, int y) { if (dist(position.x, position.y, x, y) < taille / 2) { selection = true; } if (selection) { decalageX = int(x - position.x); decalageY = int(y - position.y); } } void bouger(int x, int y) { if (selection) { position.x = x - decalageX; position.y = y - decalageY; } } void deselectionner() { selection = false; } void affichage() { if (selection) { fill(255, 0, 0); } else { fill(type); } stroke(0); ellipse(position.x, position.y, taille, taille); } }
Dernière modification par Mushussu (2014-04-08 12:38:41)
Hors ligne
Remerciements, pour le damier,et pour les explications du for:car je n'avais encore jamais vu l'instruction comme ça.
Hors ligne