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 b6896cb..42c5d01 100644
--- a/test_sae_contenue_juste_le_main/src/main/AndroidManifest.xml
+++ b/test_sae_contenue_juste_le_main/src/main/AndroidManifest.xml
@@ -14,6 +14,7 @@
+
diff --git a/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle10.xml b/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle10.xml
index b1e0791..19f4936 100644
--- a/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle10.xml
+++ b/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle10.xml
@@ -1,58 +1,52 @@
-
-
+
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle11.xml b/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle11.xml
index 7c89026..2c83fe3 100644
--- a/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle11.xml
+++ b/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle11.xml
@@ -1,46 +1,57 @@
-
+
+
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle14.xml b/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle14.xml
index 1c3778c..4f255d5 100644
--- a/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle14.xml
+++ b/test_sae_contenue_juste_le_main/src/main/assets/puzzles/puzzle14.xml
@@ -1,54 +1,72 @@
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
\ No newline at end of file
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 132ec9d..dc76791 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
@@ -161,10 +161,37 @@ private void printBoardToLog() {
}
//dessine quand c'est victoir
if (win) {
- paint.setColor(Color.BLACK);
+ String message = "🎉 Bravo !";
paint.setTextSize(80);
paint.setTextAlign(Paint.Align.CENTER);
- canvas.drawText("🎉 Bravo !", getWidth() / 2f, getHeight() / 2f, paint);
+
+ // Mesure le texte
+ Paint.FontMetrics fm = paint.getFontMetrics();
+ float textWidth = paint.measureText(message);
+ float textHeight = fm.bottom - fm.top;
+
+ float centerX = getWidth() / 2f;
+ float centerY = getHeight() / 2f;
+
+ // 🎨 Dessine un fond blanc arrondi
+ paint.setStyle(Paint.Style.FILL);
+ paint.setColor(Color.WHITE);
+ float padding = 30;
+ RectF background = new RectF(
+ centerX - textWidth / 2 - padding,
+ centerY + fm.top - padding / 2,
+ centerX + textWidth / 2 + padding,
+ centerY + fm.bottom + padding / 2
+ );
+ canvas.drawRoundRect(background, 30, 30, paint);
+
+ // 🖤 Ombre
+ paint.setColor(Color.BLACK);
+ canvas.drawText(message, centerX + 3, centerY + 3, paint);
+
+ // 🔴 Texte principal
+ paint.setColor(Color.RED);
+ canvas.drawText(message, centerX, centerY, paint);
}
@@ -268,56 +295,58 @@ private void printBoardToLog() {
//version chat
case MotionEvent.ACTION_MOVE:
if (selectedColor != 0) {
- if (board[row][col] == 0) { // la case est vide
- // Vérifie que la case est adjacente à la dernière
- List path = paths.get(selectedColor);
- int[] last = path.get(path.size() - 1);
-
- int dr = Math.abs(last[0] - row);
- int dc = Math.abs(last[1] - col);
-
- 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
- invalidate(); // 🖌️ Redessine la vue
-
-
+ List path = paths.get(selectedColor);
+ if (path == null || path.isEmpty()) break;
+ int[] last = path.get(path.size() - 1);
+ int dr = Math.abs(last[0] - row);
+ int dc = Math.abs(last[1] - col);
+ if ((dr == 1 && dc == 0) || (dr == 0 && dc == 1)) {
+ int current = board[row][col];
+ // 1️⃣ Avancer sur une case vide
+ if (current == 0) {
+ board[row][col] = -selectedColor;
+ path.add(new int[]{row, col});
+ invalidate();
}
- }
- if (board[row][col] == selectedColor) { // la case est la meme que le depart
- // Vérifie que la case est adjacente à la dernière
- List path = paths.get(selectedColor);
- int[] last = path.get(path.size() - 1);
+ // 2️⃣ Atteindre l’autre point de la paire
+ else if (current == selectedColor) {
+ // ⚠️ Ne pas revenir au point de départ
+ 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;
+ }
- 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
+ path.add(new int[]{row, col});
+ board[row][col] = selectedColor;
completedColors.add(selectedColor);
- selectedColor = 0;// permet de ne pas travers la paire
+ selectedColor = 0;
checkWin();
- invalidate(); // 🖌️ Redessine la vue
- Log.d("DEBUG_FLOW", "Paire " + selectedColor + " complétée !");
+ invalidate();
+ Log.d("DEBUG_FLOW", "Paire complétée !");
+ }
+
+ // 3️⃣ Reculer sur une case du chemin
+ else if (current == -selectedColor && path.size() >= 2) {
+ int[] beforeLast = path.get(path.size() - 2);
+ if (beforeLast[0] == row && beforeLast[1] == col) {
+ // 🔙 On recule d’une case
+ int[] removed = path.remove(path.size() - 1);
+ board[removed[0]][removed[1]] = 0;
+ invalidate();
+ Log.d("DEBUG_FLOW", "Recul d’une case sur le chemin.");
+ }
}
}
}
break;
- //version chat
+
+
+ //version chat
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
index 1250215..a7f65ea 100644
--- 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
@@ -1,5 +1,6 @@
package com.example.flow_free;
+import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
@@ -9,13 +10,17 @@ import android.widget.Button;
public class MenuActivity extends Activity {
private Button Bjouer;
+ private Button Bregles;
private listener view;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
Bjouer = findViewById(R.id.Bjouer);
+ Bregles = findViewById(R.id.Bregles);
Bjouer.setOnClickListener(new listener(this,MainActivity.class));
+ Bregles.setOnClickListener(new listener(this,RulesActivity.class));
diff --git a/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/RulesActivity.java b/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/RulesActivity.java
index 309b3cc..71eff39 100644
--- a/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/RulesActivity.java
+++ b/test_sae_contenue_juste_le_main/src/main/java/com/example/flow_free/RulesActivity.java
@@ -1,4 +1,13 @@
+// RulesActivity.java
package com.example.flow_free;
-public class RulesActivity {
-}
+import android.app.Activity;
+import android.os.Bundle;
+
+public class RulesActivity extends Activity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_rules);
+ }
+}
\ No newline at end of file
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
index 98c9c54..c59c980 100644
--- 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
@@ -23,7 +23,7 @@
android:text="Jouer" />