Déplacements limites

Voici un exemple avec des déplacements limités  
float diametre = 50;
float rayon = diametre / 2;
float posX;
float posY;

float areneX;
float areneY;
float areneHauteur;
float areneLargeur;
float areneVitesse = 2;

void setup(){
  size(800, 600);
  
  areneX = width / 6;
  areneY = height / 6;
  
  areneHauteur = height / 3 * 2;
  areneLargeur = width / 3 * 2;
}

void draw(){
  background(0);

  posX = mouseX;
  posY = mouseY;
 
  if (posX - rayon < areneX) {
    posX = areneX + rayon;
  }
  
  if (posX + rayon > areneX + areneLargeur) {
    posX = (areneX + areneLargeur) - rayon;
  }
  
  if (posY - rayon < areneY) {
    posY = areneY + rayon;
  }
  
  if (posY + rayon > areneY + areneHauteur) {
    posY = areneY + areneHauteur - rayon;
  }
  
  if (areneX < 0) {
    areneX = 0;
  }
  
  if (areneX + areneLargeur > width) {
    areneX = width - areneLargeur;
  }
  
  if (areneY < 0) {
    areneY = 0;
  }
  
  if (areneY + areneHauteur > height) {
    areneY = height - areneHauteur;
  }
  
  // Dessiner arène
  rect (areneX, areneY, areneLargeur, areneHauteur);
  
  // Dessiner rondelle
  ellipse (posX, posY, diametre, diametre);
}

void keyPressed() {
  if (key == 's') {
    areneY = areneY + areneVitesse;    
  }
  
  if (key == 'w') {
    areneY = areneY - areneVitesse;    
  }
  
  if (key == 'a') {
    areneX = areneX - areneVitesse;    
  }
  
  if (key == 'd') {
    areneX = areneX + areneVitesse;    
  }
}
 

Publié

dans

par

Étiquettes :

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.