Annonce

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


#1 2017-12-05 11:04:47 Problème jeu

Mouette
nouveau membre
Date d'inscription: 2017-12-05
Messages: 3

Problème jeu



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

 

#2 2017-12-06 10:01:07 Re : Problème jeu

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 766

Re: Problème jeu



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

 

#3 2017-12-07 21:02:25 Re : Problème jeu

Mouette
nouveau membre
Date d'inscription: 2017-12-05
Messages: 3

Re: Problème jeu



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

 

#4 2017-12-09 09:33:57 Re : Problème jeu

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 766

Re: Problème jeu



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

 

#5 2017-12-09 15:49:49 Re : Problème jeu

Mouette
nouveau membre
Date d'inscription: 2017-12-05
Messages: 3

Re: Problème jeu



Voive super merci beaucoup pour votre aide ces exactement ce que je chercher merci merci

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2017