main
Allan POINT 3 years ago
parent f8c99ea655
commit 823af23b93

@ -5,16 +5,17 @@
<map> <map>
<entry key="../../../../../../../../etud/alpoint/cours/2A/android/projet/projet-android/code/app/src/main/res/layout-port/menu_principal.xml" value="0.296195652173913" /> <entry key="../../../../../../../../etud/alpoint/cours/2A/android/projet/projet-android/code/app/src/main/res/layout-port/menu_principal.xml" value="0.296195652173913" />
<entry key="../../../../../../../../etud/alpoint/cours/2A/android/projet/projet-android/code/app/src/main/res/layout/menu_principal.xml" value="0.296195652173913" /> <entry key="../../../../../../../../etud/alpoint/cours/2A/android/projet/projet-android/code/app/src/main/res/layout/menu_principal.xml" value="0.296195652173913" />
<entry key="../../../../../../../../layout/custom_preview.xml" value="0.23958333333333334" />
<entry key="../../../../../../../etud/alpoint/cours/2A/android/projet/projet-android/app/src/main/res/layout-port/menu_principal.xml" value="0.29030797101449274" /> <entry key="../../../../../../../etud/alpoint/cours/2A/android/projet/projet-android/app/src/main/res/layout-port/menu_principal.xml" value="0.29030797101449274" />
<entry key="../../../../../etud/juduteyrat/Documents/android/code/app/src/main/res/layout-port/menu_principal.xml" value="0.19739583333333333" />
<entry key="../../../../../etud/juduteyrat/Documents/android/code/app/src/main/res/layout/menu_principal.xml" value="0.33" />
<entry key="app/src/main/res/layout-port/menu_principal.xml" value="0.296195652173913" /> <entry key="app/src/main/res/layout-port/menu_principal.xml" value="0.296195652173913" />
<entry key="app/src/main/res/layout-port/text_item.xml" value="0.21197916666666666" /> <entry key="app/src/main/res/layout-port/text_item.xml" value="0.21197916666666666" />
<entry key="app/src/main/res/layout-port/vue_jeu.xml" value="0.21197916666666666" /> <entry key="app/src/main/res/layout-port/vue_jeu.xml" value="0.21197916666666666" />
<entry key="app/src/main/res/layout/game_activity.xml" value="0.3765625" />
<entry key="app/src/main/res/layout/menu_principal.xml" value="0.3765625" />
<entry key="app/src/main/res/layout/vue_jeu.xml" value="0.33" />
</map> </map>
</option> </option>
</component> </component>
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>

@ -10,13 +10,15 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.Jeu_de_la_vie" > android:theme="@style/Theme.Jeu_de_la_vie" >
<activity android:name=".launcher.Launcher" <activity android:name=".view.LauncherActivity"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.MAIN"/>
</intent-filter> </intent-filter>
</activity> </activity>
<activity android:name=".view.VueJeu" />
<activity android:name=".view.GameActivity" />
</application> </application>

@ -2,6 +2,7 @@ package projet.iut.jeu_de_la_vie.model;
import projet.iut.jeu_de_la_vie.model.cellule.Cellule; import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
import projet.iut.jeu_de_la_vie.model.cellule.Position; import projet.iut.jeu_de_la_vie.model.cellule.Position;
import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;

@ -8,6 +8,7 @@ import projet.iut.jeu_de_la_vie.model.boucleDeJeu.IBoucleDeJeu;
import projet.iut.jeu_de_la_vie.model.boucleDeJeu.observer.ObservableBDJ; import projet.iut.jeu_de_la_vie.model.boucleDeJeu.observer.ObservableBDJ;
import projet.iut.jeu_de_la_vie.model.boucleDeJeu.observer.ObserverBDJ; import projet.iut.jeu_de_la_vie.model.boucleDeJeu.observer.ObserverBDJ;
import projet.iut.jeu_de_la_vie.model.cellule.Cellule; import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import projet.iut.jeu_de_la_vie.model.plateau.Plateau; import projet.iut.jeu_de_la_vie.model.plateau.Plateau;
/** /**
@ -114,6 +115,13 @@ public class Manager implements ObserverBDJ {
actualiseurCellule.getArbitre().getPlateau().setLigne(value); actualiseurCellule.getArbitre().getPlateau().setLigne(value);
} }
public int getNumberOfLines(){
return actualiseurCellule.getArbitre().getPlateau().getLigne();
}
public int getNomberOfColumns(){
return actualiseurCellule.getArbitre().getPlateau().getColone();
}
public void setCellsColor(int color){ public void setCellsColor(int color){
Cellule.setLivingColor(color); Cellule.setLivingColor(color);
} }

@ -1,6 +1,6 @@
package projet.iut.jeu_de_la_vie.model.actualiseur; package projet.iut.jeu_de_la_vie.model.actualiseur;
import projet.iut.jeu_de_la_vie.model.CellulesVivantes; import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import projet.iut.jeu_de_la_vie.model.arbitre.Arbitre; import projet.iut.jeu_de_la_vie.model.arbitre.Arbitre;
/** /**

@ -1,6 +1,6 @@
package projet.iut.jeu_de_la_vie.model.actualiseur; package projet.iut.jeu_de_la_vie.model.actualiseur;
import projet.iut.jeu_de_la_vie.model.CellulesVivantes; import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import projet.iut.jeu_de_la_vie.model.arbitre.Arbitre; import projet.iut.jeu_de_la_vie.model.arbitre.Arbitre;
/** /**

@ -1,6 +1,6 @@
package projet.iut.jeu_de_la_vie.model.arbitre; package projet.iut.jeu_de_la_vie.model.arbitre;
import projet.iut.jeu_de_la_vie.model.CellulesVivantes; import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import projet.iut.jeu_de_la_vie.model.CompteurDeCellule; import projet.iut.jeu_de_la_vie.model.CompteurDeCellule;
import projet.iut.jeu_de_la_vie.model.plateau.Plateau; import projet.iut.jeu_de_la_vie.model.plateau.Plateau;
import projet.iut.jeu_de_la_vie.model.cellule.CellState; import projet.iut.jeu_de_la_vie.model.cellule.CellState;

@ -1,6 +1,6 @@
package projet.iut.jeu_de_la_vie.model.arbitre; package projet.iut.jeu_de_la_vie.model.arbitre;
import projet.iut.jeu_de_la_vie.model.CellulesVivantes; import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import projet.iut.jeu_de_la_vie.model.plateau.Plateau; import projet.iut.jeu_de_la_vie.model.plateau.Plateau;
import projet.iut.jeu_de_la_vie.model.cellule.CellState; import projet.iut.jeu_de_la_vie.model.cellule.CellState;

@ -1,6 +1,6 @@
package projet.iut.jeu_de_la_vie.model.arbitre; package projet.iut.jeu_de_la_vie.model.arbitre;
import projet.iut.jeu_de_la_vie.model.CellulesVivantes; import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import projet.iut.jeu_de_la_vie.model.cellule.CellState; import projet.iut.jeu_de_la_vie.model.cellule.CellState;
import projet.iut.jeu_de_la_vie.model.plateau.Plateau; import projet.iut.jeu_de_la_vie.model.plateau.Plateau;

@ -39,6 +39,9 @@ public class Cellule extends ObservableCellule {
* Couleur des cellules mortes * Couleur des cellules mortes
*/ */
private int deathColor; private int deathColor;
public int getDeathColor(){
return deathColor;
}
/** /**
* *

@ -1,7 +1,7 @@
package projet.iut.jeu_de_la_vie.model.cellule.créateur; package projet.iut.jeu_de_la_vie.model.cellule.créateur;
import projet.iut.jeu_de_la_vie.model.CellulesVivantes; import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import projet.iut.jeu_de_la_vie.model.cellule.Cellule; import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
import java.util.LinkedList; import java.util.LinkedList;

@ -1,6 +1,6 @@
package projet.iut.jeu_de_la_vie.model.cellule.créateur; package projet.iut.jeu_de_la_vie.model.cellule.créateur;
import projet.iut.jeu_de_la_vie.model.CellulesVivantes; import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import projet.iut.jeu_de_la_vie.model.cellule.Cellule; import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
import java.util.List; import java.util.List;

@ -1,8 +1,10 @@
package projet.iut.jeu_de_la_vie.model; package projet.iut.jeu_de_la_vie.model.cellulesVivantes;
import projet.iut.jeu_de_la_vie.model.cellule.Cellule; import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
import projet.iut.jeu_de_la_vie.model.cellule.observer.ObserverCellule; import projet.iut.jeu_de_la_vie.model.cellule.observer.ObserverCellule;
import projet.iut.jeu_de_la_vie.model.cellule.Position; import projet.iut.jeu_de_la_vie.model.cellule.Position;
import projet.iut.jeu_de_la_vie.model.cellulesVivantes.observer.ObservableCV;
import java.util.HashMap; import java.util.HashMap;
@ -11,7 +13,7 @@ import java.util.HashMap;
* @author Yohann Breuil * @author Yohann Breuil
* @author Allan Point * @author Allan Point
*/ */
public class CellulesVivantes implements ObserverCellule { public class CellulesVivantes extends ObservableCV implements ObserverCellule {
/** /**
* Dictionaire contenant toutes les cellules vivantes * Dictionaire contenant toutes les cellules vivantes
@ -43,16 +45,20 @@ public class CellulesVivantes implements ObserverCellule {
* @see Position * @see Position
* @see Cellule * @see Cellule
*/ */
private void addPeer(Cellule cell){ cellVivantes.put(cell.getPosition(), cell); } private void addPeer(Cellule cell){
cellVivantes.put(cell.getPosition(), cell);
notifier(cell);
}
/** /**
* Retir une paire clef:valeur (Postion:Cellule) du dictionaire contenant les cellules vivantes * Retir une paire clef:valeur (Postion:Cellule) du dictionaire contenant les cellules vivantes
* @param cellule Cellule à retirer * @param cell Cellule à retirer
* @see Position * @see Position
* @see Cellule * @see Cellule
*/ */
private void rmPeer(Cellule cellule){ private void rmPeer(Cellule cell){
cellVivantes.remove(cellule.getPosition()); cellVivantes.remove(cell.getPosition());
notifier(cell);
} }
/** /**

@ -0,0 +1,32 @@
package projet.iut.jeu_de_la_vie.model.cellulesVivantes.observer;
import java.util.LinkedList;
import java.util.List;
import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
public abstract class ObservableCV {
private List<ObserverCV> observeurs;
public ObservableCV(){observeurs = new LinkedList<>();}
public void attacher(ObserverCV o) throws IllegalArgumentException{
if(o == null){
throw new IllegalArgumentException("L'observer ne doit pas être null");
}
observeurs.add(o);
}
public void detacher(ObserverCV o) throws IllegalArgumentException{
if(o == null){
throw new IllegalArgumentException("L'observer ne doit pas être null");
}
observeurs.remove(o);
}
public void notifier(Cellule changingCell) {
for (ObserverCV observeur : observeurs) {
observeur.update(changingCell);
}
}
}

@ -0,0 +1,7 @@
package projet.iut.jeu_de_la_vie.model.cellulesVivantes.observer;
import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
public interface ObserverCV {
void update(Cellule changingCell);
}

@ -1,6 +1,6 @@
package projet.iut.jeu_de_la_vie.model.plateau; package projet.iut.jeu_de_la_vie.model.plateau;
import projet.iut.jeu_de_la_vie.model.CellulesVivantes; import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import projet.iut.jeu_de_la_vie.model.cellule.Cellule; import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
import projet.iut.jeu_de_la_vie.model.cellule.créateur.CreateurCellule; import projet.iut.jeu_de_la_vie.model.cellule.créateur.CreateurCellule;

@ -0,0 +1,20 @@
package projet.iut.jeu_de_la_vie.view;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import projet.iut.jeu_de_la_vie.R;
public class GameActivity extends AppCompatActivity {
private PlateauView plateauView;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.game_activity);
plateauView = findViewById(R.id.plateauView);
}
}

@ -1,5 +1,6 @@
package projet.iut.jeu_de_la_vie.launcher; package projet.iut.jeu_de_la_vie.view;
import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
@ -7,7 +8,6 @@ import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -19,7 +19,7 @@ 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.Manager;
import projet.iut.jeu_de_la_vie.model.cellule.Cellule; import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
public class Launcher extends AppCompatActivity { public class LauncherActivity extends AppCompatActivity {
private Manager manager; private Manager manager;
private Button start; private Button start;
@ -35,9 +35,10 @@ public class Launcher extends AppCompatActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
manager = new Manager(); manager = new Manager();
setContentView(R.layout.menu_principal); setContentView(R.layout.menu_principal);
manager.lancerJeu();
//très moche à enlever plus tard //très moche à enlever plus tard
start = findViewById(R.id.startButton); start = findViewById(R.id.startButton);
start.setOnClickListener(this::startGame);
/*
start.setOnClickListener(l -> { start.setOnClickListener(l -> {
EditText colones = findViewById(R.id.nbColone); EditText colones = findViewById(R.id.nbColone);
manager.getActualiseurCellule().getArbitre().getPlateau().setColone(Integer.parseInt(colones.getText().toString())); manager.getActualiseurCellule().getArbitre().getPlateau().setColone(Integer.parseInt(colones.getText().toString()));
@ -49,6 +50,7 @@ public class Launcher extends AppCompatActivity {
} }
} }
}); });
*/
} }
@Override @Override
@ -65,9 +67,9 @@ public class Launcher extends AppCompatActivity {
} }
private void setNbColumns(){ private void setNbColumns(){
//EditText editText = findViewById(R.id.nbColone); EditText editText = findViewById(R.id.nbColone);
//Editable text = editText.getText(); Editable text = editText.getText();
//manager.setNumberOfColumns(Integer.parseInt(text.toString())); manager.setNumberOfColumns(Integer.parseInt(text.toString()));
} }
private void setNbLignes(){ private void setNbLignes(){
EditText editText = findViewById(R.id.nbLignes); EditText editText = findViewById(R.id.nbLignes);
@ -81,9 +83,12 @@ public class Launcher extends AppCompatActivity {
public void startGame(View view){ public void startGame(View view){
setNbLignes(); setNbLignes();
setNbColumns(); setNbColumns();
Log.d("d", "" + manager.getActualiseurCellule().getArbitre().getPlateau().getColone()); Log.d("d", "" + manager.getNumberOfLines());
Log.d("d", "" + manager.getActualiseurCellule().getArbitre().getPlateau().getLigne()); Log.d("d", "" + manager.getNomberOfColumns());
Log.d("d", "" + Cellule.getLivingColor()); Log.d("d", "" + Cellule.getLivingColor());
Intent intent = new Intent(this, GameActivity.class);
startActivity(intent);
//setContentView(new PlateauView(this, manager.getNomberOfColumns() ,manager.getNumberOfLines()));
} }
public void setCellsRed(View view){ public void setCellsRed(View view){
int red = Color.RED; int red = Color.RED;

@ -0,0 +1,100 @@
package projet.iut.jeu_de_la_vie.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Build;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Observable;
import projet.iut.jeu_de_la_vie.model.cellule.Cellule;
import projet.iut.jeu_de_la_vie.model.cellule.Position;
import projet.iut.jeu_de_la_vie.model.cellule.observer.ObserverCellule;
import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import projet.iut.jeu_de_la_vie.model.cellulesVivantes.observer.ObservableCV;
import projet.iut.jeu_de_la_vie.model.cellulesVivantes.observer.ObserverCV;
public class PlateauView extends View implements ObserverCV {
private HashMap<Position, Integer> colors;
public PlateauView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public PlateauView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public PlateauView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
private Paint paint;
private int colones;
private int lignes;
private int dethColor;
public PlateauView(Context context, int colones, int lignes){
super(context);
colors = new HashMap<>();
paint = new Paint();
this.colones = colones;
this.lignes = lignes;
this.dethColor = Color.BLACK;
}
@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);
Integer tmp;
Rect rect;
for(int i=0; i<lignes; ++i){
for(int j=0; j<colones; ++j){
Position p = new Position(j, i);
tmp = colors.get(p);
paint.setColor(dethColor);
if(tmp instanceof Integer){
paint.setColor(tmp);
}
rect = new Rect(j, i, j+10, i+10);
canvas.drawRect(rect, paint);
}
}
}
@Override
public void update(Cellule changingCell) {
if(changingCell.isAlive()){
colors.put(changingCell.getPosition(), changingCell.getActiveColor());
}
else {
colors.remove(changingCell.getPosition());
}
}
public void setColones(int value) throws IllegalArgumentException{
if(value < 0){
throw new IllegalArgumentException("La valeur des colones doit être supperieur à 0");
}
colones = value;
}
public void setLignes(int value) throws IllegalArgumentException{
if(value < 0){
throw new IllegalArgumentException("La valeur des colones doit être supperieur à 0");
}
lignes = value;
}
}

@ -0,0 +1,14 @@
package projet.iut.jeu_de_la_vie.view;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
public class VueJeu extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new PlateauView(this, 10, 10));
}
}

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<projet.iut.jeu_de_la_vie.view.PlateauView
android:id="@+id/plateauView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>

@ -103,7 +103,6 @@
android:id="@+id/startButton" android:id="@+id/startButton"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:onClick="startGame"
android:text="START \\(o^u^o)/" android:text="START \\(o^u^o)/"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

@ -6,7 +6,7 @@
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/board"
android:layout_width="409dp" android:layout_width="409dp"
android:layout_height="729dp" android:layout_height="729dp"
app:layout_constraintBottom_toTopOf="@+id/button" app:layout_constraintBottom_toTopOf="@+id/button"

Loading…
Cancel
Save