main
Allan POINT 3 years ago
parent f8c99ea655
commit 823af23b93

@ -5,16 +5,17 @@
<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/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/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/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/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>
</option>
</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">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>

@ -10,13 +10,15 @@
android:supportsRtl="true"
android:theme="@style/Theme.Jeu_de_la_vie" >
<activity android:name=".launcher.Launcher"
<activity android:name=".view.LauncherActivity"
android:exported="true">
<intent-filter>
<category android:name="android.intent.category.LAUNCHER"/>
<action android:name="android.intent.action.MAIN"/>
</intent-filter>
</activity>
<activity android:name=".view.VueJeu" />
<activity android:name=".view.GameActivity" />
</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.Position;
import projet.iut.jeu_de_la_vie.model.cellulesVivantes.CellulesVivantes;
import java.util.LinkedList;
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.ObserverBDJ;
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;
/**
@ -114,6 +115,13 @@ public class Manager implements ObserverBDJ {
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){
Cellule.setLivingColor(color);
}

@ -1,6 +1,6 @@
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;
/**

@ -1,6 +1,6 @@
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;
/**

@ -1,6 +1,6 @@
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.plateau.Plateau;
import projet.iut.jeu_de_la_vie.model.cellule.CellState;

@ -1,6 +1,6 @@
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.cellule.CellState;

@ -1,6 +1,6 @@
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.plateau.Plateau;

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

@ -1,7 +1,7 @@
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 java.util.LinkedList;

@ -1,6 +1,6 @@
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 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.observer.ObserverCellule;
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;
@ -11,7 +13,7 @@ import java.util.HashMap;
* @author Yohann Breuil
* @author Allan Point
*/
public class CellulesVivantes implements ObserverCellule {
public class CellulesVivantes extends ObservableCV implements ObserverCellule {
/**
* Dictionaire contenant toutes les cellules vivantes
@ -43,16 +45,20 @@ public class CellulesVivantes implements ObserverCellule {
* @see Position
* @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
* @param cellule Cellule à retirer
* @param cell Cellule à retirer
* @see Position
* @see Cellule
*/
private void rmPeer(Cellule cellule){
cellVivantes.remove(cellule.getPosition());
private void rmPeer(Cellule cell){
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;
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.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.os.Bundle;
import android.text.Editable;
@ -7,7 +8,6 @@ import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import androidx.annotation.NonNull;
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.cellule.Cellule;
public class Launcher extends AppCompatActivity {
public class LauncherActivity extends AppCompatActivity {
private Manager manager;
private Button start;
@ -35,9 +35,10 @@ public class Launcher extends AppCompatActivity {
super.onCreate(savedInstanceState);
manager = new Manager();
setContentView(R.layout.menu_principal);
manager.lancerJeu();
//très moche à enlever plus tard
start = findViewById(R.id.startButton);
start.setOnClickListener(this::startGame);
/*
start.setOnClickListener(l -> {
EditText colones = findViewById(R.id.nbColone);
manager.getActualiseurCellule().getArbitre().getPlateau().setColone(Integer.parseInt(colones.getText().toString()));
@ -49,6 +50,7 @@ public class Launcher extends AppCompatActivity {
}
}
});
*/
}
@Override
@ -65,9 +67,9 @@ public class Launcher extends AppCompatActivity {
}
private void setNbColumns(){
//EditText editText = findViewById(R.id.nbColone);
//Editable text = editText.getText();
//manager.setNumberOfColumns(Integer.parseInt(text.toString()));
EditText editText = findViewById(R.id.nbColone);
Editable text = editText.getText();
manager.setNumberOfColumns(Integer.parseInt(text.toString()));
}
private void setNbLignes(){
EditText editText = findViewById(R.id.nbLignes);
@ -81,9 +83,12 @@ public class Launcher extends AppCompatActivity {
public void startGame(View view){
setNbLignes();
setNbColumns();
Log.d("d", "" + manager.getActualiseurCellule().getArbitre().getPlateau().getColone());
Log.d("d", "" + manager.getActualiseurCellule().getArbitre().getPlateau().getLigne());
Log.d("d", "" + manager.getNumberOfLines());
Log.d("d", "" + manager.getNomberOfColumns());
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){
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:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="startGame"
android:text="START \\(o^u^o)/"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

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

Loading…
Cancel
Save