valoutux | code complet ( c'est plus simple ) :
Code :
- /*============== Snake classe Metier ==============*/
- public class Metier
- {
- private char grille[][];
- private Element serpent[];
- private int tailleLig, tailleCol;
- private int tailleQueue;
- private int tempLig[];
- private int tempCol[];
- private int nbPas;
- private char dirTete;
- private int nbPastille;
- public Metier ( int lig, int col, int tailleL, int tailleC ) //constructeur Metier
- {
- tailleLig = tailleL;
- tailleCol = tailleC;
- dirTete='N';
- nbPastille=10;
- nbPas=0;
- grille = new char[tailleLig][tailleCol];
- serpent = new Element[11];
- serpent[0]= new Element(lig,col);
- tailleQueue=0;
- tempLig = new int[11];
- tempCol = new int[11];
- initialiseGrille();
- ajouterMur(0,0);
- ajouterMur(0,1);
- ajouterMur(0,2);
- ajouterMur(0,3);
- ajouterMur(0,7);
- ajouterMur(0,8);
- ajouterMur(0,9);
- ajouterMur(0,10);
- ajouterMur(1,0);
- ajouterMur(2,0);
- ajouterMur(3,0);
- ajouterMur(7,0);
- ajouterMur(8,0);
- ajouterMur(9,0);
- ajouterMur(10,0);
- ajouterPastille (nbPastille);
- System.out.println(toString ());
- }
- public boolean deplacer ( char dir, int nbPastille ) //methode deplacer
- {
- boolean deplacement = false;
- dirTete=dir;
- positionTemp (); //appel de la methode positionTemp pour garder la position actuelle en mémoire avant deplacement.
- if ( (serpent[0].getLig() == 0) && (dir == 'N'))
- {
- serpent[0]=new Element(serpent[0].getLig()+tailleLig-1,serpent[0].getCol()); //verifier si serpent[0] est sur l'extrémité Nord(torique)
- nbPas++;
- deplacement = true;
- }
- else if ( (serpent[0].getLig() == tailleLig-1) && (dir == 'S'))
- {
- serpent[0]=new Element(0,serpent[0].getCol()); //verifier si serpent[0] est sur l'extrémité Sud(torique)
- nbPas++;
- deplacement = true;
- }
- else if ( (serpent[0].getCol() == 0) && (dir == 'O'))
- {
- serpent[0]=new Element(serpent[0].getLig(),serpent[0].getCol()+tailleCol-1); //verifier si serpent[0] est sur l'extrémité Ouest(torique)
- nbPas++;
- deplacement = true;
- }
- else if ( (serpent[0].getCol() == tailleCol-1) && (dir == 'E'))
- {
- serpent[0]=new Element(serpent[0].getLig(),0); //verifier si serpent[0] est sur l'extrémité Est(torique)
- nbPas++;
- deplacement = true;
- }
- else
- {
- if ( (dir == 'N') && (grille[serpent[0].getLig()-1][serpent[0].getCol()] != '▒') ) // gestion de la collision avec les murs '▒' au Nord.
- {
- serpent[0]=new Element(serpent[0].getLig()-1,serpent[0].getCol());
- nbPas++;
- deplacement = true;
- }
- if ( (dir == 'S') && (grille[serpent[0].getLig()+1][serpent[0].getCol()] != '▒') ) // gestion de la collision avec les murs '▒' au Sud.
- {
- serpent[0]=new Element(serpent[0].getLig()+1,serpent[0].getCol());
- nbPas++;
- deplacement = true;
- }
- if ( (dir == 'E') && (grille[serpent[0].getLig()][serpent[0].getCol()+1] != '▒') ) // gestion de la collision avec les murs '▒' à l'Est.
- {
- serpent[0]=new Element(serpent[0].getLig(),serpent[0].getCol()+1);
- nbPas++;
- deplacement = true;
- }
- if ( (dir == 'O') && (grille[serpent[0].getLig()][serpent[0].getCol()-1] != '▒') ) // gestion de la collision avec les murs '▒' à l'Ouest.
- {
- serpent[0]=new Element(serpent[0].getLig(),serpent[0].getCol()-1);
- nbPas++;
- deplacement = true;
- }
- }
- retirerPastille(nbPastille); //verifie si le serpent mange pastille.
- deplacement = mordQueue(); //verifie si le serpent mange sa queue.
- return deplacement;
- }
- public void initialiseGrille () //methode qui initialise une grille vide avec des '.'
- {
- int i=0,j;
- while (i < tailleLig)
- {
- j=0;
- while ( j < tailleCol)
- {
- this.grille[i][j]='.';
- j++;
- }
- i++;
- }
- }
- public String toString () //methode d'affichage de la grille et du serpent[0]
- {
- int i=0,j,t=1;
- String ch="";
- System.out.print ("taille serpent : "+(tailleQueue+1)+"/11\n" );
- while (i < tailleLig)
- {
- j=0;
- while ( j < tailleCol)
- {
- if ( (serpent[0].getLig() == i) && (serpent[0].getCol() == j)) ch=ch+" ☺";
- else if ( (tailleQueue > 0) && (serpent[1].getLig() == i) && (serpent[1].getCol() == j)) ch=ch+" ○";
- else if ( (tailleQueue > 1) && (serpent[2].getLig() == i) && (serpent[2].getCol() == j)) ch=ch+" ○";
- else if ( (tailleQueue > 2) && (serpent[3].getLig() == i) && (serpent[3].getCol() == j)) ch=ch+" ○";
- else if ( (tailleQueue > 3) && (serpent[4].getLig() == i) && (serpent[4].getCol() == j)) ch=ch+" ○";
- else if ( (tailleQueue > 4) && (serpent[5].getLig() == i) && (serpent[5].getCol() == j)) ch=ch+" ○";
- else if ( (tailleQueue > 5) && (serpent[6].getLig() == i) && (serpent[6].getCol() == j)) ch=ch+" ○";
- else if ( (tailleQueue > 6) && (serpent[7].getLig() == i) && (serpent[7].getCol() == j)) ch=ch+" ○";
- else if ( (tailleQueue > 7) && (serpent[8].getLig() == i) && (serpent[8].getCol() == j)) ch=ch+" ○";
- else if ( (tailleQueue > 8) && (serpent[9].getLig() == i) && (serpent[9].getCol() == j)) ch=ch+" ○";
- else if ( (tailleQueue > 9) && (serpent[10].getLig() == i) && (serpent[10].getCol() == j)) ch=ch+" ○";
- else ch=ch+" "+this.grille[i][j];
- /*if ( tailleQueue > 0 )
- {
- t=1;
- while ( t <= tailleQueue )
- {
-
- if ( (serpent[t].getLig() == i) && (serpent[t].getCol() == j)) ch=ch+" s";
- t++;
- }
- }*/
- j++;
- }
- ch=ch+"\n";
- i++;
- }
- return ch;
- }
- public void ajouterMur(int lig,int col) //methode qui gère l'ajout des murs '▒' (par symétrie si le mur est sur un bord de la grille)
- {
- if ((lig == 0 && col == 0) || (lig == 0 && col == tailleCol-1) || (lig == tailleLig-1 && col == tailleCol-1) || (lig == tailleLig-1 && col == 0)) //gestion des murs dans les angles de la grille
- {
- this.grille[tailleLig-1][tailleCol-1]='▒';
- this.grille[tailleLig-1][0]='▒';
- this.grille[0][0]='▒';
- this.grille[0][tailleCol-1]='▒';
- }
- else if (lig == 0) {this.grille[tailleLig-1][col]='▒'; this.grille[lig][col]='▒';} //gestion des murs Nord
- else if (col == 0) {this.grille[lig][tailleCol-1]='▒'; this.grille[lig][col]='▒';} //gestion des murs Ouest
- else if (lig == tailleLig-1) {this.grille[0][col]='▒'; this.grille[lig][col]='▒';} //gestion des murs Sud
- else if (col == tailleCol-1) {this.grille[lig][0]='▒'; this.grille[lig][col]='▒';} //gestion des murs Est
- else this.grille[lig][col]='▒'; //gestion des autres emplacements de la grille
- }
- public void ajouterPastille (int nb) //methode qui ajoute des pastilles sur la grille
- {
- nbPastille=nb;
- while ( nb > 0 )
- {
- int l=(int) (Math.random () * tailleLig );
- int c=(int) (Math.random () * tailleCol );
- if ( this.grille[l][c] == '.' )
- {
- this.grille[l][c]= 'O';
- nb--;
- }
- }
- }
- public void retirerPastille (int nbPastille) //methode qui retire les pastille si le serpent[0] les mange.
- {
- if ( grille[serpent[0].getLig()][serpent[0].getCol()] == 'O' )
- {
- this.grille[serpent[0].getLig()][serpent[0].getCol()]='.';
- nbPastille--;
- tailleQueue++;
- }
- deplacerAnneau(); //appel de la methode deplacerAnneau().
- }
- public boolean mordQueue() //methode qui verifie si le serpent se mord la queue.
- {
- int i=1;
- boolean mord = false;
- while ( i <= tailleQueue )
- {
- if ( (serpent[0].getLig() == serpent[i].getLig()) && (serpent[0].getCol() == serpent[i].getCol()))
- {
- mord = false;
- }
- i++;
- }
- return mord;
- }
- public void deplacerAnneau() //methode qui gère le deplacement des anneaux de la queue.
- {
- int i;
- if ( tailleQueue > 0 )
- {
- i=1;
- while ( i <= tailleQueue )
- {
- if ( (serpent[0].getLig() != tempLig[0]) || (serpent[0].getCol() != tempCol[0]) ) serpent[i]= new Element(tempLig[i-1],tempCol[i-1]);
- i++;
- }
- }
- }
- public void positionTemp () //methode qui garde en memoire la position de la tête et de ses anneaux.
- {
- int i=0;
- tempLig[0]=serpent[0].getLig();
- tempCol[0]=serpent[0].getCol();
- if ( tailleQueue > 0 )
- {
- while ( i <= tailleQueue )
- {
- tempLig[i]=serpent[i].getLig();
- tempCol[i]=serpent[i].getCol();
- i++;
- }
- }
- }
- public int getNbLigne()
- {
- return tailleLig;
- }
- public int getNbColonne()
- {
- return tailleCol;
- }
- public int getNbPas()
- {
- return nbPas;
- }
- public String getElt(int ligne,int colonne)
- {
- if (grille[ligne][colonne] == '▒') return "./image/M.jpg";
- else if (grille[ligne][colonne] == '.') return "./image/P.jpg";
- else if ((serpent[0].getLig()==ligne) && (serpent[0].getCol()==colonne))
- {
- if(dirTete == 'N') return "./image/TN.jpg";
- else if (dirTete == 'E') return "./image/TE.jpg";
- else if (dirTete== 'S') return "./image/TS.jpg";
- else return "./image/TO.jpg";
- }
- else
- {
- int cpt = tailleQueue;
- while ( cpt > 0 )
- {
- if((ligne==serpent[cpt].getLig()) && (colonne==serpent[cpt].getCol())) return "./image/A.jpg";
- cpt--;
- }
- return "./image/vide.jpg";
- }
- }
- public int getNbPastille()
- {
- return nbPastille;
- }
- }
|
Code :
- /*============== Snake classe Controleur ==============*/
- public class Controleur
- {
- private Metier metier;
- private FrameGrille frm;
- private String message;
- private boolean bFinPartie;
- private int nbPastille;
- public Controleur()
- {
- Metier metier = new Metier(5,5,11,11); //initialisation de metier.
- frm = new FrameGrille ( this );
- frm.setSize ( 750, 500 );
- frm.setLocation ( 300, 30 );
- frm.setTitle ( "Mega-Snake 4.0" );
- frm.setVisible ( true );
- message = "";
- bFinPartie = false;
- }
- public void jouer (char dir)
- {
- System.out.println("debut jouer()" );
- boolean retour;
- if ( !bFinPartie )
- {
- retour = metier.deplacer(dir,nbPastille);
- nbPastille = metier.getNbPastille();
- frm.majIHM();
- if ( nbPastille == 0 )
- {
- message = "!!! Vous avez gagné !!!";
- bFinPartie = true;
- }
- else if ( retour == false )
- {
- message = "!!! PERDU !!! (vous êtes nul)";
- bFinPartie = true;
- }
- }
- }
- public String getImage (int ligne, int colonne)
- {
- System.out.println("debut getImage" );
- //return metier.getElt(ligne,colonne);
- return ("./image/vide.jpg" );
- }
- public int getNbLigne () { return (metier.getNbLigne()); }
- public int getNbColonne () { return (metier.getNbColonne()); }
- public String getMessage () { return (message); }
- public int getNbPas () { return (metier.getNbPas()); }
- public static void main (String[] arg)
- {
- Controleur ctrl = new Controleur();
- }
- }
|
|