Bonjour à tous.
J'ai un petit problème. Je suis en train de réaliser un prototype de jeu pour un amie. je l'idée est d'aligner les thermes au bonne endroit. Quand les thermes son alignée un bouton apparaît et si on clic dessus cela nous envoie à un lien.
1 problème je n'arrive pas à créer des points aiment permettant que lorsque l'on rapproche notre image à placer proche de ce point elle ce mette correctement dans la case.
2 eme soucie le bouton est activer sur toute la page. Je n'arrive pas à le mettre que sur mon image.
3 eme soucie je n'arrive pas a faire disparaître le bouton et réapparaître que quand les image son aligné.
lien pour les image =
https://drive.google.com/open?id=1OKc2w … L3Z2MbFwo7
voici le code =
Joueur[] joueurs;
PImage couteau;
PImage porc;
PImage entamer;
PImage loutre;
PImage RNGA;
void setup() {
size(377,491);
ellipseMode(CORNER);
int a = floor(random(0,280));
int b = floor(random(375,438));
int c = floor(random(0,280));
int d = floor(random(375,438));
int e = floor(random(0,280));
int f = floor(random(375,438));
joueurs = new Joueur[4];
joueurs[0] = new Joueur(a, b, 120, 50, "couteau.png");
joueurs[1] = new Joueur(c, d, 120, 50, "porc.png");
joueurs[2] = new Joueur(e, f, 120, 50, "entamer.png");
joueurs[3] = new Joueur(120, 350, 5, 5, "RNGA vidéo.png");
}
void draw() {
background(255);
loutre = loadImage("loutre.png");
image(loutre,50,10);
couteau= loadImage("couteau.png");
//image(couteau,X,Y);
porc= loadImage("porc.png");
//image(porc,X,Y);
entamer= loadImage("entamer.png");
//image(entamer,X,Y);
RNGA = loadImage("RNGA vidéo.png");
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;
PImage image;
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("couteau.png") && (x > position.x) && (x < position.x + largeur) && (y > position.y) && (y < position.y + hauteur)) {
selection = true;
}
if (forme.equals("porc.png") && (dist(position.x + largeur / 2, position.y + hauteur / 2, x, y) < largeur / 2)) {
selection = true;
}
if (forme.equals("entamer.png") && (dist(position.x + largeur / 2, position.y + hauteur / 2, x, y) < largeur / 2)) {
selection = true;
}
if (forme.equals("RNGA vidéo.png")) {
link("https://vimeo.com/213661497");
}
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(254, 254, 254);
}
else {
noFill();
}
if (forme.equals("couteau.png")) {
image(couteau, position.x, position.y);
}
if (forme.equals("porc.png")) {
image(porc, position.x, position.y);
}
if (forme.equals("entamer.png")) {
image(entamer, position.x, position.y);
}
if (forme.equals("RNGA vidéo.png")) {
image(RNGA, 120, 350);
}
}
}
Hors ligne
Bonjour,
Tu es bien avancé, mais tu n'as pas encore assimilé la puissance des classes qui peuvent simplifier beaucoup le code.
Voici ma proposition pour ta question :
Case[] cases; PImage logo; void setup() { size(377, 491); cases = new Case[3]; cases[0] = new Case(50, 150, 0, color(255, 255, 0), "Action"); cases[1] = new Case(50, 235, 1, color(255, 0, 0), "Outil"); cases[2] = new Case(50, 320, 2, color(0, 0, 255), "Matiere"); } void draw() { background(255); for (int i = 0; i < cases.length; i++) { cases[i].affichage(); } } void mousePressed() { int i = cases.length - 1; boolean selection = false; do { selection = cases[i].selectionner(mouseX, mouseY); i--; } while (!selection && i >= 0); } void mouseDragged() { for (Case j : cases) { j.bouger(mouseX, mouseY); } } void mouseReleased() { for (Case j : cases) { j.deselectionner(); } } class Case { PVector positionVignette; PVector position; PVector positionCase; PVector taille; PVector decalage; PImage img; boolean selection; String nom; color couleur; int tolerance; Case(int x, int y, int z, color _couleur, String _nom) { positionVignette = new PVector(floor(random(0, 280)), floor(random(375, 438)), z); img = loadImage(_nom + ".png"); taille = new PVector(img.width, img.height); decalage = new PVector(); selection = false; nom = _nom; position = new PVector(x, y); positionCase = new PVector(x + 155, y - 45); couleur = _couleur; tolerance = 10; } boolean selectionner(int x, int y) { if ((x > positionVignette.x) && (x < positionVignette.x + taille.x) && (y > positionVignette.y) && (y < positionVignette.y + taille.y)) { selection = true; } if (selection) { decalage.x = int(x - positionVignette.x); decalage.y = int(y - positionVignette.y); } return selection; } void bouger(int x, int y) { if (selection) { positionVignette.x = x - decalage.x; positionVignette.y = y - decalage.y; if ((positionVignette.x > positionCase.x - tolerance) && (positionVignette.x < positionCase.x + tolerance) && (positionVignette.y > positionCase.y - tolerance) && (positionVignette.y < positionCase.y + tolerance)) { positionVignette.set(positionCase); } } } void deselectionner() { selection = false; } void affichage() { fill(couleur); textSize(35); text(nom, position.x, position.y); noFill(); rect(positionCase.x, positionCase.y, taille.x, taille.y, 10); if (selection) { fill(254, 254, 254); } else { noFill(); } image(img, positionVignette.x, positionVignette.y); } }
Le fichier avec les images est joint.
Si tu as des questions n'hésite pas.
Dernière modification par Mushussu (2017-12-06 10:03:34)
Hors ligne
Bonjour
Voive super merci beaucoup.
Par contre esse possible de faire apparaître le lien internet quand tout est alignées??
Merci pour votre aide.
Hors ligne
Voici une proposition possible :
Case[] cases; Bouton lien; void setup() { size(377, 491); cases = new Case[3]; cases[0] = new Case(50, 150, 0, color(255, 255, 0), "Action"); cases[1] = new Case(50, 235, 1, color(255, 0, 0), "Outil"); cases[2] = new Case(50, 320, 2, color(0, 0, 255), "Matiere"); lien = new Bouton(50, 50, "Lien.png", "https://vimeo.com/213661497"); } void draw() { background(255); int fin = 0; for (int i = 0; i < cases.length; i++) { cases[i].affichage(); if (cases[i].estPlacee()) { fin++; } } if (fin == cases.length) { lien.actif = true; } lien.affichage(); } void mousePressed() { int i = cases.length - 1; boolean selection = false; do { selection = cases[i].selectionner(mouseX, mouseY); i--; } while (!selection && i >= 0); lien.video(mouseX, mouseY); } void mouseDragged() { for (Case j : cases) { j.bouger(mouseX, mouseY); } } void mouseReleased() { for (Case j : cases) { j.deselectionner(); } } class Bouton { PImage img; PVector position; boolean actif; String lien; Bouton(int x, int y, String _image, String _lien) { position = new PVector(x, y); img = loadImage(_image); actif = false; lien = _lien; } void affichage() { if (actif) { image(img, position.x, position.y); } } void video(int x, int y) { if ((x > position.x) && (x < position.x + img.width) && (y > position.y) && (y < position.y + img.height) && actif) { link(lien); } } } class Case { PVector positionVignette; PVector position; PVector positionCase; PVector taille; PVector decalage; PImage img; boolean selection; String nom; color couleur; int tolerance; boolean estPlacee; Case(int x, int y, int z, color _couleur, String _nom) { positionVignette = new PVector(floor(random(0, 280)), floor(random(375, 438)), z); img = loadImage(_nom + ".png"); taille = new PVector(img.width, img.height); decalage = new PVector(); selection = false; nom = _nom; position = new PVector(x, y); positionCase = new PVector(x + 155, y - 45); couleur = _couleur; tolerance = 10; } boolean selectionner(int x, int y) { if ((x > positionVignette.x) && (x < positionVignette.x + taille.x) && (y > positionVignette.y) && (y < positionVignette.y + taille.y)) { selection = true; } if (selection) { decalage.x = int(x - positionVignette.x); decalage.y = int(y - positionVignette.y); } return selection; } void bouger(int x, int y) { if (selection) { positionVignette.x = x - decalage.x; positionVignette.y = y - decalage.y; if ((positionVignette.x > positionCase.x - tolerance) && (positionVignette.x < positionCase.x + tolerance) && (positionVignette.y > positionCase.y - tolerance) && (positionVignette.y < positionCase.y + tolerance)) { positionVignette.set(positionCase); estPlacee = true; } else { estPlacee = false; } } } void deselectionner() { selection = false; } boolean estPlacee() { return estPlacee; } void affichage() { fill(couleur); textSize(35); text(nom, position.x, position.y); noFill(); rect(positionCase.x, positionCase.y, taille.x, taille.y, 10); if (selection) { fill(254, 254, 254); } else { noFill(); } image(img, positionVignette.x, positionVignette.y); } }
Hors ligne
Voive super merci beaucoup pour votre aide ces exactement ce que je chercher merci merci
Hors ligne
Bonsoir je reviens vers vous
Le jeu marche vraiment vraiment bien je suis trop trop comptent cela marche trop bien.
Je vous embête une dernière fois car j'aimerais mettre le jeu en ligne sur un site fais en wordpress j'ai essayer plein d'astuce mais rien n'à marcher.
S'auriez vous comment faire ?
Hors ligne