diff --git a/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/boucleDeJeu/observer/ObservableBDJ.java b/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/boucleDeJeu/observer/ObservableBDJ.java
index 335c90d..f947af0 100644
--- a/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/boucleDeJeu/observer/ObservableBDJ.java
+++ b/code/app/src/main/java/projet/iut/jeu_de_la_vie/model/boucleDeJeu/observer/ObservableBDJ.java
@@ -49,5 +49,8 @@ public abstract class ObservableBDJ {
Platform.runLater(()->observeur.update());
}
*/
+ for (ObserverBDJ observeur : observeurs) {
+ observeur.update();
+ }
}
}
\ No newline at end of file
diff --git a/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/PlateauView.java b/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/PlateauView.java
index 963fea6..25b9869 100644
--- a/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/PlateauView.java
+++ b/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/PlateauView.java
@@ -113,6 +113,9 @@ public class PlateauView extends View implements ObserverCV {
public void addPosCell(Cellule cellule){
colors.put(cellule.getPosition(), cellule.getActiveColor());
}
+ public void delPosCell(Cellule cellule){
+ colors.remove(cellule.getPosition());
+ }
public void setColones(int value) throws IllegalArgumentException{
if(value < 0){
diff --git a/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/fragment/FragmentPlateau.java b/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/fragment/FragmentPlateau.java
index ea6765b..41f3ca8 100644
--- a/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/fragment/FragmentPlateau.java
+++ b/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/fragment/FragmentPlateau.java
@@ -6,6 +6,7 @@ import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
+import android.widget.Button;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -13,24 +14,17 @@ import androidx.fragment.app.Fragment;
import projet.iut.jeu_de_la_vie.R;
import projet.iut.jeu_de_la_vie.model.Manager;
+import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
+import projet.iut.jeu_de_la_vie.model.cellulesVivantes.observer.ObserverCV;
import projet.iut.jeu_de_la_vie.view.PlateauView;
-public class FragmentPlateau extends Fragment {
-/*
- private Plateau plateau;
+public class FragmentPlateau extends Fragment implements ObserverCV {
- public Plateau getPlateau() {
- return plateau;
- }
-
- public void setPlateau(Plateau plateau) {
- this.plateau = plateau;
- }
-*/
private Manager manager;
public FragmentPlateau(){
super(R.layout.fragment_plateau); //<-- lui passer la future vue du jeu
manager = new Manager();
+ manager.getActualiseurCellule().getArbitre().getPlateau().getCellulesVivantes().attacher(this);
}
@Override
@@ -47,24 +41,61 @@ public class FragmentPlateau extends Fragment {
PlateauView plateauView = view.findViewById(R.id.plateauView);
plateauView.setLignes(manager.getNumberOfLines());
plateauView.setColones(manager.getNomberOfColumns());
- plateauView.setOnTouchListener((view1, motionEvent) -> {
- int x = (int) (( (float) manager.getNomberOfColumns() / view1.getWidth()) * motionEvent.getX()-5/100);
- int y = (int) (( (float) manager.getNomberOfColumns() / view1.getWidth()) * motionEvent.getY()-5/100);
- Log.d("D", "x=" + x);
- Log.d("D", "y=" + y);
- try {
- manager.updateOnCellBeforeStart(x, y);
- ((PlateauView) view1).addPosCell(manager.getCell(x, y));
- view1.postInvalidate();
- }catch (IllegalArgumentException e){
- Log.w("WARNING", e.getMessage());
+ plateauView.setOnTouchListener(this::loadRect);
+ Button button = view.findViewById(R.id.startnstopButton);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ if(manager.isJeuLance())
+ {
+ ((Button) view).setText("Start");
+ manager.stoperJeu();
+ }else {
+ ((Button) view).setText("Stop");
+ manager.lancerJeu();
+ }
}
- return false;
});
}
+ private boolean loadRect(View view1, MotionEvent motionEvent){
+ int x = (int) (( (float) manager.getNomberOfColumns() / view1.getWidth()) * motionEvent.getX()-5/100);
+ int y = (int) (( (float) manager.getNomberOfColumns() / view1.getWidth()) * motionEvent.getY()-5/100);
+ return loadRect(view1, x, y);
+ }
+ private boolean loadRect(View view, int x, int y){
+ Log.d("D", "x=" + x);
+ Log.d("D", "y=" + y);
+ try {
+ manager.updateOnCellBeforeStart(x, y);
+ Cellule cellule = manager.getCell(x, y);
+ if(cellule.isAlive()) {
+ ((PlateauView) view).addPosCell(cellule);
+ }else {
+ ((PlateauView) view).delPosCell(cellule);
+ }
+ view.postInvalidate();
+ }catch (IllegalArgumentException e){
+ Log.w("WARNING", e.getMessage());
+ }
+ return false;
+ }
+
@Override
public void onInflate(@NonNull Context context, @NonNull AttributeSet attrs, @Nullable Bundle savedInstanceState) {
super.onInflate(context, attrs, savedInstanceState);
}
+
+ @Override
+ public void update(Cellule changingCell) {
+ View plateauView = getView().findViewById(R.id.plateauView);
+ if(plateauView != null) {
+ plateauView.post(new Runnable() {
+ @Override
+ public void run() {
+ loadRect(plateauView, changingCell.getPosition().getX(), changingCell.getPosition().getY());
+ }
+ });
+ }
+ }
}
diff --git a/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/fragment/MenuFragment.java b/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/fragment/MenuFragment.java
index 31fcc4a..86a9328 100644
--- a/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/fragment/MenuFragment.java
+++ b/code/app/src/main/java/projet/iut/jeu_de_la_vie/view/fragment/MenuFragment.java
@@ -1,7 +1,6 @@
package projet.iut.jeu_de_la_vie.view.fragment;
import android.os.Bundle;
-import android.text.Editable;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
diff --git a/code/app/src/main/res/layout/fragment_plateau.xml b/code/app/src/main/res/layout/fragment_plateau.xml
index 21b33cc..2a21514 100644
--- a/code/app/src/main/res/layout/fragment_plateau.xml
+++ b/code/app/src/main/res/layout/fragment_plateau.xml
@@ -1,10 +1,31 @@
-
+ android:layout_height="match_parent"
+ android:id="@+id/containerPlateauView">
+
+
+
+
+
+
\ No newline at end of file
diff --git a/code/app/src/main/res/layout/jeu_de_la_vie.xml b/code/app/src/main/res/layout/jeu_de_la_vie.xml
index ea5cf0f..fb53cf7 100644
--- a/code/app/src/main/res/layout/jeu_de_la_vie.xml
+++ b/code/app/src/main/res/layout/jeu_de_la_vie.xml
@@ -8,13 +8,13 @@
+ app:layout_constraintVertical_bias="1.0" />
\ No newline at end of file
diff --git a/code/app/src/main/res/values/strings.xml b/code/app/src/main/res/values/strings.xml
index 5432b80..3fe86ad 100644
--- a/code/app/src/main/res/values/strings.xml
+++ b/code/app/src/main/res/values/strings.xml
@@ -1,3 +1,4 @@
Jeu_de_la_vie
+ Start
\ No newline at end of file