PImage backgroundImage; Equipe[] equipes; Position[] positions; int nombreEquipes = 42; PFont quicksandFont; boolean EDITING; Table table_Cercles, positionTable, scoreboard; float[] coord_x; float[] coord_y; int[] coord_rayon; void setup() { size(displayWidth, displayHeight); fullScreen(1); //randomSeed(3); //frameRate(60); colorMode(RGB, 255); rectMode(CENTER); noStroke(); EDITING=false; table_Cercles = loadTable("data/positionTable.csv", "header"); quicksandFont = loadFont("Quicksand-Bold-40.vlw"); backgroundImage = loadImage("backgroundImage.jpg"); image(backgroundImage, 0, 0, displayWidth, displayHeight); equipes = new Equipe[nombreEquipes]; for (int i=0; ithreshold && distEquipe>threshold && (p.hovered || p.dragged)) { // cloture des deux états p.dragStop(); p.hoverStop(); break; // si la souris est sous le seuil de collision du pion et qu'il n'est pas déjà dans l'état survolé } else if ((distPion<=threshold || distEquipe<=threshold) && !p.hovered) { // activation de l'état survolé p.hoverStart(); break; } } if (EDITING) { for (int i = 0 ; i < positions.length; i++) { Position p = positions[i]; float distPosition = dist(p.posX, p.posY, mouseX, mouseY); float threshold = p.radius/2; if (distPosition>threshold && (p.hovered || p.dragged)) { p.dragStop(); p.hoverStop(); break; } else if (distPosition<=threshold && !p.hovered) { p.hoverStart(); //println(p.posX, p.posY); break; } } } } void mousePressed() { for (int i = 0 ; i < equipes.length; i++) { Pion p = equipes[i].pion; float d = dist(p.posX, p.posY, mouseX, mouseY); if (d20 && radius<120) { p.radius = radius; } } } void savePositionTable() { positionTable = new Table(); positionTable.addColumn("id"); positionTable.addColumn("posx"); positionTable.addColumn("posy"); for (int i = 0 ; i < positions.length; i++) { Position p = positions[i]; TableRow position = positionTable.addRow(); position.setInt("id", p.id); position.setFloat("posx", p.posX); position.setFloat("posy", p.posY); } saveTable(positionTable, "data/positionTable.csv", "csv"); } void saveScoreboard() { scoreboard = new Table(); scoreboard.addColumn("equipe"); scoreboard.addColumn("score"); for (int i = 0 ; i < equipes.length; i++) { Equipe e = equipes[i]; TableRow scoreEquipe = scoreboard.addRow(); scoreEquipe.setInt("equipe", e.id+1); scoreEquipe.setInt("score", e.score); } saveTable(scoreboard, "data/scoreboard.csv", "csv"); } Position findClosestPositionFrom(Pion pion) { Position closest = positions[0]; for (int i = 0 ; i < positions.length; i++) { Position position = positions[i]; float distPion = dist(pion.posX, pion.posY, position.posX, position.posY); float distClosest = dist(pion.posX, pion.posY, closest.posX, closest.posY); if (distPion<=distClosest) closest = positions[i]; } return closest; } void draw() { image(backgroundImage, 0, 0, displayWidth, displayHeight); for (int i = 0 ; i < equipes.length; i++) { equipes[i].update(); } if (EDITING) { for (int i = 0 ; i < positions.length; i++) { positions[i].draw(); } } }