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
Branches
No related tags found
No related merge requests found
......@@ -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{
* Fonction qui affiche la piece de depart
*/
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){
Mur mur = pieceDepart.getMurOrientation(orientationPieceDepart);
FileInputStream fis = null;
......@@ -272,6 +281,10 @@ public class CreationOuvertureActivity extends AppCompatActivity{
* Fonction qui affiche la piece d'arrivee
*/
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){
Mur mur = pieceArrivee.getMurOrientation(orientationPieceArrivee);
FileInputStream fis = null;
......
......@@ -3,6 +3,7 @@ package com.example.myhabitat;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.provider.MediaStore;
import android.text.Editable;
import android.text.TextWatcher;
......@@ -116,11 +117,8 @@ public class ModeConceptionActivity extends AppCompatActivity {
@Override
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
ouvrirJSON();
Log.i("testEConception", habitat.getOuvertures().toString());
super.onStart();
}
......@@ -163,8 +161,6 @@ public class ModeConceptionActivity extends AppCompatActivity {
LinearLayout llMur = new LinearLayout(this);
//llMur.setGravity(Gravity.CENTER_HORIZONTAL);
ImageButton imageButton = new ImageButton(this);
imageButton.setMaxHeight(50);
imageButton.setMaxWidth(50);
//On récupère la photo
FileInputStream fis = null;
......@@ -177,6 +173,8 @@ public class ModeConceptionActivity extends AppCompatActivity {
Bitmap bm = BitmapFactory.decodeStream(fis);
imageButton.setImageBitmap(bm);
}else{
imageButton.setImageDrawable(getDrawable(R.drawable.imagemur));
}
......
......@@ -180,7 +180,7 @@ public class ModeImmersionActivity extends AppCompatActivity implements SensorEv
//On met à jour la piece suivante si mode "aller a une piece"
if(goToPiece != null){
goTo();
goToSuite();
}
afficheOuvertures();
......@@ -330,6 +330,10 @@ public class ModeImmersionActivity extends AppCompatActivity implements SensorEv
super.onResume();
}
/**
* Fonction appelee pour trouver chemin jusqu'a une piece
* @param view
*/
public void goTo(View view) {
AlertDialog.Builder alertDialog = new AlertDialog.Builder(ModeImmersionActivity.this);
alertDialog.setTitle("Choisi une piece où aller");
......@@ -357,13 +361,16 @@ public class ModeImmersionActivity extends AppCompatActivity implements SensorEv
alertDialog.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
goTo();
goToSuite();
}
});
alertDialog.show();
}
private void goTo() {
/**
* Suite de la fonction goTo, permet d'initialiser le chemin
*/
private void goToSuite() {
if(!pieceEnCours.equals(goToPiece)) {
ArrayList<Piece> chemin = grapheHabitat.getPlusCourtChemin(pieceEnCours, goToPiece);
......
package outils;
import android.util.Log;
import habitat.Habitat;
import habitat.Ouverture;
import habitat.Piece;
......@@ -8,9 +7,10 @@ import java.util.*;
public class GrapheHabitat {
// A class to store a graph edge
class Edge
{
/**
* Classe pour les aretes du graphe
*/
class Edge{
int source, dest, weight;
public Edge(int source, int dest, int weight)
......@@ -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;
public Node(int vertex, int weight)
public Noeud(int vertex, int weight)
{
this.vertex = vertex;
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
List<List<Edge>> adjList = null;
// Constructor
Graph(List<Edge> edges, int n)
Graphe(List<Edge> edges, int n)
{
adjList = new ArrayList<>();
......@@ -58,9 +61,13 @@ public class GrapheHabitat {
private Habitat habitat;
private HashMap<Integer, Piece> hmap;
private HashMap<Piece, Integer> hmapGet;
//private HashMap<Piece, List<Piece>> res;
private HashMap<Piece, HashMap<Piece, ArrayList<Piece>>> res;
/**
* constructeur de GrapheHabitat
* @param habitat
*/
public GrapheHabitat(Habitat habitat) {
this.habitat = habitat;
res = new HashMap<>();
......@@ -71,7 +78,7 @@ public class GrapheHabitat {
for(Piece piece : habitat.getPieces()){
hmap.put(i, piece);
hmapGet.put(piece, i);
Log.i("testGraphe", "je mets " + piece.getNom());
//Log.i("testGraphe", "je mets " + piece.getNom());
i++;
res.put(piece, new HashMap<>());
......@@ -90,22 +97,22 @@ public class GrapheHabitat {
//On créé la list à partir des ouvertures
List<Edge> edges = new ArrayList<>();
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.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;
// construct graph
Graph graph = new Graph(edges, n);
// construction du graphe
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++) {
findShortestPaths(graph, source, n);
plusCourtChemin(graphe, source, n);
}
//For test
......@@ -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)
{
if (i >= 0)
......@@ -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
PriorityQueue<Node> minHeap;
minHeap = new PriorityQueue<>(Comparator.comparingInt(node -> node.weight));
minHeap.add(new Node(source, 0));
// instanciation de depart pour Dijkstra
PriorityQueue<Noeud> minHeap;
minHeap = new PriorityQueue<>(Comparator.comparingInt(noeud -> noeud.weight));
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;
dist = new ArrayList<>(Collections.nCopies(n, Integer.MAX_VALUE));
// distance from the source to itself is zero
//Et celui de depart a 0
dist.set(source, 0);
// boolean array to track vertices for which minimum
......@@ -159,13 +177,13 @@ public class GrapheHabitat {
while (!minHeap.isEmpty())
{
// Remove and return the best vertex
Node node = minHeap.poll();
Noeud noeud = minHeap.poll();
// get the vertex number
int u = node.vertex;
int u = noeud.vertex;
// 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 weight = edge.weight;
......@@ -175,7 +193,7 @@ public class GrapheHabitat {
{
dist.set(v, dist.get(u) + weight);
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 {
}
/**
* 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){
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);
}
......
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 @@
android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.892"/>
app:layout_constraintHorizontal_bias="0.918"/>
<TextView
android:text="@string/direction"
......@@ -49,7 +49,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toTopOf="@+id/spinnerDepart"
app:layout_constraintHorizontal_bias="0.137"
app:layout_constraintHorizontal_bias="0.112"
app:layout_constraintVertical_bias="0.484"/>
<TextView
......@@ -58,10 +58,10 @@
android:layout_height="wrap_content"
android:id="@+id/textViewArrivee"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.871"
app:layout_constraintHorizontal_bias="0.754"
app:layout_constraintTop_toTopOf="parent"
android:layout_marginTop="16dp"/>
android:layout_marginTop="16dp"
app:layout_constraintStart_toEndOf="@+id/textViewDepart"/>
<Spinner
android:layout_width="181dp"
......@@ -100,10 +100,10 @@
android:layout_height="33dp"
android:id="@+id/spinnerDOrientation"
app:layout_constraintTop_toBottomOf="@+id/textView3"
android:layout_marginTop="20dp"
android:layout_marginTop="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.097"/>
app:layout_constraintHorizontal_bias="0.092"/>
<SurfaceView
android:layout_width="414dp"
......@@ -124,8 +124,8 @@
app:layout_constraintTop_toBottomOf="@+id/spinnerDOrientation"
app:layout_constraintEnd_toStartOf="@+id/buttonSArrivee"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginTop="16dp"
app:layout_constraintHorizontal_bias="0.419"/>
android:layout_marginTop="20dp"
app:layout_constraintHorizontal_bias="0.158"/>
<Button
android:text="@string/selectionner"
......@@ -135,8 +135,8 @@
android:onClick="setSArrivee"
app:layout_constraintTop_toBottomOf="@+id/spinnerAOrientation"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginEnd="40dp"
android:layout_marginTop="16dp"/>
android:layout_marginEnd="16dp"
android:layout_marginTop="20dp"/>
<Button
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