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