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" />