Skip to content
Snippets Groups Projects
Commit 43ea0594 authored by SCHILLING Juliette's avatar SCHILLING Juliette
Browse files

maj commentaires + diagramme de classe

parent 4b960d9f
No related branches found
No related tags found
No related merge requests found
...@@ -166,6 +166,11 @@ public class CreationOuvertureActivity extends AppCompatActivity{ ...@@ -166,6 +166,11 @@ public class CreationOuvertureActivity extends AppCompatActivity{
} }
}); });
Button buttonselectD = findViewById(R.id.buttonSDepart);
buttonselectD.setBackgroundColor(Color.LTGRAY);
Button buttonselectA = findViewById(R.id.buttonSArrivee);
buttonselectA.setBackgroundColor(Color.LTGRAY);
} }
/** /**
...@@ -243,6 +248,10 @@ public class CreationOuvertureActivity extends AppCompatActivity{ ...@@ -243,6 +248,10 @@ public class CreationOuvertureActivity extends AppCompatActivity{
* Fonction qui affiche la piece de depart * Fonction qui affiche la piece de depart
*/ */
public void affichePieceDepart(){ public void affichePieceDepart(){
Button buttonselectD = findViewById(R.id.buttonSDepart);
buttonselectD.setBackgroundColor(Color.DKGRAY);
Button buttonselectA = findViewById(R.id.buttonSArrivee);
buttonselectA.setBackgroundColor(Color.LTGRAY);
if(pieceDepart != null && orientationPieceDepart != null){ if(pieceDepart != null && orientationPieceDepart != null){
Mur mur = pieceDepart.getMurOrientation(orientationPieceDepart); Mur mur = pieceDepart.getMurOrientation(orientationPieceDepart);
FileInputStream fis = null; FileInputStream fis = null;
...@@ -272,6 +281,10 @@ public class CreationOuvertureActivity extends AppCompatActivity{ ...@@ -272,6 +281,10 @@ public class CreationOuvertureActivity extends AppCompatActivity{
* Fonction qui affiche la piece d'arrivee * Fonction qui affiche la piece d'arrivee
*/ */
public void affichePieceArrivee(){ public void affichePieceArrivee(){
Button buttonselectD = findViewById(R.id.buttonSDepart);
buttonselectD.setBackgroundColor(Color.LTGRAY);
Button buttonselectA = findViewById(R.id.buttonSArrivee);
buttonselectA.setBackgroundColor(Color.DKGRAY);
if(pieceArrivee != null && orientationPieceArrivee != null){ if(pieceArrivee != null && orientationPieceArrivee != null){
Mur mur = pieceArrivee.getMurOrientation(orientationPieceArrivee); Mur mur = pieceArrivee.getMurOrientation(orientationPieceArrivee);
FileInputStream fis = null; FileInputStream fis = null;
......
...@@ -3,6 +3,7 @@ package com.example.myhabitat; ...@@ -3,6 +3,7 @@ package com.example.myhabitat;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
...@@ -116,11 +117,8 @@ public class ModeConceptionActivity extends AppCompatActivity { ...@@ -116,11 +117,8 @@ public class ModeConceptionActivity extends AppCompatActivity {
@Override @Override
protected void onStart() { protected void onStart() {
Log.i("testOnStart", "je vais dans le OnStart");
Log.i("testEConception", habitat.getOuvertures().toString());
//On recupere habitat quand on revient de CreationOuvertureActivity //On recupere habitat quand on revient de CreationOuvertureActivity
ouvrirJSON(); ouvrirJSON();
Log.i("testEConception", habitat.getOuvertures().toString());
super.onStart(); super.onStart();
} }
...@@ -163,8 +161,6 @@ public class ModeConceptionActivity extends AppCompatActivity { ...@@ -163,8 +161,6 @@ public class ModeConceptionActivity extends AppCompatActivity {
LinearLayout llMur = new LinearLayout(this); LinearLayout llMur = new LinearLayout(this);
//llMur.setGravity(Gravity.CENTER_HORIZONTAL); //llMur.setGravity(Gravity.CENTER_HORIZONTAL);
ImageButton imageButton = new ImageButton(this); ImageButton imageButton = new ImageButton(this);
imageButton.setMaxHeight(50);
imageButton.setMaxWidth(50);
//On récupère la photo //On récupère la photo
FileInputStream fis = null; FileInputStream fis = null;
...@@ -177,6 +173,8 @@ public class ModeConceptionActivity extends AppCompatActivity { ...@@ -177,6 +173,8 @@ public class ModeConceptionActivity extends AppCompatActivity {
Bitmap bm = BitmapFactory.decodeStream(fis); Bitmap bm = BitmapFactory.decodeStream(fis);
imageButton.setImageBitmap(bm); imageButton.setImageBitmap(bm);
}else{
imageButton.setImageDrawable(getDrawable(R.drawable.imagemur));
} }
......
...@@ -180,7 +180,7 @@ public class ModeImmersionActivity extends AppCompatActivity implements SensorEv ...@@ -180,7 +180,7 @@ public class ModeImmersionActivity extends AppCompatActivity implements SensorEv
//On met à jour la piece suivante si mode "aller a une piece" //On met à jour la piece suivante si mode "aller a une piece"
if(goToPiece != null){ if(goToPiece != null){
goTo(); goToSuite();
} }
afficheOuvertures(); afficheOuvertures();
...@@ -330,6 +330,10 @@ public class ModeImmersionActivity extends AppCompatActivity implements SensorEv ...@@ -330,6 +330,10 @@ public class ModeImmersionActivity extends AppCompatActivity implements SensorEv
super.onResume(); super.onResume();
} }
/**
* Fonction appelee pour trouver chemin jusqu'a une piece
* @param view
*/
public void goTo(View view) { public void goTo(View view) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(ModeImmersionActivity.this); AlertDialog.Builder alertDialog = new AlertDialog.Builder(ModeImmersionActivity.this);
alertDialog.setTitle("Choisi une piece où aller"); alertDialog.setTitle("Choisi une piece où aller");
...@@ -357,13 +361,16 @@ public class ModeImmersionActivity extends AppCompatActivity implements SensorEv ...@@ -357,13 +361,16 @@ public class ModeImmersionActivity extends AppCompatActivity implements SensorEv
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() { alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
goTo(); goToSuite();
} }
}); });
alertDialog.show(); alertDialog.show();
} }
private void goTo() { /**
* Suite de la fonction goTo, permet d'initialiser le chemin
*/
private void goToSuite() {
if(!pieceEnCours.equals(goToPiece)) { if(!pieceEnCours.equals(goToPiece)) {
ArrayList<Piece> chemin = grapheHabitat.getPlusCourtChemin(pieceEnCours, goToPiece); ArrayList<Piece> chemin = grapheHabitat.getPlusCourtChemin(pieceEnCours, goToPiece);
......
package outils; package outils;
import android.util.Log;
import habitat.Habitat; import habitat.Habitat;
import habitat.Ouverture; import habitat.Ouverture;
import habitat.Piece; import habitat.Piece;
...@@ -8,9 +7,10 @@ import java.util.*; ...@@ -8,9 +7,10 @@ import java.util.*;
public class GrapheHabitat { public class GrapheHabitat {
// A class to store a graph edge /**
class Edge * Classe pour les aretes du graphe
{ */
class Edge{
int source, dest, weight; int source, dest, weight;
public Edge(int source, int dest, int weight) public Edge(int source, int dest, int weight)
...@@ -21,26 +21,29 @@ public class GrapheHabitat { ...@@ -21,26 +21,29 @@ public class GrapheHabitat {
} }
} }
// A class to store a heap node /**
class Node * Classe pour les noeuds
{ */
class Noeud{
int vertex, weight; int vertex, weight;
public Node(int vertex, int weight) public Noeud(int vertex, int weight)
{ {
this.vertex = vertex; this.vertex = vertex;
this.weight = weight; this.weight = weight;
} }
} }
// A class to represent a graph object /**
class Graph * Classe pour un graphe
*/
class Graphe
{ {
// A list of lists to represent an adjacency list // A list of lists to represent an adjacency list
List<List<Edge>> adjList = null; List<List<Edge>> adjList = null;
// Constructor // Constructor
Graph(List<Edge> edges, int n) Graphe(List<Edge> edges, int n)
{ {
adjList = new ArrayList<>(); adjList = new ArrayList<>();
...@@ -58,9 +61,13 @@ public class GrapheHabitat { ...@@ -58,9 +61,13 @@ public class GrapheHabitat {
private Habitat habitat; private Habitat habitat;
private HashMap<Integer, Piece> hmap; private HashMap<Integer, Piece> hmap;
private HashMap<Piece, Integer> hmapGet; private HashMap<Piece, Integer> hmapGet;
//private HashMap<Piece, List<Piece>> res;
private HashMap<Piece, HashMap<Piece, ArrayList<Piece>>> res; private HashMap<Piece, HashMap<Piece, ArrayList<Piece>>> res;
/**
* constructeur de GrapheHabitat
* @param habitat
*/
public GrapheHabitat(Habitat habitat) { public GrapheHabitat(Habitat habitat) {
this.habitat = habitat; this.habitat = habitat;
res = new HashMap<>(); res = new HashMap<>();
...@@ -71,7 +78,7 @@ public class GrapheHabitat { ...@@ -71,7 +78,7 @@ public class GrapheHabitat {
for(Piece piece : habitat.getPieces()){ for(Piece piece : habitat.getPieces()){
hmap.put(i, piece); hmap.put(i, piece);
hmapGet.put(piece, i); hmapGet.put(piece, i);
Log.i("testGraphe", "je mets " + piece.getNom()); //Log.i("testGraphe", "je mets " + piece.getNom());
i++; i++;
res.put(piece, new HashMap<>()); res.put(piece, new HashMap<>());
...@@ -90,22 +97,22 @@ public class GrapheHabitat { ...@@ -90,22 +97,22 @@ public class GrapheHabitat {
//On créé la list à partir des ouvertures //On créé la list à partir des ouvertures
List<Edge> edges = new ArrayList<>(); List<Edge> edges = new ArrayList<>();
for(Ouverture ouverture : habitat.getOuvertures()){ for(Ouverture ouverture : habitat.getOuvertures()){
Log.i("testGraphe", "je veux " + ouverture.getMurDepart().getPiece() + " et " + ouverture.getMurArrivee().getPiece()); //Log.i("testGraphe", "je veux " + ouverture.getMurDepart().getPiece() + " et " + ouverture.getMurArrivee().getPiece());
edges.add(new Edge(hmapGet.get(ouverture.getMurDepart().getPiece()), hmapGet.get(ouverture.getMurArrivee().getPiece()), 1)); edges.add(new Edge(hmapGet.get(ouverture.getMurDepart().getPiece()), hmapGet.get(ouverture.getMurArrivee().getPiece()), 1));
edges.add(new Edge(hmapGet.get(ouverture.getMurArrivee().getPiece()), hmapGet.get(ouverture.getMurDepart().getPiece()), 1)); edges.add(new Edge(hmapGet.get(ouverture.getMurArrivee().getPiece()), hmapGet.get(ouverture.getMurDepart().getPiece()), 1));
} }
// total number of nodes in the graph (labelled from 0 to 4) // nombre total d'aretes
int n = habitat.getOuvertures().size()*2; int n = habitat.getOuvertures().size()*2;
// construct graph // construction du graphe
Graph graph = new Graph(edges, n); Graphe graphe = new Graphe(edges, n);
// run the Dijkstra’s algorithm from every node // on applique dijkstra sur tous les noeuds
for (int source = 0; source < n; source++) { for (int source = 0; source < n; source++) {
findShortestPaths(graph, source, n); plusCourtChemin(graphe, source, n);
} }
//For test //For test
...@@ -122,6 +129,12 @@ public class GrapheHabitat { ...@@ -122,6 +129,12 @@ public class GrapheHabitat {
*/ */
} }
/**
* Fonction qui donne le chemin
* @param prev
* @param i
* @param route
*/
private void getRoute(int[] prev, int i, List<Piece> route) private void getRoute(int[] prev, int i, List<Piece> route)
{ {
if (i >= 0) if (i >= 0)
...@@ -131,19 +144,24 @@ public class GrapheHabitat { ...@@ -131,19 +144,24 @@ public class GrapheHabitat {
} }
} }
// Run Dijkstra’s algorithm on a given graph
public void findShortestPaths(Graph graph, int source, int n) /**
* Fonction qui applique dijkstra sur tout le graphe
* @param graphe
* @param source
* @param n
*/
private void plusCourtChemin(Graphe graphe, int source, int n)
{ {
// create a min-heap and push source node having distance 0 // instanciation de depart pour Dijkstra
PriorityQueue<Node> minHeap; PriorityQueue<Noeud> minHeap;
minHeap = new PriorityQueue<>(Comparator.comparingInt(node -> node.weight)); minHeap = new PriorityQueue<>(Comparator.comparingInt(noeud -> noeud.weight));
minHeap.add(new Node(source, 0)); minHeap.add(new Noeud(source, 0));
// set initial distance from the source to `v` as infinity // initialise les distances de depart à l'infini
List<Integer> dist; List<Integer> dist;
dist = new ArrayList<>(Collections.nCopies(n, Integer.MAX_VALUE)); dist = new ArrayList<>(Collections.nCopies(n, Integer.MAX_VALUE));
//Et celui de depart a 0
// distance from the source to itself is zero
dist.set(source, 0); dist.set(source, 0);
// boolean array to track vertices for which minimum // boolean array to track vertices for which minimum
...@@ -159,13 +177,13 @@ public class GrapheHabitat { ...@@ -159,13 +177,13 @@ public class GrapheHabitat {
while (!minHeap.isEmpty()) while (!minHeap.isEmpty())
{ {
// Remove and return the best vertex // Remove and return the best vertex
Node node = minHeap.poll(); Noeud noeud = minHeap.poll();
// get the vertex number // get the vertex number
int u = node.vertex; int u = noeud.vertex;
// do for each neighbor `v` of `u` // do for each neighbor `v` of `u`
for (Edge edge: graph.adjList.get(u)) for (Edge edge: graphe.adjList.get(u))
{ {
int v = edge.dest; int v = edge.dest;
int weight = edge.weight; int weight = edge.weight;
...@@ -175,7 +193,7 @@ public class GrapheHabitat { ...@@ -175,7 +193,7 @@ public class GrapheHabitat {
{ {
dist.set(v, dist.get(u) + weight); dist.set(v, dist.get(u) + weight);
prev[v] = u; prev[v] = u;
minHeap.add(new Node(v, dist.get(v))); minHeap.add(new Noeud(v, dist.get(v)));
} }
} }
...@@ -201,8 +219,14 @@ public class GrapheHabitat { ...@@ -201,8 +219,14 @@ public class GrapheHabitat {
} }
/**
* Fonction permettant de retourner le chemin le + court entre 2 pieces
* @param pieceDepart
* @param pieceArrivee
* @return le chemin le + court entre pieceDepart et pieceArrivee
*/
public ArrayList<Piece> getPlusCourtChemin(Piece pieceDepart, Piece pieceArrivee){ public ArrayList<Piece> getPlusCourtChemin(Piece pieceDepart, Piece pieceArrivee){
Log.i("testGraphe", "Path (" + pieceDepart.getNom() + " -> " + pieceArrivee.getNom() + ", Route = " + res.get(pieceDepart).get(pieceArrivee)); //Log.i("testGraphe", "Path (" + pieceDepart.getNom() + " -> " + pieceArrivee.getNom() + ", Route = " + res.get(pieceDepart).get(pieceArrivee));
return res.get(pieceDepart).get(pieceArrivee); return res.get(pieceDepart).get(pieceArrivee);
} }
......
app/src/main/res/drawable/diagrammedeclasse.png

293 KiB | W: | H:

app/src/main/res/drawable/diagrammedeclasse.png

320 KiB | W: | H:

app/src/main/res/drawable/diagrammedeclasse.png
app/src/main/res/drawable/diagrammedeclasse.png
app/src/main/res/drawable/diagrammedeclasse.png
app/src/main/res/drawable/diagrammedeclasse.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -27,7 +27,7 @@ ...@@ -27,7 +27,7 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.892"/> app:layout_constraintHorizontal_bias="0.918"/>
<TextView <TextView
android:text="@string/direction" android:text="@string/direction"
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/spinnerDepart" app:layout_constraintBottom_toTopOf="@+id/spinnerDepart"
app:layout_constraintHorizontal_bias="0.137" app:layout_constraintHorizontal_bias="0.112"
app:layout_constraintVertical_bias="0.484"/> app:layout_constraintVertical_bias="0.484"/>
<TextView <TextView
...@@ -58,10 +58,10 @@ ...@@ -58,10 +58,10 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:id="@+id/textViewArrivee" android:id="@+id/textViewArrivee"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.754"
app:layout_constraintHorizontal_bias="0.871"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="16dp"/> android:layout_marginTop="16dp"
app:layout_constraintStart_toEndOf="@+id/textViewDepart"/>
<Spinner <Spinner
android:layout_width="181dp" android:layout_width="181dp"
...@@ -100,10 +100,10 @@ ...@@ -100,10 +100,10 @@
android:layout_height="33dp" android:layout_height="33dp"
android:id="@+id/spinnerDOrientation" android:id="@+id/spinnerDOrientation"
app:layout_constraintTop_toBottomOf="@+id/textView3" app:layout_constraintTop_toBottomOf="@+id/textView3"
android:layout_marginTop="20dp" android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.097"/> app:layout_constraintHorizontal_bias="0.092"/>
<SurfaceView <SurfaceView
android:layout_width="414dp" android:layout_width="414dp"
...@@ -124,8 +124,8 @@ ...@@ -124,8 +124,8 @@
app:layout_constraintTop_toBottomOf="@+id/spinnerDOrientation" app:layout_constraintTop_toBottomOf="@+id/spinnerDOrientation"
app:layout_constraintEnd_toStartOf="@+id/buttonSArrivee" app:layout_constraintEnd_toStartOf="@+id/buttonSArrivee"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="16dp" android:layout_marginTop="20dp"
app:layout_constraintHorizontal_bias="0.419"/> app:layout_constraintHorizontal_bias="0.158"/>
<Button <Button
android:text="@string/selectionner" android:text="@string/selectionner"
...@@ -135,8 +135,8 @@ ...@@ -135,8 +135,8 @@
android:onClick="setSArrivee" android:onClick="setSArrivee"
app:layout_constraintTop_toBottomOf="@+id/spinnerAOrientation" app:layout_constraintTop_toBottomOf="@+id/spinnerAOrientation"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="40dp" android:layout_marginEnd="16dp"
android:layout_marginTop="16dp"/> android:layout_marginTop="20dp"/>
<Button <Button
android:text="@string/confirmer" android:text="@string/confirmer"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment