fix decalage notes et ajout bot, changements structures de donnes
This commit is contained in:
		@@ -12,6 +12,7 @@ public class HotSeatActivity extends Activity {
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
        setContentView(new GameView(this, new Saisie(), new Grille()));
 | 
			
		||||
        boolean bot = getIntent().getBooleanExtra("bot", false);
 | 
			
		||||
        setContentView(new GameView(this, new Saisie(), new Grille(), bot));
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -23,29 +23,31 @@ public class MainActivity extends Activity {
 | 
			
		||||
        mHotSeat.setOnClickListener(new View.OnClickListener() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onClick(View v) {
 | 
			
		||||
                Intent tp1Intent = new Intent(MainActivity.this, HotSeatActivity.class);
 | 
			
		||||
                startActivity(tp1Intent);
 | 
			
		||||
                Intent HotSeat = new Intent(MainActivity.this, HotSeatActivity.class);
 | 
			
		||||
                HotSeat.putExtra("bot", false);
 | 
			
		||||
                startActivity(HotSeat);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        /*mORDI.setOnClickListener(new View.OnClickListener() {
 | 
			
		||||
        mORDI.setOnClickListener(new View.OnClickListener() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onClick(View v) {
 | 
			
		||||
                Intent tp2Intent = new Intent(MainActivity.this, ORDI.class);
 | 
			
		||||
                startActivity(tp2Intent);
 | 
			
		||||
                Intent ordi = new Intent(MainActivity.this, HotSeatActivity.class);
 | 
			
		||||
                ordi.putExtra("bot", true);
 | 
			
		||||
                startActivity(ordi);
 | 
			
		||||
            }
 | 
			
		||||
        });*/
 | 
			
		||||
        });
 | 
			
		||||
        mSettings.setOnClickListener(new View.OnClickListener() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onClick(View v) {
 | 
			
		||||
                Intent tp3Intent = new Intent(MainActivity.this, SettingsActivity.class);
 | 
			
		||||
                startActivity(tp3Intent);
 | 
			
		||||
                Intent settings = new Intent(MainActivity.this, SettingsActivity.class);
 | 
			
		||||
                startActivity(settings);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        /*mTP4.setOnClickListener(new View.OnClickListener() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onClick(View v) {
 | 
			
		||||
                Intent tp4Intent = new Intent(MainActivity.this, TP4.class);
 | 
			
		||||
                startActivity(tp4Intent);
 | 
			
		||||
                Intent rules = new Intent(MainActivity.this, TP4.class);
 | 
			
		||||
                startActivity(rules);
 | 
			
		||||
            }
 | 
			
		||||
        });*/
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -19,27 +19,26 @@ public class Bot {
 | 
			
		||||
    private Integer pionVide;
 | 
			
		||||
    private Integer[] pionsNotation;
 | 
			
		||||
 | 
			
		||||
    public Bot(Collection<Integer> pionsAutorisés, Integer[] pionsNotation, Integer pionVide){
 | 
			
		||||
    public Bot(Integer[] pionsAutorisés, Integer[] pionsNotation, Integer pionVide){
 | 
			
		||||
        this.collectionWin = new Integer[4];
 | 
			
		||||
        this.pionVide=pionVide;
 | 
			
		||||
        this.pionsNotation=pionsNotation;
 | 
			
		||||
        generationCombiWin(pionsAutorisés);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void generationCombiWin(Collection<Integer> pions){
 | 
			
		||||
    protected void generationCombiWin(Integer[] pions){
 | 
			
		||||
        Random rand = new Random();
 | 
			
		||||
        int nbPions = pions.size();
 | 
			
		||||
        Integer[] tabPions=(Integer[]) pions.toArray();
 | 
			
		||||
        int nbPions = pions.length;
 | 
			
		||||
        for (int i=0;i<4;i++){
 | 
			
		||||
            this.collectionWin[i]=tabPions[rand.nextInt(nbPions)];
 | 
			
		||||
            this.collectionWin[i]=pions[rand.nextInt(nbPions)];
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Collection<Integer> notation(Integer[] soumission){
 | 
			
		||||
        Collection<Integer> note=new LinkedList<Integer>();
 | 
			
		||||
    public Integer[] notation(Integer[] soumission){
 | 
			
		||||
        Integer[] note=new Integer[4];
 | 
			
		||||
        for(int i=0; i<4;i++) {
 | 
			
		||||
            if (this.collectionWin[i] == soumission[i]) {
 | 
			
		||||
                note.add(this.pionsNotation[1]);
 | 
			
		||||
                note[i]=(this.pionsNotation[1]);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        //On crée une copie de la combinaison gagnante pour la modifier et éviter la fausse répétition de pions blancs
 | 
			
		||||
@@ -47,9 +46,9 @@ public class Bot {
 | 
			
		||||
        for(int i=0; i<4;i++) {
 | 
			
		||||
            for (int y=0; y<4;y++) {
 | 
			
		||||
                if (i!=y){
 | 
			
		||||
                    if (this.collectionWin[y] == soumission[i]){
 | 
			
		||||
                        note.add(this.pionsNotation[0]);
 | 
			
		||||
                        this.collectionWin[y]=null;
 | 
			
		||||
                    if (copyCombi[y] == soumission[i]){
 | 
			
		||||
                        note[i]=(copyCombi[0]);
 | 
			
		||||
                        copyCombi[y]=null;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
@@ -13,20 +13,24 @@ import java.util.LinkedList;
 | 
			
		||||
 | 
			
		||||
public class GameView extends View {
 | 
			
		||||
 | 
			
		||||
    private Collection<Integer> pionsAttaquant;
 | 
			
		||||
    private Collection<Integer> pionsDefenseur;
 | 
			
		||||
    private Collection<Integer> pionsPasPlaces;
 | 
			
		||||
    private Integer[] pionsAttaquant;
 | 
			
		||||
    private Integer[] pionsDefenseur;
 | 
			
		||||
    private Integer pionVide;
 | 
			
		||||
    private Saisie saisie;
 | 
			
		||||
    private Grille grille;
 | 
			
		||||
    private boolean bot;
 | 
			
		||||
    private Bot theBot;
 | 
			
		||||
    private Paint circle;
 | 
			
		||||
    private boolean state;
 | 
			
		||||
    public GameView(Context context,Saisie saisie,Grille grille) {
 | 
			
		||||
    public GameView(Context context,Saisie saisie,Grille grille, boolean bot) {
 | 
			
		||||
        super(context);
 | 
			
		||||
        this.saisie=saisie;
 | 
			
		||||
        this.grille=grille;
 | 
			
		||||
        this.bot=bot;
 | 
			
		||||
        initpions();
 | 
			
		||||
        this.theBot=new Bot(this.pionsAttaquant, this.pionsDefenseur, this.pionVide);
 | 
			
		||||
        this.setOnTouchListener(new TouchListener(this));
 | 
			
		||||
        //on initialise les collections de pions
 | 
			
		||||
        initpions();
 | 
			
		||||
        //state indique true si le joueur soumet une combinaison ou false si elle est noté
 | 
			
		||||
        this.state=true;
 | 
			
		||||
        this.circle = new Paint();
 | 
			
		||||
@@ -50,10 +54,9 @@ public class GameView extends View {
 | 
			
		||||
        }
 | 
			
		||||
        // affichage de la zone de saisie
 | 
			
		||||
        //copie de la zone de saisie
 | 
			
		||||
        LinkedList<Integer> saisie = new LinkedList<Integer>();
 | 
			
		||||
        saisie.addAll(this.saisie.getSelection());
 | 
			
		||||
        for (int i=0;i<this.saisie.getSelection().size();i++){
 | 
			
		||||
            this.circle.setColor(saisie.pop());
 | 
			
		||||
        Integer[] saisie = this.saisie.getSelection();
 | 
			
		||||
        for (int i=0;i<this.saisie.getSelection().length;i++){
 | 
			
		||||
            this.circle.setColor(saisie[i]);
 | 
			
		||||
            //TODO: coordonnées propres (encore)
 | 
			
		||||
            canvas.drawCircle((i*this.getWidth()/5+this.getWidth()/5),this.getHeight()-this.getHeight()*2/9, this.getWidth()/14, this.circle);
 | 
			
		||||
        }
 | 
			
		||||
@@ -96,17 +99,28 @@ public class GameView extends View {
 | 
			
		||||
 | 
			
		||||
    //Change l'état de soumission à notation après qu'une combinaision ai été soumise puis inversement
 | 
			
		||||
    public void changeState() {
 | 
			
		||||
        if (this.saisie.getSizeSelection() == 4) {
 | 
			
		||||
            this.state = !this.state;
 | 
			
		||||
            if (this.state) {
 | 
			
		||||
        if(!this.bot) {
 | 
			
		||||
            if (!this.state) {
 | 
			
		||||
                this.saisie.setChoix(this.pionsAttaquant);
 | 
			
		||||
                this.grille.addNotation(this.saisie.getSelection());
 | 
			
		||||
            } else if (!this.state) {
 | 
			
		||||
                this.saisie.initSelection(this.getResources().getColor(R.color.pionVide));
 | 
			
		||||
                this.invalidate();
 | 
			
		||||
                this.state = !this.state;
 | 
			
		||||
            } else if (this.state && this.saisie.getSizeSelection() == 4) {
 | 
			
		||||
                this.saisie.setChoix(this.pionsDefenseur);
 | 
			
		||||
                this.grille.addSoumission(this.saisie.getSelection());
 | 
			
		||||
                this.saisie.initSelection(this.getResources().getColor(R.color.pionVide));
 | 
			
		||||
                this.invalidate();
 | 
			
		||||
                this.state = !this.state;
 | 
			
		||||
            }
 | 
			
		||||
        } else if (this.state && this.saisie.getSizeSelection() == 4) {
 | 
			
		||||
            this.saisie.setChoix(this.pionsDefenseur);
 | 
			
		||||
            this.grille.addSoumission(this.saisie.getSelection());
 | 
			
		||||
            this.saisie.initSelection(this.getResources().getColor(R.color.pionVide));
 | 
			
		||||
            //On fait noter la combinaison au Bot
 | 
			
		||||
            this.grille.addNotation(this.theBot.notation((this.saisie.getSelection())));
 | 
			
		||||
            this.invalidate();
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -126,7 +140,6 @@ public class GameView extends View {
 | 
			
		||||
    }*/
 | 
			
		||||
 | 
			
		||||
    public void clearChoix() {
 | 
			
		||||
        this.saisie.getSelection().clear();
 | 
			
		||||
        this.saisie.initSelection(R.color.pionVide);
 | 
			
		||||
        this.invalidate();
 | 
			
		||||
    }
 | 
			
		||||
@@ -145,30 +158,27 @@ public class GameView extends View {
 | 
			
		||||
    public void initpions(){
 | 
			
		||||
        //on initialise les pions
 | 
			
		||||
        //on créer une ligne de 4 pions gris représentants une ligne de pions vides
 | 
			
		||||
        this.pionsPasPlaces = new LinkedList<Integer>();
 | 
			
		||||
        for (int i=0;i<4;i++){
 | 
			
		||||
            this.pionsPasPlaces.add(this.getResources().getColor(R.color.pionVide));
 | 
			
		||||
        }
 | 
			
		||||
        this.pionVide = this.getResources().getColor(R.color.grey);
 | 
			
		||||
 | 
			
		||||
        //Le défenseur a des pions noirs et blancs
 | 
			
		||||
        this.pionsDefenseur = new LinkedList<Integer>();
 | 
			
		||||
        this.pionsDefenseur.add(this.getResources().getColor(R.color.white));
 | 
			
		||||
        this.pionsDefenseur.add(this.getResources().getColor(R.color.black));
 | 
			
		||||
        this.pionsDefenseur = new Integer[2];
 | 
			
		||||
        this.pionsDefenseur[0]=this.getResources().getColor(R.color.white);
 | 
			
		||||
        this.pionsDefenseur[1]=this.getResources().getColor(R.color.black);
 | 
			
		||||
 | 
			
		||||
        //L'attaquant a des pions de couleurs
 | 
			
		||||
        this.pionsAttaquant = new LinkedList<Integer>();
 | 
			
		||||
        this.pionsAttaquant.add(this.getResources().getColor(R.color.pink));
 | 
			
		||||
        this.pionsAttaquant.add(this.getResources().getColor(R.color.purple));
 | 
			
		||||
        this.pionsAttaquant.add(this.getResources().getColor(R.color.blue));
 | 
			
		||||
        this.pionsAttaquant.add(this.getResources().getColor(R.color.green));
 | 
			
		||||
        this.pionsAttaquant.add(this.getResources().getColor(R.color.yellow));
 | 
			
		||||
        this.pionsAttaquant.add(this.getResources().getColor(R.color.white));
 | 
			
		||||
        this.pionsAttaquant = new Integer[6];
 | 
			
		||||
        this.pionsAttaquant[0]=this.getResources().getColor(R.color.pink);
 | 
			
		||||
        this.pionsAttaquant[1]=this.getResources().getColor(R.color.purple);
 | 
			
		||||
        this.pionsAttaquant[2]=this.getResources().getColor(R.color.blue);
 | 
			
		||||
        this.pionsAttaquant[3]=this.getResources().getColor(R.color.green);
 | 
			
		||||
        this.pionsAttaquant[4]=this.getResources().getColor(R.color.yellow);
 | 
			
		||||
        this.pionsAttaquant[5]=this.getResources().getColor(R.color.white);
 | 
			
		||||
 | 
			
		||||
        // on inisialise la saisie
 | 
			
		||||
        saisie.setChoix(this.pionsAttaquant);
 | 
			
		||||
        saisie.initSelection(this.getResources().getColor(R.color.pionVide));
 | 
			
		||||
 | 
			
		||||
        // on rempli la grille de cases grises
 | 
			
		||||
        grille.initGrille(this.pionsPasPlaces);
 | 
			
		||||
        grille.initGrille(this.pionVide);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -10,6 +10,7 @@ import java.util.LinkedList;
 | 
			
		||||
représente la grille de jeu à savoir la liste des soumissions ainsi que leur notation
 | 
			
		||||
 */
 | 
			
		||||
public class Grille {
 | 
			
		||||
    private Integer pionVide;
 | 
			
		||||
    //sizeSubs indique le nombre de soumissions dans la grille. Il permet de limiter ce nombre à 10
 | 
			
		||||
    private int sizeSubs;
 | 
			
		||||
    // soumission représente la liste des soumissions réalisées ainsi que des cases grises pour compléter la grille
 | 
			
		||||
@@ -23,38 +24,48 @@ public class Grille {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Méthode permettant d'ajouter une soumission
 | 
			
		||||
    public void addSoumission(LinkedList<Integer> newSub){
 | 
			
		||||
    public void addSoumission(Integer[] newSub){
 | 
			
		||||
        //le nombre de soumissions ne doit pas dépasser 10
 | 
			
		||||
        if (this.sizeSubs<10) {
 | 
			
		||||
            for (int i=0; i<4; i++) {
 | 
			
		||||
                //On retire une ligne vide en haut pour remonter l'affichage
 | 
			
		||||
                this.soumissions.remove(0);
 | 
			
		||||
                this.notations.remove(0);
 | 
			
		||||
                //On ajoute ensuite une deriere ligne qui correspond à la nouvelle soumission
 | 
			
		||||
                this.soumissions.addLast(newSub.poll());
 | 
			
		||||
                this.soumissions.addLast(newSub[i]);
 | 
			
		||||
                //Et une ligne vide pour les notations
 | 
			
		||||
                this.notations.addLast(this.pionVide);
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
            this.sizeSubs += 1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Méthode qui permet d'initialiser la grille vide
 | 
			
		||||
    public void initGrille(Collection<Integer> SubToCopy){
 | 
			
		||||
    public void initGrille(Integer pionVide){
 | 
			
		||||
        this.pionVide=pionVide;
 | 
			
		||||
        //On réécupère une ligne de la couleur qui correspond à l'absence de pion et on remplit la grille avec (soumissions et notations
 | 
			
		||||
        for(int i=0;i<10;i++){
 | 
			
		||||
            this.soumissions.addAll(SubToCopy);
 | 
			
		||||
            this.notations.addAll(SubToCopy);
 | 
			
		||||
            for(int y=0;y<4;y++) {
 | 
			
		||||
                this.soumissions.add(pionVide);
 | 
			
		||||
                this.notations.add(pionVide);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        // Au début il n'y a pas de soumission
 | 
			
		||||
        this.sizeSubs=0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Méthode qui permet d'ajouter des notations comme pour les soumissions
 | 
			
		||||
    public void addNotation(LinkedList<Integer> newNot){
 | 
			
		||||
    public void addNotation(Integer[] newNot){
 | 
			
		||||
        for (int i=0; i<4; i++) {
 | 
			
		||||
            //On retire une ligne vide en haut pour remonter l'affichage
 | 
			
		||||
            this.notations.remove(0);
 | 
			
		||||
            //On ajoute ensuite une deriere ligne qui correspond à la nouvelle soumission
 | 
			
		||||
            this.notations.addLast(newNot.poll());
 | 
			
		||||
            //On retire la derniere ligne vide
 | 
			
		||||
            this.notations.removeLast();
 | 
			
		||||
        }
 | 
			
		||||
        for (int i=0; i<4; i++) {
 | 
			
		||||
            //On ajoute ensuite une deriere ligne qui correspond à la nouvelle note
 | 
			
		||||
            this.notations.addLast(newNot[i]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //getters des soumissions et notations
 | 
			
		||||
 
 | 
			
		||||
@@ -28,20 +28,20 @@ public class Saisie {
 | 
			
		||||
    // getters et setters
 | 
			
		||||
 | 
			
		||||
    //récupère la couleur d'un pion vide pour remplir la zone de saisie avec
 | 
			
		||||
    public void initSelection(Integer chosenColors){
 | 
			
		||||
    public void initSelection(Integer pionVide){
 | 
			
		||||
        this.selection.removeAll(this.selection);
 | 
			
		||||
        for (int i=0;i<4;i++){
 | 
			
		||||
            this.selection.add(chosenColors);
 | 
			
		||||
            this.selection.add(pionVide);
 | 
			
		||||
        }
 | 
			
		||||
        //au début la zone de séléction est vide
 | 
			
		||||
        this.sizeSelection=0;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    //addSelection permet d'ajouter un pion à la zone de saisie
 | 
			
		||||
    public void addSelection(Integer chosenColors){
 | 
			
		||||
    public void addSelection(int indexcolor){
 | 
			
		||||
        //On vérifie qu'il n'y a pas déjà 4 pions
 | 
			
		||||
        if (this.sizeSelection<4){
 | 
			
		||||
            this.selection.set(this.sizeSelection,this.choix.get(chosenColors));
 | 
			
		||||
            this.selection.set(this.sizeSelection,this.choix.get(indexcolor));
 | 
			
		||||
            this.sizeSelection+=1;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@@ -63,13 +63,19 @@ public class Saisie {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    //Méthode qui permet depuis GameView de changer la liste des choix de couleur en fonction de l'état de la partie
 | 
			
		||||
    public void setChoix(Collection<Integer> colorsSelected){
 | 
			
		||||
    public void setChoix(Integer[] colorsSelected){
 | 
			
		||||
        this.choix.removeAll(this.choix);
 | 
			
		||||
        this.choix.addAll(colorsSelected);
 | 
			
		||||
        for (int i=0;i<colorsSelected.length;i++){
 | 
			
		||||
            this.choix.add(colorsSelected[i]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public LinkedList<Integer> getSelection(){
 | 
			
		||||
        return this.selection;
 | 
			
		||||
    public Integer[] getSelection(){
 | 
			
		||||
        Integer[] selectiontab=new Integer[4];
 | 
			
		||||
        for (int i=0;i<this.selection.size();i++){
 | 
			
		||||
            selectiontab[i]=this.selection.get(i);
 | 
			
		||||
        }
 | 
			
		||||
        return selectiontab;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user