diff --git a/test_sae_contenue_juste_le_main/src/main/AndroidManifest.xml b/test_sae_contenue_juste_le_main/src/main/AndroidManifest.xml
index 8ca4082..b6896cb 100644
--- a/test_sae_contenue_juste_le_main/src/main/AndroidManifest.xml
+++ b/test_sae_contenue_juste_le_main/src/main/AndroidManifest.xml
@@ -4,7 +4,7 @@
@@ -13,5 +13,7 @@
+
+
diff --git a/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/FlowFreeView.java b/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/FlowFreeView.java
index 6ee7a66..ab25e05 100644
--- a/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/FlowFreeView.java
+++ b/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/FlowFreeView.java
@@ -24,6 +24,7 @@ public class FlowFreeView extends View {
private final Map colorMap = new HashMap<>();//test pour la couleur
private final Set completedColors = new HashSet<>();// liste des chemin fini
+ private boolean win = false;
private static final int[] DISTINCT_COLORS = {
@@ -158,8 +159,54 @@ private void printBoardToLog() {
);
}
}
+ //dessine quand c'est victoir
+ if (win) {
+ paint.setColor(Color.BLACK);
+ paint.setTextSize(80);
+ paint.setTextAlign(Paint.Align.CENTER);
+ canvas.drawText("đ Bravo !", getWidth() / 2f, getHeight() / 2f, paint);
+ }
+
+
}
+ //test
+ private void clearPath(int color) {
+ // Supprime visuellement le chemin
+ for (int r = 0; r < board.length; r++) {
+ for (int c = 0; c < board[r].length; c++) {
+ if (board[r][c] == -color) {
+ board[r][c] = 0;
+ }
+ }
+ }
+
+ // Supprime le chemin logique
+ paths.remove(color);
+ completedColors.remove(color);
+ invalidate(); // Redessine
+ }
+ //test
+ //verrifie condition victoir
+ private void checkWin() {
+ // 1. Vérifie si le tableau est complÚtement rempli
+ for (int r = 0; r < board.length; r++) {
+ for (int c = 0; c < board[r].length; c++) {
+ if (board[r][c] == 0) {
+ return; // Case vide : pas encore gagné
+ }
+ }
+ }
+
+ // 2. Vérifie si toutes les paires sont terminées
+ if (completedColors.size() == puzzle.getPairs().size()) {
+ Log.d("DEBUG_FLOW", "đ Puzzle rĂ©solu !");
+ win = true;
+ invalidate(); // Redessine pour afficher le message
+ }
+ }
+
+
@Override
public boolean onTouchEvent(MotionEvent event) {
@@ -175,7 +222,15 @@ private void printBoardToLog() {
case MotionEvent.ACTION_DOWN:
int colorAtCell = board[row][col];
- if (colorAtCell != 0) {
+ if (colorAtCell > 0) {
+
+ //test
+ clearPath(colorAtCell); // đ mĂȘme fonction de nettoyage
+ selectedColor = colorAtCell;
+ paths.put(selectedColor, new ArrayList<>());
+ paths.get(selectedColor).add(new int[]{row, col});
+ //test
+
if (completedColors.contains(colorAtCell)) {// regarde si le chemin qu'on veut tracer est fini
// đ Ne pas toucher Ă un chemin terminĂ©
Log.d("DEBUG_FLOW", "Chemin déjà terminé, on ne fait rien.");
@@ -236,11 +291,21 @@ private void printBoardToLog() {
int dr = Math.abs(last[0] - row);
int dc = Math.abs(last[1] - col);
+
+ //permet de ne pas revenir a upoint de depart
+ int[] start = path.get(0);
+ if (row == start[0] && col == start[1]) {
+ Log.d("DEBUG_FLOW", "Tentative de retour au point de dĂ©part â refusĂ©.");
+ break;
+ }
+ // test
+
if ((dr == 1 && dc == 0) || (dr == 0 && dc == 1)) {
board[row][col] = selectedColor; // â
Remplit avec lâid du point de dĂ©part
path.add(new int[]{row, col}); // đ On suit le chemin mais un seul id
completedColors.add(selectedColor);
selectedColor = 0;// permet de ne pas travers la paire
+ checkWin();
invalidate(); // đïž Redessine la vue
Log.d("DEBUG_FLOW", "Paire " + selectedColor + " complétée !");
}
diff --git a/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/MenuActivity.java b/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/MenuActivity.java
new file mode 100644
index 0000000..e68d396
--- /dev/null
+++ b/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/MenuActivity.java
@@ -0,0 +1,26 @@
+package com.example.flow_free;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.MotionEvent;
+import android.widget.Button;
+
+public class MenuActivity extends Activity {
+
+ private Button Bjouer;
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_menu);
+ Bjouer = findViewById(R.id.Bjouer);
+ Bjouer.setOnClickListener(view -> {
+ Intent intent = new Intent(MenuActivity.this, MainActivity.class);
+ startActivity(intent);
+ });
+ }
+
+
+
+}
+
diff --git a/test_sae_contenue_juste_le_main/src/main/res/layout/activity_menu.xml b/test_sae_contenue_juste_le_main/src/main/res/layout/activity_menu.xml
new file mode 100644
index 0000000..98c9c54
--- /dev/null
+++ b/test_sae_contenue_juste_le_main/src/main/res/layout/activity_menu.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file