Commit 6082cf88 authored by guillaume.garbay's avatar guillaume.garbay
Browse files

No commit message

No commit message
1 merge request!1Add Svn history
Showing with 38 additions and 9 deletions
+38 -9
package pikelake; package pikelake;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner; import java.util.Scanner;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import java.io.FileNotFoundException;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
import pikelake.environment.FichierMarnage;
import pikelake.environment.Time;
import pikelake.pikes.Pike; import pikelake.pikes.Pike;
import pikelake.pikes.PikesGroup; import pikelake.pikes.PikesGroup;
import pikelake.environment.Time;
import pikelake.environment.FichierMarnage;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
/**
* Classe qui met a jour les cellules accessibles du lac, ainsi que leurs HSI
* en fonction du marnage calcule par la classe FichierMarnage
* @author Guillaume GARBAY
* @version 1.0
*/
public class Marnage extends AquaNismsGroupProcess<Pike,PikesGroup> { public class Marnage extends AquaNismsGroupProcess<Pike,PikesGroup> {
public static String marnageOld = null, marnageNew = null; public static String marnageOld = null, marnageNew = null;
public static String saison = ""; public static String saison = "";
/**
* MAJ de la grille, augmentation ou diminution du nombre de cellules accessibles
* Modification du HSI de chaque cellule
* @param object Represente les individus
* @return /
*/
@Override @Override
public void doProcess(PikesGroup object) { public void doProcess(PikesGroup object) {
// Recuperation de la grille
Grid grid = (Grid) pilot.getAquaticWorld().getEnvironment(); Grid grid = (Grid) pilot.getAquaticWorld().getEnvironment();
grid = grid.getGrid(); grid = grid.getGrid();
// Calcul du marnage
marnageNew = FichierMarnage.dateMarnage[Time.jourMois][Time.mois][Time.heure]; marnageNew = FichierMarnage.dateMarnage[Time.jourMois][Time.mois][Time.heure];
// MAJ de la grille seulement si le marnage est modifie
if (!marnageNew.equals(marnageOld)) { if (!marnageNew.equals(marnageOld)) {
synchronized (grid) { // synchronization to be sure that graphical observer read synchronized values synchronized (grid) { // synchronization to be sure that graphical observer read synchronized values
majCote(grid); majCote(grid);
...@@ -29,6 +44,12 @@ public class Marnage extends AquaNismsGroupProcess<Pike,PikesGroup> { ...@@ -29,6 +44,12 @@ public class Marnage extends AquaNismsGroupProcess<Pike,PikesGroup> {
} }
} }
/**
* MAJ de la grille, augmentation ou diminution du nombre de cellules accessibles
* Modification du HSI de chaque cellule
* @param grid Represente le lac et les cellules non accessibles
* @return /
*/
public void majCote (Grid grid) { public void majCote (Grid grid) {
StringTokenizer sLigne; StringTokenizer sLigne;
...@@ -41,15 +62,18 @@ public class Marnage extends AquaNismsGroupProcess<Pike,PikesGroup> { ...@@ -41,15 +62,18 @@ public class Marnage extends AquaNismsGroupProcess<Pike,PikesGroup> {
// Initialisation de toute la grille avec hsi = -1 // Initialisation de toute la grille avec hsi = -1
for (int cptCell = 0; cptCell < (grid.getGridWidth() * grid.getGridHeight() - 1); cptCell++) for (int cptCell = 0; cptCell < (grid.getGridWidth() * grid.getGridHeight() - 1); cptCell++)
grid.setCell(cptCell, -1); grid.setCell(cptCell, -1);
// Lecture fichier contenant les HSI de toutes les mailles // Lecture fichier contenant les HSI de toutes les mailles
String filePath = "data/input/HSI/hsi_BRO" + Time.getSeason() + marnageNew + ".txt"; String filePath = "data/input/HSI/hsi_BRO" + Time.getSeason() + marnageNew + ".txt";
Scanner scanner; Scanner scanner;
try { try {
scanner = new Scanner(new File(filePath)); scanner = new Scanner(new File(filePath));
String line = scanner.nextLine(); String line = scanner.nextLine();
// On boucle sur chaque ligne detecte // On boucle sur chaque ligne detecte
while (scanner.hasNextLine()) { while (scanner.hasNextLine()) {
line = scanner.nextLine(); line = scanner.nextLine();
// Decoupage ligne : id, hsiStd, hsiMoy // Decoupage ligne : id, hsiStd, hsiMoy
sLigne = new StringTokenizer (line); sLigne = new StringTokenizer (line);
if (sLigne.hasMoreTokens()) if (sLigne.hasMoreTokens())
...@@ -58,21 +82,26 @@ public class Marnage extends AquaNismsGroupProcess<Pike,PikesGroup> { ...@@ -58,21 +82,26 @@ public class Marnage extends AquaNismsGroupProcess<Pike,PikesGroup> {
hsiStd = Double.parseDouble(sLigne.nextToken()); hsiStd = Double.parseDouble(sLigne.nextToken());
if (sLigne.hasMoreTokens()) if (sLigne.hasMoreTokens())
hsiMoy = Double.parseDouble(sLigne.nextToken()); hsiMoy = Double.parseDouble(sLigne.nextToken());
// Conversion idCell en coordonnees (x, y) // Conversion idCell en coordonnees (x, y)
// (x, y) avec les id de cellules de 0 n-1 // (x, y) avec les id de cellules de 0 n-1
yPike = (int) Math.floor(idCell / grid.getGridWidth()); yPike = (int) Math.floor(idCell / grid.getGridWidth());
xPike = (int) idCell - (yPike * grid.getGridWidth()); xPike = (int) idCell - (yPike * grid.getGridWidth());
// Inversion des coordonnees en Y (place l'origine en bas gauche) // Inversion des coordonnees en Y (place l'origine en bas gauche)
yPike = (grid.getGridHeight()-1) - yPike ; yPike = (grid.getGridHeight()-1) - yPike ;
// Conversion des coordonnees (x, y) en idCell // Conversion des coordonnees (x, y) en idCell
idCell = xPike + yPike * grid.getGridWidth(); idCell = xPike + yPike * grid.getGridWidth();
// Initialisation du hsi de la cellule(idCell) // Initialisation du hsi de la cellule(idCell)
grid.setCell(idCell, hsiMoy); grid.setCell(idCell, hsiMoy);
} }
scanner.close(); scanner.close(); // Fermeture du fichier
} catch (FileNotFoundException e) { } catch (FileNotFoundException e) {
// TODO Auto-generated catch block // Auto-generated catch block, erreur de lecture du fichier
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment