Partie à un joueur
Règles du jeu
Une partie à un joueur est une course au score, c?est-à-dire au plus grand nombre de lignes constituées. De façon générale, un Tetris est une forme de casse-brique se déroulant dans une zone de jeu rectangulaire. La taille de cette zone est déterminée en nombre de briques, objet élémentaire de forme carrée. La figure ci-contre représente l?aire de jeu, généralement une matrice rectangulaire de 10 briques de largeur par 22 briques de hauteur.
La zone est initialement vide. Le jeu consiste à empiler des pièces composées de 4 briques dont les différentes formes géométriques sont les suivantes :
Les pièces arrivent une par une par le haut de la zone et chutent progressivement vers le bas de la zone. La forme de la pièce est choisie aléatoirement parmi les sept possibles. Les possibilités d?interaction pour déplacer la pièce en cours sont décrites dans la section Gameplay (notez que le point noir figurant sur chaque pièce montre le centre de la rotation). La pièce cesse de chuter si l?une de ses briques constituantes rencontre une brique déjà présente dans la zone ou le bas de la zone ; une nouvelle pièce apparaît en haut de la zone. La vitesse de descente des pièces correspond à la difficulté ; on considérera 10 niveaux de difficulté tels que pour une difficulté i, les pièces tombent à la vitesse de i briques par seconde. Lorsqu?une ligne de briques (c?est-à-dire lorsqu?une rangée est couverte de briques sur toute la largeur de la zone), le score est incrémenté de i points (i étant la difficulté courante) et la ligne disparaît ; ces disparitions occasionnent alors la chute de toutes les briques situées au-dessus d?un cran vers le bas.
Si quatre lignes superposées sont supprimées d?un coup, il s?agit alors d?un Tetris, et le score s?incrémente de 10*i points supplémentaires. Une fois la barre des 100 lignes passée, la difficulté augmente de 1. Pour terminer, le joueur perd s?il n?y a plus de place dans la zone pour faire apparaître la pièce suivante.
Interface graphique
L?interface du joueur est composée de quatre éléments :
1. la zone de jeu rectangulaire
2. la pièce suivante
3. le niveau de difficulté courant
4. le score actuel
On pourra par exemple respecter la convention graphique ci-contre.
Gameplay
Le joueur a la possibilité de faire déplacer la pièce courante d?un cran vers la droite (bouton RIGHT), d?un cran vers la gauche (bouton LEFT), d?effectuer une rotation vers la droite (bouton ROTATE) ou d?accélérer la descente (bouton DOWN). Concrètement, à chaque pression du bouton RIGHT (resp. LEFT), la pièce se déplace d?une brique sur la droite (resp. sur la gauche). Lorsque le bouton DOWN est enfoncé, la vitesse de chute passe momentanément à 40 briques par seconde ; lorsque le bouton est relâché, la vitesse de chute revient à la normale. Les touches du clavier associées aux différents boutons LEFT, RIGHT, ROTATE et DOWN sont paramétrables par le menu d?option (cf. le paragraphe Gestion des options).
En appuyant sur la touche Échap du clavier, le jeu est mis en pause et 3 fonctionnalités sont proposées :
1. Reprendre le jeu
2. Gérer les options du jeu (cf. le paragraphe Gestion des options)
3. Revenir à l?écran titre (c?est-à-dire quitter la partie courante)
Partie à deux joueurs
Règles du jeu
A deux joueurs, l?objectif n?est plus une course au score mais de tenir le plus longtemps possible face à l?adversaire. La séquence de pièces est évidemment la même pour les deux joueurs pour préserver une certaine équité. Cependant, pour corser un peu l?intérêt du jeu, un système de couleurs sera utilisé pour les briques. Ainsi si une ligne construite par l?un des joueurs contient 5 briques consécutives de même couleur, cette ligne réapparaîtra en bas de la zone de jeu de l?autre joueur causant la montée de l?ensemble des constructions de ce joueur. Cette pénalisation se fera au moment du changement de pièce courante. Le jeu de couleurs des briques est composé de 5 couleurs paramétrables (cf. le paragraphe Gestion des options). Voici un exemple de séquence de jeu possible :
Source / Exemple :
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.JPanel;
/**
*
* @author zero
*/
public class Barre extends Figure {
private Case []cases_;
public Barre() {
cases_=new Case[4];
cases_[0]=new Case(-1,-1);
cases_[1]=new Case(-1,-1);
cases_[2]=new Case(-1,-1);
cases_[3]=new Case(-1,-1);
}
public JPanel afficheFigure(){
PanneauFigure pan= new PanneauFigure(this);
return pan;
}
public Case getCases(int i){
return cases_[i];
}
public void descendre(Grille g) throws Exception{
if(this.getEtat()==0){
int ni=4; int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY()+1;
}
if(nj==22) throw new Exception();
if(g.lireGrille(ni, nj)!=null) throw new Exception();
if(g.lireGrille(ni, nj)==null){
if(nj==0){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
}
if(nj==1){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
}
if(nj==2){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni, nj-2);
cases_[1].setX(ni);
cases_[1].setY(nj-2);
}
if(nj==3){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni, nj-2);
cases_[1].setX(ni);
cases_[1].setY(nj-2);
g.setGrille(cases_[0], ni, nj-3);
cases_[0].setX(ni);
cases_[0].setY(nj-3);
}
if(nj>=4){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni, nj-2);
cases_[1].setX(ni);
cases_[1].setY(nj-2);
g.setGrille(cases_[0], ni, nj-3);
cases_[0].setX(ni);
cases_[0].setY(nj-3);
g.setGrille(null, ni, nj-4);
}
}
}
if(this.getEtat()==1){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY()+1;
}
if(nj==22) throw new Exception();
if((g.lireGrille(ni, nj)!=null)
||(g.lireGrille(ni-1, nj)!=null)
||(g.lireGrille(ni+1, nj)!=null)
||(g.lireGrille(ni+2, nj)!=null)) throw new Exception();
if((g.lireGrille(ni, nj)==null)
&&(g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj)==null)){
if(nj==0){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni+2, nj);
cases_[0].setX(ni+2);
cases_[0].setY(nj);
}
if(nj>=1){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni+2, nj);
cases_[0].setX(ni+2);
cases_[0].setY(nj);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni+2, nj-1);
}
}
}
if(this.getEtat()==2){
int ni=4; int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY()+1;
}
if(nj==22) throw new Exception();
if(g.lireGrille(ni, nj)!=null) throw new Exception();
if(g.lireGrille(ni, nj)==null){
if(nj==0){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
}
if(nj==1){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
}
if(nj==2){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni, nj-2);
cases_[2].setX(ni);
cases_[2].setY(nj-2);
}
if(nj==3){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni, nj-2);
cases_[2].setX(ni);
cases_[2].setY(nj-2);
g.setGrille(cases_[3], ni, nj-3);
cases_[3].setX(ni);
cases_[3].setY(nj-3);
}
if(nj>=4){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni, nj-2);
cases_[2].setX(ni);
cases_[2].setY(nj-2);
g.setGrille(cases_[3], ni, nj-3);
cases_[3].setX(ni);
cases_[3].setY(nj-3);
g.setGrille(null, ni, nj-4);
}
}
}
if(this.getEtat()==3){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY()+1;
}
if(nj==22) throw new Exception();
if((g.lireGrille(ni, nj)!=null)
||(g.lireGrille(ni+1, nj)!=null)
||(g.lireGrille(ni-1, nj)!=null)
||(g.lireGrille(ni-2, nj)!=null)) throw new Exception();
if((g.lireGrille(ni, nj)==null)
&&(g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj)==null)){
if(nj==0){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
}
if(nj>=1){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni-2, nj-1);
}
}
}
}
public void deplacerGauche(Grille g){
if(this.getEtat()==0){
int ni=4; int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni>0){
if(nj==0){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
if(nj==2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-1, nj-2)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[1], ni-1, nj-2);
cases_[1].setX(ni-1);
cases_[1].setY(nj-2);
g.setGrille(null, ni, nj-2);
}
}
if(nj>=3){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-1, nj-2)==null)
&&(g.lireGrille(ni-1, nj-3)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[1], ni-1, nj-2);
cases_[1].setX(ni-1);
cases_[1].setY(nj-2);
g.setGrille(null, ni, nj-2);
g.setGrille(cases_[0], ni-1, nj-3);
cases_[0].setX(ni-1);
cases_[0].setY(nj-3);
g.setGrille(null, ni, nj-3);
}
}
}
}
if(this.getEtat()==1){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni>1){
if(g.lireGrille(ni-2, nj)==null){
g.setGrille(cases_[3], ni-2, nj);
cases_[3].setX(ni-2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni+2, nj);
}
}
}
if(this.getEtat()==2){
int ni=4; int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni>0){
if(nj==0){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
if(nj==2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-1, nj-2)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[2], ni-1, nj-2);
cases_[2].setX(ni-1);
cases_[2].setY(nj-2);
g.setGrille(null, ni, nj-2);
}
}
if(nj>=3){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-1, nj-2)==null)
&&(g.lireGrille(ni-1, nj-3)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[2], ni-1, nj-2);
cases_[2].setX(ni-1);
cases_[2].setY(nj-2);
g.setGrille(null, ni, nj-2);
g.setGrille(cases_[3], ni-1, nj-3);
cases_[3].setX(ni-1);
cases_[3].setY(nj-3);
g.setGrille(null, ni, nj-3);
}
}
}
}
if(this.getEtat()==3){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni>2){
if(g.lireGrille(ni-3, nj)==null){
g.setGrille(cases_[0], ni-3, nj);
cases_[0].setX(ni-3);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-2, nj);
cases_[1].setX(ni-2);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
}
}
public void deplacerDroite(Grille g){
if(this.getEtat()==0){
int ni=4; int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<9){
if(nj==0){
if(g.lireGrille(ni+1, nj)==null){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
if(nj==2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+1, nj-2)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[1], ni+1, nj-2);
cases_[1].setX(ni+1);
cases_[1].setY(nj-2);
g.setGrille(null, ni, nj-2);
}
}
if(nj>=3){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+1, nj-2)==null)
&&(g.lireGrille(ni+1, nj-3)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[1], ni+1, nj-2);
cases_[1].setX(ni+1);
cases_[1].setY(nj-2);
g.setGrille(null, ni, nj-2);
g.setGrille(cases_[0], ni+1, nj-3);
cases_[0].setX(ni+1);
cases_[0].setY(nj-3);
g.setGrille(null, ni, nj-3);
}
}
}
}
if(this.getEtat()==1){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni<7){
if(g.lireGrille(ni+3, nj)==null){
g.setGrille(cases_[0], ni+3, nj);
cases_[0].setX(ni+3);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+2, nj);
cases_[1].setX(ni+2);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni-1, nj);
}
}
}
if(this.getEtat()==2){
int ni=4; int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni<9){
if(nj==0){
if(g.lireGrille(ni+1, nj)==null){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
if(nj==2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+1, nj-2)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[2], ni+1, nj-2);
cases_[2].setX(ni+1);
cases_[2].setY(nj-2);
g.setGrille(null, ni, nj-2);
}
}
if(nj>=3){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+1, nj-2)==null)
&&(g.lireGrille(ni+1, nj-3)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[2], ni+1, nj-2);
cases_[2].setX(ni+1);
cases_[2].setY(nj-2);
g.setGrille(null, ni, nj-2);
g.setGrille(cases_[3], ni+1, nj-3);
cases_[3].setX(ni+1);
cases_[3].setY(nj-3);
g.setGrille(null, ni, nj-3);
}
}
}
}
if(this.getEtat()==3){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni<8){
if(g.lireGrille(ni+2, nj)==null){
g.setGrille(cases_[3], ni+2, nj);
cases_[3].setX(ni+2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni-2, nj);
}
}
}
}
public void rotate(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if((ni>0) && (ni<8)){
if(nj==1){
if((g.lireGrille(ni-1, nj-1)==null)
&& (g.lireGrille(ni+1, nj-1)==null)
&& (g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
this.setEtat(1);
return;
}
}
if(nj==2){
if((g.lireGrille(ni-1, nj-1)==null)
&& (g.lireGrille(ni+1, nj-1)==null)
&& (g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-2);
this.setEtat(1);
return;
}
}
if(nj>=3){
if((g.lireGrille(ni-1, nj-1)==null)
&& (g.lireGrille(ni+1, nj-1)==null)
&& (g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni, nj-3);
this.setEtat(1);
return;
}
}
}
}
if(this.getEtat()==1){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(nj==0){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni, nj+2)==null)){
cases_[3].setX(-1);
cases_[3].setY(-1);
g.setGrille(null, ni-1, nj);
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(null, ni+1, nj);
g.setGrille(cases_[0], ni, nj+2);
cases_[0].setX(ni);
cases_[0].setY(nj+2);
g.setGrille(null, ni+2, nj);
this.setEtat(2);
return;
}
}
if(nj>=1){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni, nj+2)==null)){
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni-1, nj);
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(null, ni+1, nj);
g.setGrille(cases_[0], ni, nj+2);
cases_[0].setX(ni);
cases_[0].setY(nj+2);
g.setGrille(null, ni+2, nj);
this.setEtat(2);
return;
}
}
}
if(this.getEtat()==2){
int ni=4; int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if((ni>1)&&(ni<9)){
if(nj==2){
if((g.lireGrille(ni+1, nj-2)==null)
&&(g.lireGrille(ni-1, nj-2)==null)
&&(g.lireGrille(ni-2, nj-2)==null)){
g.setGrille(cases_[3], ni+1, nj-2);
cases_[3].setX(ni+1);
cases_[3].setY(nj-2);
g.setGrille(cases_[1], ni-1, nj-2);
cases_[1].setX(ni-1);
cases_[1].setY(nj-2);
g.setGrille(cases_[0], ni-2, nj-2);
cases_[0].setX(ni-2);
cases_[0].setY(nj-2);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
this.setEtat(3);
return;
}
}
if(nj>=3){
if((g.lireGrille(ni+1, nj-2)==null)
&&(g.lireGrille(ni-1, nj-2)==null)
&&(g.lireGrille(ni-2, nj-2)==null)){
g.setGrille(cases_[3], ni+1, nj-2);
cases_[3].setX(ni+1);
cases_[3].setY(nj-2);
g.setGrille(null, ni, nj-3);
g.setGrille(cases_[1], ni-1, nj-2);
cases_[1].setX(ni-1);
cases_[1].setY(nj-2);
g.setGrille(cases_[0], ni-2, nj-2);
cases_[0].setX(ni-2);
cases_[0].setY(nj-2);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
this.setEtat(3);
return;
}
}
}
}
if(this.getEtat()==3){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(nj==0){
if(g.lireGrille(ni, nj+1)==null){
cases_[0].setX(-1);
cases_[0].setY(-1);
g.setGrille(null, ni-2, nj);
cases_[1].setX(-1);
cases_[1].setY(-1);
g.setGrille(null, ni-1, nj);
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(null, ni+1, nj);
this.setEtat(0);
return;
}
}
if(nj==1){
if((g.lireGrille(ni, nj+1)==null)
&& (g.lireGrille(ni, nj-1)==null)){
cases_[0].setX(-1);
cases_[0].setY(-1);
g.setGrille(null, ni-2, nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(null, ni-1, nj);
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(null, ni+1, nj);
this.setEtat(0);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni, nj+1)==null)
&& (g.lireGrille(ni, nj-1)==null)
&& (g.lireGrille(ni, nj-2)==null)){
g.setGrille(cases_[0], ni, nj-2);
cases_[0].setX(ni);
cases_[0].setY(nj-2);
g.setGrille(null, ni-2, nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(null, ni-1, nj);
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(null, ni+1, nj);
this.setEtat(0);
return;
}
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import java.awt.Color;
/**
*
* @author zero
*/
public class Case {
private int x_;
private int y_;
private Color couleur_;
public Case(int x, int y){
x_=x;
y_=y;
//Min + (int)(Math.random() * ((Max - Min) + 1))
int n= (int)(Math.random()*5);
if(Controle.couleure_dalt==0){
if(n==0) couleur_=Color.green;
//if(n==1) couleur_=Color.blue;
if(n==1) couleur_=Color.green;
//if(n==2) couleur_=Color.red;
if(n==2) couleur_=Color.green;
//if(n==3) couleur_=Color.yellow;
if(n==3) couleur_=Color.green;
//if(n==4) couleur_=new Color(200, 30, 240);//violet
if(n==4) couleur_=Color.green;
}
else if(Controle.couleure_dalt==1){
if(n==0) couleur_=Color.green;
if(n==1) couleur_=new Color(95,158,160);// Cadet Blue
if(n==2) couleur_=new Color(105,105,105);//Dim Gray
if(n==3) couleur_=Color.yellow;
if(n==4) couleur_=new Color(205,200,177);//Cornsilk 3
}
}
public int getX(){
return x_;
}
public int getY(){
return y_;
}
public Color getCouleur(){
return couleur_;
}
public void setCouleur(Color r){
couleur_=r;
}
public void setX(int x){
x_=x;
}
public void setY(int y){
y_=y;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class Controle {
static int couleure_dalt=0;
public static void simul(Grille g){
int nb_supp=g.getNbr_ligneSup();
g.mise_ajourGrille();
nb_supp=g.getNbr_ligneSup()-nb_supp;
if((nb_supp<4)&&(nb_supp>=0)){
//score= score + nbr de lignes supp * difficulté
g.setScore(g.getScore()+nb_supp*g.getDifficulté());
}
if(nb_supp>=4){
//score= score + nbr de lignes supp * 10 * difficulté
g.setScore(g.getScore()+10*nb_supp*g.getDifficulté());
}
if(g.getDifficulté()<=10){
//difficulté= (|(difficulté+100)/100|)
g.setDifficulté((int)((g.getNbr_ligneSup()+100)/100));
}
}
public static void simul_2(Grille g1,Grille g2){
g1.mise_ajour2(g2);
}
public static Figure newFigure(){
Figure f;//=new L();
int n=(int)(Math.random()*7);
switch (n) {
case 0: f= new S();
break;
case 1: f = new L_retourné();
break;
case 2: f = new T();
break;
case 3: f = new Z();
break;
case 4: f = new Cube();
break;
case 5: f = new Barre();
break;
default: f=new L();
break;
}
return f;
}
public static int delay(Grille g){
int delay;
int diff =g.getDifficulté();
switch (diff) {
case 1: delay=1000 ;
break;
case 2: delay =900 ;
break;
case 3: delay = 800;
break;
case 4: delay = 700;
break;
case 5: delay = 600;
break;
case 6: delay = 500;
break;
case 7: delay = 400;
break;
case 8: delay = 300;
break;
case 9: delay = 200;
break;
default: delay= 100;
break;
}
return delay;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class Cube extends Figure {
private Case [] cases_;
public Cube() {
cases_=new Case[4];
cases_[0]=new Case(-1,-1);
cases_[1]=new Case(-1,-1);
cases_[2]=new Case(-1,-1);
cases_[3]=new Case(-1,-1);
}
public Case getCases(int i){
return cases_[i];
}
public JPanel afficheFigure(){
PanneauFigure pan= new PanneauFigure(this);
return pan;
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
public void descendre(Grille g) throws Exception{
if(this.getEtat()==0){
int ni=4; int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY()+1;
}
//cas du bas de la grille
if (nj==22) throw new Exception();
//cas verif case en dessous occupé
if((g.lireGrille(ni, nj)!=null) || (g.lireGrille(ni+1, nj)!=null))
throw new Exception();
if((g.lireGrille(ni, nj)==null) && (g.lireGrille(ni+1, nj)==null)){
if(nj==0){
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
}
if(nj==1){
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
}
if(nj>=2){
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni+1, nj-2);
}
}
}
if(this.getEtat()==1){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY()+1;
}
//cas du bas de la grille
if (nj==22) throw new Exception();
//cas verif case en dessous occupé
if((g.lireGrille(ni, nj)!=null) || (g.lireGrille(ni+1, nj)!=null))
throw new Exception();
if((g.lireGrille(ni, nj)==null) && (g.lireGrille(ni+1, nj)==null)){
if(nj==0){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
}
if(nj==1){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni+1, nj-1);
cases_[0].setX(ni+1);
cases_[0].setY(nj-1);
}
if(nj>=2){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni+1, nj-1);
cases_[0].setX(ni+1);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni+1, nj-2);
}
}
}
if(this.getEtat()==2){
int ni=4; int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY()+1;
}
//cas du bas de la grille
if (nj==22) throw new Exception();
//cas verif case en dessous occupé
if((g.lireGrille(ni, nj)!=null) || (g.lireGrille(ni+1, nj)!=null))
throw new Exception();
if((g.lireGrille(ni, nj)==null) && (g.lireGrille(ni+1, nj)==null)){
if(nj==0){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
}
if(nj==1){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
}
if(nj>=2){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni+1, nj-2);
}
}
}
if(this.getEtat()==3){
int ni=4; int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY()+1;
}
//cas du bas de la grille
if (nj==22) throw new Exception();
//cas verif case en dessous occupé
if((g.lireGrille(ni, nj)!=null) || (g.lireGrille(ni+1, nj)!=null))
throw new Exception();
if((g.lireGrille(ni, nj)==null)
&& (g.lireGrille(ni+1, nj)==null)){
if(nj==0){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
}
if(nj==1){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
}
if(nj>=2){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni+1, nj-2);
}
}
}
}
public void deplacerGauche(Grille g){
if(this.getEtat()==0){
int ni=4; int nj=0;
if(this.cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni>0){
if(nj==0){
if(this.cases_[1].getX()!=-1){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni-1, nj)==null)
&& (g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(cases_[0], ni-1, nj-1);
cases_[0].setX(ni-1);
cases_[0].setY(nj-1);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
}
}
}
}
if(this.getEtat()==1){
int ni=4; int nj=0;
if(this.cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni>0){
if(nj==0){
if(this.cases_[2].getX()!=-1){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni-1, nj)==null)
&& (g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
}
}
}
}
if(this.getEtat()==2){
int ni=4; int nj=0;
if(this.cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni>0){
if(nj==0){
if(this.cases_[3].getX()!=-1){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni-1, nj)==null)
&& (g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
}
}
}
}
if(this.getEtat()==3){
int ni=4; int nj=0;
if(this.cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni>0){
if(nj==0){
if(this.cases_[0].getX()!=-1){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni-1, nj)==null)
&& (g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
}
}
}
}
}
public void deplacerDroite(Grille g){
if(this.getEtat()==0){
int ni=4; int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni<8){
if(nj==0){
if(cases_[1].getX()!=-1){
if(g.lireGrille(ni+2, nj)==null){
g.setGrille(this.cases_[2], ni+2, nj);
cases_[2].setX(ni+2);
cases_[2].setY(nj);
g.setGrille(this.cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni+2, nj)==null)
&& (g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(this.cases_[2], ni+2, nj);
cases_[2].setX(ni+2);
cases_[2].setY(nj);
g.setGrille(this.cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[3], ni+2, nj-1);
cases_[3].setX(ni+2);
cases_[3].setY(nj-1);
g.setGrille(cases_[0], ni+1, nj-1);
cases_[0].setX(ni+1);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
}
}
if(this.getEtat()==1){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni<8){
if(nj==0){
if(cases_[2].getX()!=-1){
if(g.lireGrille(ni+2, nj)==null){
g.setGrille(this.cases_[3], ni+2, nj);
cases_[3].setX(ni+2);
cases_[3].setY(nj);
g.setGrille(this.cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(null, ni, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni+2, nj)==null)
&& (g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(this.cases_[3], ni+2, nj);
cases_[3].setX(ni+2);
cases_[3].setY(nj);
g.setGrille(this.cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
}
}
if(this.getEtat()==2){
int ni=4; int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<8){
if(nj==0){
if(cases_[3].getX()!=-1){
if(g.lireGrille(ni+2, nj)==null){
g.setGrille(this.cases_[0], ni+2, nj);
cases_[0].setX(ni+2);
cases_[0].setY(nj);
g.setGrille(this.cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni+2, nj)==null)
&& (g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(this.cases_[0], ni+2, nj);
cases_[0].setX(ni+2);
cases_[0].setY(nj);
g.setGrille(this.cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+2, nj-1);
cases_[1].setX(ni+2);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
}
}
if(this.getEtat()==3){
int ni=4; int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni<8){
if(nj==0){
if(cases_[0].getX()!=-1){
if(g.lireGrille(ni+2, nj)==null){
g.setGrille(this.cases_[1], ni+2, nj);
cases_[1].setX(ni+2);
cases_[1].setY(nj);
g.setGrille(this.cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni+2, nj)==null)
&& (g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(this.cases_[1], ni+2, nj);
cases_[1].setX(ni+2);
cases_[1].setY(nj);
g.setGrille(this.cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[2], ni+2, nj-1);
cases_[2].setX(ni+2);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
}
}
}
public void rotate(Grille g){
if(this.getEtat()==0){
int ni=4; int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if((nj==0) && (cases_[1].getX()!=-1)){
cases_[1].setX(-1);
cases_[1].setY(-1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
this.setEtat(1);
return;
}
if((nj>=1) && (cases_[1].getX()!=-1)){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni+1, nj-1);
cases_[0].setX(ni+1);
cases_[0].setY(nj-1);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
this.setEtat(1);
return;
}
}
if(this.getEtat()==1){
int ni=4; int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if((nj==0) && (cases_[2].getX()!=-1)){
cases_[2].setX(-1);
cases_[2].setY(-1);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
this.setEtat(2);
return;
}
if((nj>=1) && (cases_[2].getX()!=-1)){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
this.setEtat(2);
return;
}
}
if(this.getEtat()==2){
int ni=4; int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if((nj==0) && (cases_[3].getX()!=-1)){
cases_[3].setX(-1);
cases_[3].setY(-1);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
this.setEtat(3);
return;
}
if((nj>=1) && (cases_[3].getX()!=-1)){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
this.setEtat(3);
return;
}
}
if(this.getEtat()==3){
int ni=4; int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if((nj==0) && (cases_[0].getX()!=-1)){
cases_[0].setX(-1);
cases_[0].setY(-1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
this.setEtat(0);
return;
}
if((nj>=1) && (cases_[0].getX()!=-1)){
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
this.setEtat(0);
return;
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* Fenetre.java
*
* Created on 21 déc. 2012, 11:55:17
*/
package tetris;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class Fenetre extends javax.swing.JFrame implements KeyListener {
private Figure fig_;
private Figure fig_next_;
private int delai_=1000;
private Grille grille_;
private JPanel affichage_;
private JPanel affichage_fig;
/** Creates new form Fenetre */
public Fenetre(Grille g) {
initComponents();
//new AddKeyListener(this);
jLabel3.setVisible(false);
jTextPane2.setEditable(false);
grille_=g;
affichage_=grille_.afficheGrille();
affichage_.setBounds(0,0,251,551);
jPanel2.setBackground(Color.black);
jPanel2.add(affichage_);
affichage_.setBackground(Color.black);
jLabel1.setText(""+grille_.getScore());
jLabel2.setText(""+grille_.getDifficulté());
//next figure
fig_next_=Controle.newFigure();//new L();
fig_=fig_next_;
//
addKeyListener(this);
addWindowListener(new WindowAdapter() {
public void windowOpened(WindowEvent e) {
requestFocus();
}
});
jCheckBox1.addActionListener(new JCheckBoxListener());
}
private Timer timer = new Timer(delai_, new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Inserer ici le code a repeter
try{
fig_.descendre(grille_);
//System.out.println("try :"+test++);
}
catch (Exception ex) {
if((grille_.lireGrille(4, 0)!=null)
||(grille_.lireGrille(5, 0)!=null)){
jLabel3.setVisible(true);
//affichage_.setVisible(false);
affichage_.add(jLabel3);
affichage_.repaint();
//affichage_.setEnabled(true);
timer.stop();
//System.out.println("je suis là");
return;
}
//timer.stop();
Controle.simul(grille_);
delai_=Controle.delay(grille_);
timer.setDelay(delai_);
jLabel1.setText(""+grille_.getScore());
jLabel2.setText(""+grille_.getDifficulté());
affichage_.repaint();
fig_=fig_next_;
fig_next_=Controle.newFigure();
//timer.start();
affichage_fig=fig_next_.afficheFigure();
jPanel3.add(affichage_fig);
affichage_fig.repaint();
affichage_fig.setBounds(0,0,101,101);
affichage_fig.setBackground(Color.black);
//System.out.println("fig"+fig_+" "+test);
// System.out.println("fig next "+fig_next_);
}
finally{
affichage_.repaint();
//System.out.println("finaly: "+fig_+" "+test);
}
}
}
);
public void simulatoin(){
fig_next_=Controle.newFigure();//new Z();/new L();
affichage_fig=fig_next_.afficheFigure();
jPanel3.add(affichage_fig);
affichage_fig.repaint();
affichage_fig.setBounds(0,0,101,101);
affichage_fig.setBackground(Color.black);
timer.start();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel5 = new javax.swing.JPanel();
jCheckBox1 = new javax.swing.JCheckBox();
jScrollPane2 = new javax.swing.JScrollPane();
jTextPane2 = new javax.swing.JTextPane();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jLabel4 = new javax.swing.JLabel();
jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Option"));
jCheckBox1.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jCheckBox1.setText("couleurs Daltonien");
jTextPane2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Touches", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, java.awt.Color.black));
jTextPane2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
jTextPane2.setText("Boutons de Gameplay du joueur 1 :n n? LEFT : touche directionnelle gauche n? RIGHT : touche directionnelle droite n? ROTATE : touche directionnelle hautn? DOWN : touche directionnelle bas");
jTextPane2.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
jScrollPane2.setViewportView(jTextPane2);
javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addGap(24, 24, 24)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 297, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel5Layout.createSequentialGroup()
.addGap(84, 84, 84)
.addComponent(jCheckBox1)))
.addContainerGap(23, Short.MAX_VALUE))
);
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 152, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jCheckBox1)
.addContainerGap(60, Short.MAX_VALUE))
);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel2.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jPanel2.setPreferredSize(new java.awt.Dimension(251, 551));
jLabel3.setBackground(new java.awt.Color(204, 255, 0));
jLabel3.setFont(new java.awt.Font("Tahoma", 1, 30));
jLabel3.setForeground(new java.awt.Color(255, 0, 0));
jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel3.setText("!!GAME OVER!!");
jLabel3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jLabel3.setOpaque(true);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 207, Short.MAX_VALUE)
.addGap(22, 22, 22))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(194, 194, 194)
.addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, 110, Short.MAX_VALUE)
.addGap(245, 245, 245))
);
jLabel1.setBackground(new java.awt.Color(255, 255, 255));
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("jLabel1");
jLabel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Score:"));
jLabel1.setOpaque(true);
jLabel2.setBackground(new java.awt.Color(255, 255, 255));
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel2.setText("jLabel2");
jLabel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Difficulté:"));
jLabel2.setOpaque(true);
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Next figure "));
jPanel3.setPreferredSize(new java.awt.Dimension(101, 101));
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 89, Short.MAX_VALUE)
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 78, Short.MAX_VALUE)
);
jLabel4.setText("Echap: pour aller dans Option");
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 105, Short.MAX_VALUE)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(64, 64, 64))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(60, 60, 60)
.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 159, Short.MAX_VALUE)
.addGap(229, 229, 229))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 15, Short.MAX_VALUE)
.addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(40, 40, 40)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(51, 51, 51)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(56, 56, 56)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap())
);
jLabel1.getAccessibleContext().setAccessibleDescription("");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Fenetre.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Fenetre.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Fenetre.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Fenetre.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Fenetre f=new Fenetre(new Grille());
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setResizable(false);
f.setTitle("Tetris_like");
f.simulatoin();
}
});
}
// Variables declaration - do not modify
private javax.swing.JCheckBox jCheckBox1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel5;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextPane jTextPane2;
// End of variables declaration
@Override
public void keyTyped(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_DOWN)
{timer.setDelay(25);}
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_DOWN)
{timer.setDelay(50);}
//throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void keyReleased(KeyEvent e) {
if(timer.isRunning()){
if(e.getKeyCode()==KeyEvent.VK_LEFT)
{fig_.deplacerGauche(grille_);
affichage_.repaint();}
else if(e.getKeyCode()==KeyEvent.VK_RIGHT)
{
fig_.deplacerDroite(grille_);
affichage_.repaint();
}
else if(e.getKeyCode()==KeyEvent.VK_UP)
{
fig_.rotate(grille_);
affichage_.repaint();
}
else if(e.getKeyCode()==KeyEvent.VK_DOWN)
{timer.setDelay(delai_);}
}
if(e.getKeyCode()==KeyEvent.VK_ESCAPE){
if(timer.isRunning()){
timer.stop();
JFrame j= new JFrame();
j.add(jPanel5);
j.setVisible(true);
// taille et position
j.setSize(380,300);
j.setLocationRelativeTo(j.getParent());
j.setResizable(false);
jPanel5.setVisible(true);
j.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
timer.start();
requestFocus();
}
});
}
}
//throw new UnsupportedOperationException("Not supported yet.");
}
private class JCheckBoxListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Color violet=new Color(200, 30, 240);
Color blueCadet= new Color(95,158,160);// Cadet Blue
Color gryDim=new Color(105,105,105);//Dim Gray
Color cornsilk=new Color(205,200,177);//Cornsilk 3
if(jCheckBox1.isSelected()){
Controle.couleure_dalt=1;
for(int i=0;i<10;i++){
for(int j=0;j<22;j++){
if(grille_.lireGrille(i, j)==Color.BLUE){
grille_.lire_case_Grille(i, j).setCouleur(new Color(95,158,160));
}
if(grille_.lireGrille(i, j)==Color.RED){
grille_.lire_case_Grille(i, j).setCouleur(new Color(105,105,105));
}
if(grille_.lireGrille(i, j)==violet){
grille_.lire_case_Grille(i, j).setCouleur(new Color(205,200,177));
}
}
//repaint les figures
/* for(i=0;i<4;i++){
/*if(fig_.getCases(i).getCouleur()==Color.BLUE){
fig_.getCases(i).setCouleur(new Color(95,158,160));
}
if(fig_.getCases(i).getCouleur()==Color.RED){
fig_.getCases(i).setCouleur(new Color(105,105,105));
}
if(fig_.getCases(i).getCouleur()==violet){
fig_.getCases(i).setCouleur(new Color(205,200,177));
}
if(fig_next_.getCases(i).getCouleur()==Color.BLUE){
fig_next_.getCases(i).setCouleur(new Color(95,158,160));
}
if(fig_next_.getCases(i).getCouleur()==Color.RED){
fig_next_.getCases(i).setCouleur(new Color(105,105,105));
}
if(fig_next_.getCases(i).getCouleur()==violet){
fig_next_.getCases(i).setCouleur(new Color(205,200,177));
}
}*/
//affichage_fig.repaint();
affichage_.repaint();
}
}
else{
Controle.couleure_dalt=0;
for(int i=0;i<10;i++){
for(int j=0;j<22;j++){
if(grille_.lireGrille(i, j)==blueCadet){
grille_.lire_case_Grille(i, j).setCouleur(Color.BLUE);
}
if(grille_.lireGrille(i, j)==gryDim){
grille_.lire_case_Grille(i, j).setCouleur(Color.RED);
}
if(grille_.lireGrille(i, j)==cornsilk){
grille_.lire_case_Grille(i, j).setCouleur(new Color(200, 30, 240));
}
}
}
affichage_.repaint();
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* Fenetre2.java
*
* Created on 4 janv. 2013, 17:54:21
*/
package tetris;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class Fenetre2 extends javax.swing.JFrame implements KeyListener {
private Thread1 thread_1;
private Thread2 thread_2;
private Grille grille_1;
private Grille grille_2;
/** Creates new form Fenetre2 */
public Fenetre2() {
initComponents();
addKeyListener(this);
addWindowListener(new WindowAdapter() {
public void windowOpened(WindowEvent e) {
requestFocus();
}
});
grille_1=new Grille();
grille_2=new Grille();
jLabel1.setVisible(false);
thread_2=new Thread2(jPanel3,jPanel7,jLabel2,thread_1,grille_2,grille_1);
addKeyListener(thread_2);
thread_1=new Thread1(jPanel2,jPanel4,jLabel1,thread_2,grille_1,grille_2);
addKeyListener(thread_1);
jLabel2.setVisible(false);
}
public Thread1 getThread1(){
return thread_1;
}
public Thread2 getThread2(){
return thread_2;
}
public void simulatoin(){
thread_2.start();
thread_1.start();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel5 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
jCheckBox1 = new javax.swing.JCheckBox();
jScrollPane2 = new javax.swing.JScrollPane();
jTextPane2 = new javax.swing.JTextPane();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jPanel4 = new javax.swing.JPanel();
jPanel7 = new javax.swing.JPanel();
jPanel6.setBorder(javax.swing.BorderFactory.createTitledBorder("Option"));
jCheckBox1.setFont(new java.awt.Font("Tahoma", 1, 12));
jCheckBox1.setText("couleurs Daltonien");
jTextPane2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Touches", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, java.awt.Color.black));
jTextPane2.setEditable(false);
jTextPane2.setFont(new java.awt.Font("Tahoma", 1, 12));
jTextPane2.setText("Boutons de Gameplay du joueur 1 :n n? LEFT : touche directionnelle gauche n? RIGHT : touche directionnelle droite n? ROTATE : touche directionnelle hautn? DOWN : touche directionnelle basnnBoutons de Gameplay du joueur 2 :nn? LEFT : touche « S »n? RIGHT : touche « F »n? ROTATE : touche « E »n? DOWN : touche « D »");
jTextPane2.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
jScrollPane2.setViewportView(jTextPane2);
javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
jPanel6.setLayout(jPanel6Layout);
jPanel6Layout.setHorizontalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addGap(24, 24, 24)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 297, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel6Layout.createSequentialGroup()
.addGap(81, 81, 81)
.addComponent(jCheckBox1)))
.addContainerGap(51, Short.MAX_VALUE))
);
jPanel6Layout.setVerticalGroup(
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel6Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 245, Short.MAX_VALUE)
.addGap(41, 41, 41)
.addComponent(jCheckBox1)
.addContainerGap())
);
javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
jPanel5.setLayout(jPanel5Layout);
jPanel5Layout.setHorizontalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 404, Short.MAX_VALUE)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap()))
);
jPanel5Layout.setVerticalGroup(
jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 385, Short.MAX_VALUE)
.addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel5Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(24, Short.MAX_VALUE)))
);
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel2.setPreferredSize(new java.awt.Dimension(251, 551));
jLabel1.setBackground(new java.awt.Color(0, 255, 51));
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14));
jLabel1.setForeground(new java.awt.Color(204, 0, 0));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("jLabel1");
jLabel1.setOpaque(true);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(33, 33, 33)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 178, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(38, Short.MAX_VALUE))
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGap(37, 37, 37)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 59, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(443, Short.MAX_VALUE))
);
jPanel3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel3.setPreferredSize(new java.awt.Dimension(251, 551));
jLabel2.setBackground(new java.awt.Color(0, 255, 0));
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14));
jLabel2.setForeground(new java.awt.Color(204, 0, 0));
jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel2.setText("jLabel2");
jLabel2.setOpaque(true);
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(45, 45, 45)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(40, Short.MAX_VALUE))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(34, 34, 34)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(444, Short.MAX_VALUE))
);
jPanel4.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel4.setPreferredSize(new java.awt.Dimension(101, 101));
javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
jPanel4.setLayout(jPanel4Layout);
jPanel4Layout.setHorizontalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 99, Short.MAX_VALUE)
);
jPanel4Layout.setVerticalGroup(
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 99, Short.MAX_VALUE)
);
jPanel7.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel7.setPreferredSize(new java.awt.Dimension(101, 101));
javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
jPanel7.setLayout(jPanel7Layout);
jPanel7Layout.setHorizontalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 99, Short.MAX_VALUE)
);
jPanel7Layout.setVerticalGroup(
jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 99, Short.MAX_VALUE)
);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(21, 21, 21)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 48, Short.MAX_VALUE)
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(37, 37, 37)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(23, 23, 23))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(320, 320, 320)
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(311, 311, 311))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(34, 34, 34)
.addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(34, 34, 34)
.addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGap(19, 19, 19)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 541, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, 541, Short.MAX_VALUE))))
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addContainerGap())
);
pack();
}// </editor-fold>
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(Fenetre2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(Fenetre2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(Fenetre2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(Fenetre2.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Fenetre2 f= new Fenetre2();
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setResizable(false);
f.setTitle("Tetris_like");
f.simulatoin();
}
});
}
// Variables declaration - do not modify
private javax.swing.JCheckBox jCheckBox1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextPane jTextPane2;
// End of variables declaration
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_ESCAPE){
if(thread_1.isAlive()){
JFrame j= new JFrame();
while(j.isActive()){
try {
thread_1.sleep(1);
} catch (InterruptedException ex) {
Logger.getLogger(Fenetre2.class.getName()).log(Level.SEVERE, null, ex);
}
j.add(jPanel5);
j.setVisible(true);
// taille et position
j.setSize(380,300);
j.setLocationRelativeTo(j.getParent());
j.setResizable(false);
jPanel5.setVisible(true);
j.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
thread_1.start();
requestFocus();
}
});
}
}
}
}
private class JCheckBoxListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
Color violet=new Color(200, 30, 240);
Color blueCadet= new Color(95,158,160);// Cadet Blue
Color gryDim=new Color(105,105,105);//Dim Gray
Color cornsilk=new Color(205,200,177);//Cornsilk 3
if(jCheckBox1.isSelected()){
Controle.couleure_dalt=1;
}
else{
Controle.couleure_dalt=0;
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public abstract class Figure /*implements FigureInter*/ {
private Figure fig_;
private int etat_;
public Figure(){
//fig_=new L();
etat_=0;
}
public int getEtat(){
return etat_;
}
public void setEtat(int e){
etat_=e;
}
public abstract JPanel afficheFigure();
public abstract void deplacerGauche(Grille g);
public abstract void deplacerDroite(Grille g);
public abstract void descendre(Grille g) throws Exception;
public abstract void rotate(Grille g);
public abstract Case getCases(int i);
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import java.awt.Color;
import javax.swing.JPanel;
/**
*
* @author zero
*/
public class Grille {
private int score_;
private int taille_;
private int difficulté_;
private int nbr_ligneSup;
private Case [][]grille_;
public Grille(){
difficulté_=1;
nbr_ligneSup=0;
score_=0;
taille_=22;
grille_= new Case [10][22];
}
public Case lire_case_Grille(int i, int j){
return grille_[i][j];
}
public Color lireGrille(int i, int j){
if(grille_[i][j]==null) return null;
else return grille_[i][j].getCouleur();
}
public JPanel afficheGrille(){
PanneauGrille pan= new PanneauGrille(this);
return pan;
}
public void setGrille(Case c, int i,int j){
grille_[i][j]=c;
}
public void setScore(int n){
score_=n;
}
public int getScore(){
return score_;
}
public void setDifficulté(int n){
difficulté_=n;
}
public int getDifficulté(){
return difficulté_;
}
public void setTaille(int t){
taille_=t;
}
public int getTaille(){
return taille_;
}
public void setNbr_ligneSup(int t){
nbr_ligneSup=t;
}
public int getNbr_ligneSup(){
return nbr_ligneSup;
}
public void mise_ajourGrille(){
for(int j=0; j<22; j++){
int n=0;
for(int i=0; i<10; i++){
if(this.lireGrille(i, j)!=null) n++;
if(n==10){
this.supp_ligne(j);
nbr_ligneSup++;
this.mise_ajourGrille();
}
}
}
}
public void supp_ligne(int j){
for(int i=0; i<10; i++){
this.setGrille(null, i, j);
}
if(j>0){
for(int i=0; i<10; i++){
for(int k=j; k>0; k--){
this.setGrille(this.lire_case_Grille(i, k-1), i, k);
}
}
}
}
public void mise_ajour2(Grille g2){
for(int j=0; j<taille_; j++){
int n=0;
int nc=0;
boolean mm_c=false;
Color c=null;
for(int i=0; i<10; i++){
c=this.lireGrille(i, j);
if(i<9){
if((c!=null)&&(c==this.lireGrille(i+1, j))){
nc++;
if(nc==4)mm_c=true;
}
}
if(this.lireGrille(i, j)!=null) n++;
if(n==10){
if(mm_c){
for(int ii=0;ii<10;ii++){
for(int jj=0;jj<g2.taille_-2;jj++){
g2.setGrille(g2.lire_case_Grille(ii, jj+1), ii, jj);
}
}
for(int ii=0;ii<10;ii++){
g2.setGrille(this.lire_case_Grille(ii, j), ii, g2.taille_-1);
}
g2.taille_=g2.taille_-1;
}
this.supp_ligne(j);
this.mise_ajour2(g2);
}
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class L extends Figure {
private Case [] cases_;
public L(){
cases_=new Case[4];
cases_[0]=new Case(-1,-1);
cases_[1]=new Case(-1,-1);
cases_[2]=new Case(-1,-1);
cases_[3]=new Case(-1,-1);
}
public Case getCases(int i){
return cases_[i];
}
public JPanel afficheFigure(){
PanneauFigure pan= new PanneauFigure(this);
return pan;
}
public void descendre(Grille g) throws Exception{
if(this.getEtat()==0){
int nj=0; int ni=4;
if(this.cases_[2].getX()!=-1) {
nj=this.cases_[2].getY()+1;
ni=this.cases_[2].getX();
}
//si on est en bas de la grille
if (nj==22) throw new Exception();
//si les cases suivantes sont occupée
if((g.lireGrille(ni,nj)!=null)||(g.lireGrille(ni+1, nj)!=null))
throw new Exception();
if((g.lireGrille(ni,nj)==null)&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(this.cases_[2],ni,nj);
this.cases_[2].setX(ni);
this.cases_[2].setY(nj);
g.setGrille(this.cases_[3], ni+1, nj);
this.cases_[3].setX(ni+1);
this.cases_[3].setY(nj);
if(nj==1){
g.setGrille(this.cases_[1],ni,nj-1);
this.cases_[1].setX(ni);
this.cases_[1].setY(nj-1);
g.setGrille(null,ni+1,nj-1);
}
if(nj==2){
g.setGrille(this.cases_[1],ni,nj-1);
this.cases_[1].setX(ni);
this.cases_[1].setY(nj-1);
g.setGrille(this.cases_[0],ni,nj-2);
this.cases_[0].setX(ni);
this.cases_[0].setY(nj-2);
g.setGrille(null, ni+1, nj-1);
}
if(nj>=3){
g.setGrille(this.cases_[1],ni,nj-1);
this.cases_[1].setX(ni);
this.cases_[1].setY(nj-1);
g.setGrille(this.cases_[0],ni,nj-2);
this.cases_[0].setX(ni);
this.cases_[0].setY(nj-2);
g.setGrille(null, ni, nj-3);
g.setGrille(null, ni+1, nj-1);
}
}
}
// etat ==1 (alangé)
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[3].getY()!=-1){
ni= cases_[3].getX();
nj= cases_[3].getY()+1;
}
//si on est en bas de la grille
if (nj==22) throw new Exception();
//si les cases suivantes sont occupée
if((g.lireGrille(ni,nj)!=null)||(g.lireGrille(ni+1, nj-1)!=null)
||(g.lireGrille(ni+2, nj-1)!=null))
throw new Exception();
if(nj==0){
if((g.lireGrille(ni,nj)==null)){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
/*
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni+1, nj-2);
g.setGrille(null, ni+2, nj-2);
*/
}
}
if(nj==1){
if((g.lireGrille(ni,nj)==null)&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
/*
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni+1, nj-2);
g.setGrille(null, ni+2, nj-2);
*/
}
}
if(nj>=2){
if((g.lireGrille(ni,nj)==null)&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni+1, nj-2);
g.setGrille(null, ni+2, nj-2);
}
}
}
//etat vers le bas
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[0].getY()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
//si on est en bas de la grille
if (nj==21) throw new Exception();
//si les cases suivantes sont occupée
if((g.lireGrille(ni,nj+1)!=null)||((nj!=0)&&
g.lireGrille(ni-1, nj-1)!=null)) throw new Exception();
if(nj==0){
if(g.lireGrille(ni, nj+1)==null){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
}
}
if(nj==1){
if((g.lireGrille(ni, nj+1)==null)&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni, nj+1)==null)&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni-1, nj-2);
}
}
}
//etat 3
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
//si on est en bas de la grille
if (nj==21) throw new Exception();
//si les cases suivantes sont occupée
if((g.lireGrille(ni,nj+1)!=null)
||(g.lireGrille(ni+1, nj+1)!=null)
||(g.lireGrille(ni-1, nj+1)!=null)) throw new Exception();
if(nj==0){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj+1)==null)
&&(g.lireGrille(ni-1, nj+1)==null)){
g.setGrille(cases_[0], ni-1, nj+1);
cases_[0].setX(ni-1);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[2], ni+1, nj+1);
cases_[2].setX(ni+1);
cases_[2].setY(nj+1);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj+1)==null)
&&(g.lireGrille(ni-1, nj+1)==null)){
g.setGrille(cases_[0], ni-1, nj+1);
cases_[0].setX(ni-1);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[2], ni+1, nj+1);
cases_[2].setX(ni+1);
cases_[2].setY(nj+1);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni, nj);
g.setGrille(null, ni+1, nj-1);
}
}
}
}
public void deplacerGauche(Grille g){
if(this.getEtat()==0){
int ni=4, nj=0;
if(cases_[2].getX()!=-1){
ni= cases_[2].getX();
nj= cases_[2].getY();
}
if(ni>0){
if(nj==0)
if(cases_[2].getX()!=-1){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj-2)==null)
&&(g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[0], ni-1, nj-2);
cases_[0].setX(ni-1);
cases_[0].setY(nj-2);
g.setGrille(null, ni, nj-2);
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni>0){
if(nj==0){
if(cases_[3].getX()!=-1){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni+1, nj-1);
cases_[0].setX(ni+1);
cases_[0].setY(nj-1);
g.setGrille(null, ni+2, nj-1);
g.setGrille(null, ni, nj);
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[0].getY()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni>1){
if(nj==0){
if(cases_[0].getX()!=-1){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-2, nj-2)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[3], ni-2, nj-2);
g.setGrille(cases_[2], ni-1, nj-2);
g.setGrille(null, ni, nj-2);
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni>1){
if(nj==0){
if(cases_[1].getX()!=-1){
if(g.lireGrille(ni-2, nj)==null){
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni-2, nj)==null)
&&(g.lireGrille(ni, nj-1)==null)){
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni+1, nj-1);
}
}
}
}
}
public void deplacerDroite(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni= cases_[2].getX();
nj= cases_[2].getY();
}
if(ni<8){
if(nj==0){
if(cases_[2].getX()!=-1){
if(g.lireGrille(ni+2, nj)==null){
g.setGrille(cases_[3], ni+2, nj);
cases_[3].setX(ni+2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(null, ni, nj);
}
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj-1)==null)&&
(g.lireGrille(ni+2, nj)==null)){
g.setGrille(cases_[3], ni+2, nj);
cases_[3].setX(ni+2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj-2)==null)&&
(g.lireGrille(ni+1, nj-1)==null)&&
(g.lireGrille(ni+2, nj)==null)){
g.setGrille(cases_[3], ni+2, nj);
cases_[3].setX(ni+2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[0], ni+1, nj-2);
cases_[0].setX(ni+1);
cases_[0].setY(nj-2);
g.setGrille(null, ni, nj-2);
}
}
}
}
//etat = 1 (alangé)
if (this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<7){
if(nj==0){
if(cases_[3].getX()!=-1){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni+3, nj-1)==null)&&
(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[0], ni+3, nj-1);
cases_[0].setX(ni+3);
cases_[0].setY(nj-1);
g.setGrille(cases_[1], ni+2, nj-1);
cases_[1].setX(ni+2);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni<9){
if(nj==0){
if(cases_[0].getX()!=-1){
if(g.lireGrille(ni+1, nj)==null){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+1, nj-2)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(cases_[2], ni+1, nj-2);
cases_[2].setX(ni+1);
cases_[2].setY(nj-2);
g.setGrille(cases_[3], ni, nj-2);
cases_[3].setX(ni);
cases_[3].setY(nj-2);
g.setGrille(null, ni-1, nj-2);
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni<8){
if(nj==0){
if(cases_[1].getX()!=-1){
if(g.lireGrille(ni+2, nj)==null){
g.setGrille(cases_[2], ni+2, nj);
cases_[2].setX(ni+2);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(null, ni-1, nj);
}
}
}
if(nj>=1){
if((g.lireGrille(ni+2, nj)==null)
&&(g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[2], ni+2, nj);
cases_[2].setX(ni+2);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[3], ni+2, nj-1);
cases_[3].setX(ni+2);
cases_[3].setY(nj-1);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni+1, nj-1);
}
}
}
}
}
public void rotate(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni= cases_[2].getX();
nj= cases_[2].getY();
}
if(ni<8){
/*if(nj==0){
g.setGrille(null, ni, nj);
g.setGrille(null, ni+1, nj);
cases_[3].setX(-1);
cases_[3].setY(-1);
cases_[2].setX(-1);
cases_[2].setY(-1);
}*/
if(nj==1){
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
cases_[2].setX(-1);
cases_[2].setY(-1);
cases_[1].setX(-1);
cases_[1].setY(-1);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni, nj);
this.setEtat(1);
return;
}
if(nj>=2){
if((g.lireGrille(ni+1, nj-2)==null)
&&(g.lireGrille(ni+2, nj-2)==null)){
g.setGrille(cases_[0], ni+2, nj-2);
cases_[0].setX(ni+2);
cases_[0].setY(nj-2);
g.setGrille(cases_[1], ni+1, nj-2);
cases_[1].setX(ni+1);
cases_[1].setY(nj-2);
g.setGrille(cases_[2], ni, nj-2);
cases_[2].setX(ni);
cases_[2].setY(nj-2);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni+1, nj);
this.setEtat(1);
return;
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[3].getY()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<=7){
if(nj==0){
if((g.lireGrille(ni+2, nj)==null)&&
(g.lireGrille(ni+2, nj+1)==null)){
g.setGrille(cases_[0], ni+2, nj+1);
cases_[0].setX(ni+2);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni+2, nj);
cases_[1].setX(ni+2);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
cases_[3].setX(-1);
cases_[3].setY(-1);
this.setEtat(2);
return;
}
}
if(nj>=1){
if((g.lireGrille(ni+2, nj)==null)&&
(g.lireGrille(ni+2, nj+1)==null)){
g.setGrille(cases_[0], ni+2, nj+1);
cases_[0].setX(ni+2);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni+2, nj);
cases_[1].setX(ni+2);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+2, nj-1);
cases_[2].setX(ni+2);
cases_[2].setY(nj-11);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
this.setEtat(2);
return;
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[0].getY()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni>1){
if(nj==0){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj)==null)){
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
this.setEtat(3);
return;
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj)==null)){
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
this.setEtat(3);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj)==null)){
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni-1, nj-2);
this.setEtat(3);
return;
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(nj==0){
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
cases_[0].setX(-1);
cases_[0].setY(-1);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
cases_[1].setX(-1);
cases_[1].setY(-1);
g.setGrille(null, ni+1, nj);
this.setEtat(0);
return;
}
if(nj==1){
if(g.lireGrille(ni-1, nj-1)==null){
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
cases_[0].setX(-1);
cases_[0].setY(-1);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni+1, nj-1);
this.setEtat(0);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj-2)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[0], ni-1, nj-2);
cases_[0].setX(ni-1);
cases_[0].setY(nj-2);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni+1, nj-1);
this.setEtat(0);
return;
}
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class L_retourné extends Figure {
private Case cases_[];
public L_retourné(){
cases_=new Case[4];
cases_[0]=new Case(-1,-1);
cases_[1]=new Case(-1,-1);
cases_[2]=new Case(-1,-1);
cases_[3]=new Case(-1,-1);
}
public Case getCases(int i){
return cases_[i];
}
public JPanel afficheFigure(){
PanneauFigure pan= new PanneauFigure(this);
return pan;
}
public void descendre(Grille g) throws Exception{
if(this.getEtat()==0){
int ni=5;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
//System.out.println("nj ="+nj);
//si on est en bas de la grille
if (nj==21) throw new Exception();
//si les cases suivantes sont occupée
if((g.lireGrille(ni,nj+1)!=null)
||(g.lireGrille(ni-1,nj+1)!=null)){
//System.out.println("nj ="+nj);
throw new Exception();}
if(nj==0){
if((cases_[2].getY()!=-1)
&&(g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni-1, nj+1)==null)){
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[3], ni-1, nj+1);
cases_[3].setX(ni-1);
cases_[3].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(null, ni-1, nj);
return;
}
if((cases_[2].getY()==-1)
&&(g.lireGrille(ni, nj)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
return;
}
}
if(nj==1){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni-1, nj+1)==null)){
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[3], ni-1, nj+1);
cases_[3].setX(ni-1);
cases_[3].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(null, ni-1, nj);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni-1, nj+1)==null)){
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[3], ni-1, nj+1);
cases_[3].setX(ni-1);
cases_[3].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni, nj-2);
return;
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
//la fin de la grille
if (nj==21) throw new Exception();
//si les cases suivantes sont occupée
if((g.lireGrille(ni,nj+1)!=null)||(g.lireGrille(ni+1,nj+1)!=null)
||(g.lireGrille(ni+2, nj+1)!=null))
throw new Exception();
if((g.lireGrille(ni,nj+1)==null)&&(g.lireGrille(ni+1,nj+1)==null)
&&(g.lireGrille(ni+2, nj+1)==null)){
if(nj==0){
if(cases_[2].getX()!=-1){
g.setGrille(cases_[0], ni+2, nj+1);
cases_[0].setX(ni+2);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni+1, nj+1);
cases_[1].setX(ni+1);
cases_[1].setY(nj+1);
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni+2, nj);
}
}
if(nj>=1){
g.setGrille(cases_[0], ni+2, nj+1);
cases_[0].setX(ni+2);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni+1, nj+1);
cases_[1].setX(ni+1);
cases_[1].setY(nj+1);
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni+2, nj);
g.setGrille(null, ni, nj-1);
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
//a la fin de la grille
if(nj==21) throw new Exception();
//cases suivantes occupées
if(g.lireGrille(ni, nj+1)!=null) throw new Exception();
if((nj>0)&&(g.lireGrille(ni+1, nj-1)!=null)) throw new Exception();
if(nj==0){
if(g.lireGrille(ni, nj+1)==null){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
}
}
if(nj==1){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj-1)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj-1)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni+1, nj-2);
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
//en bas de la grille
if(nj==21) throw new Exception();
//les cases suivante occupées
if((g.lireGrille(ni, nj+1)!=null)
||(g.lireGrille(ni-1, nj)!=null)
||(g.lireGrille(ni-2, nj)!=null))throw new Exception();
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj)==null)){
if(nj==0){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
}
if(nj>=1){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(null, ni-2, nj-1);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni, nj-1);
}
}
}
}
public void deplacerGauche(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni>0){
if(nj==0){
if(g.lireGrille(ni-1, nj)==null){
if(cases_[3].getX()!=-1){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni+1, nj);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni, nj-1)==null)
&&(g.lireGrille(ni, nj-2)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni, nj-2);
cases_[0].setX(ni);
cases_[0].setY(nj-2);
g.setGrille(null, ni+1, nj-2);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni+1, nj);
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni>0){
if(nj==0){
if((g.lireGrille(ni-1, nj)==null)
&&(cases_[2].getX()!=-1)){
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni+2, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni+2, nj);
g.setGrille(null, ni, nj-1);
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni>0){
if(nj==0){
if((g.lireGrille(ni-1, nj)==null)
&&(cases_[3].getX()!=-1)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-2)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni-1, nj-2);
cases_[2].setX(ni-1);
cases_[2].setY(nj-2);
g.setGrille(cases_[3], ni, nj-2);
cases_[3].setX(ni);
cases_[3].setY(nj-2);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni+1, nj-2);
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni>2){
if(nj==0){
if((g.lireGrille(ni-1, nj)==null)
&&(cases_[3].getX()!=-1)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni-3, nj-1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni-2, nj-1);
cases_[1].setX(ni-2);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni-3, nj-1);
cases_[0].setX(ni-3);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
}
}
}
}
}
public void deplacerDroite(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni<9){
if(nj==0){
if(cases_[2].getX()!=-1){
if(g.lireGrille(ni+1, nj)==null){
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni-1, nj);
}
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)){
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+1, nj-2)==null)){
g.setGrille(cases_[0], ni+1, nj-2);
cases_[0].setX(ni+1);
cases_[0].setY(nj-2);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj-2);
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni<9){
if(nj==0){
if((g.lireGrille(ni+1, nj)==null)
&&(cases_[0].getX()!=-1)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(null, ni-2, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(null, ni-2, nj);
g.setGrille(null, ni-2, nj-1);
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni<8){
if(nj==0){
if((g.lireGrille(ni+1, nj)==null)
&&(cases_[0].getX()!=-1)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj-2)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-2);
cases_[2].setX(ni+1);
cases_[2].setY(nj-2);
g.setGrille(cases_[3], ni+2, nj-2);
cases_[3].setX(ni+2);
cases_[3].setY(nj-2);
g.setGrille(null, ni, nj-2);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if (cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<9){
if(nj==0){
if((g.lireGrille(ni+1, nj)==null)
&&(cases_[3].getX()!=-1)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni-1, nj-1);
cases_[0].setX(ni-1);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-2, nj-1);
}
}
}
}
}
public void rotate(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni>1){
if(nj==0){
if(cases_[2].getX()!=-1){
if(g.lireGrille(ni-2, nj)==null){
g.setGrille(cases_[2], ni-2, nj);
cases_[2].setX(ni-2);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
cases_[3].setX(-1);
cases_[3].setY(-1);
this.setEtat(1);
return;
}
}
}
if(nj==1){
if((g.lireGrille(ni-2, nj-1)==null)
&&(g.lireGrille(ni-2, nj)==null)){
g.setGrille(cases_[2], ni-2, nj);
cases_[2].setX(ni-2);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[3], ni-2, nj-1);
cases_[3].setX(ni-2);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-1);
this.setEtat(1);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni-2, nj-1)==null)
&&(g.lireGrille(ni-2, nj)==null)){
g.setGrille(cases_[2], ni-2, nj);
cases_[2].setX(ni-2);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[3], ni-2, nj-1);
cases_[3].setX(ni-2);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj-2);
this.setEtat(1);
return;
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni>=0){
if(nj==0){
if(cases_[2].getX()!=-1){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
cases_[1].setX(-1);
cases_[1].setY(-1);
cases_[2].setX(-1);
cases_[2].setY(-1);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni+2, nj);
this.setEtat(2);
return;
}
}
if(nj==1){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
cases_[2].setX(-1);
cases_[2].setY(-1);
cases_[3].setX(-1);
cases_[3].setY(-1);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni+2, nj);
this.setEtat(2);
return;
}
if(nj>=2){
if((g.lireGrille(ni, nj-2)==null)
&&(g.lireGrille(ni+1, nj-2)==null)){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni, nj-2);
cases_[2].setX(ni);
cases_[2].setY(nj-2);
g.setGrille(cases_[3], ni+1, nj-2);
cases_[3].setX(ni+1);
cases_[3].setY(nj-2);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni+2, nj);
this.setEtat(2);
return;
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni<8){
if(nj==1){
if(g.lireGrille(ni+2, nj-1)==null){
g.setGrille(cases_[3], ni+2, nj-1);
cases_[3].setX(ni+2);
cases_[3].setY(nj-1);
cases_[0].setX(-1);
cases_[0].setY(-1);
cases_[1].setX(-1);
cases_[1].setY(-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
this.setEtat(3);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni+2, nj-1)==null)
&&(g.lireGrille(ni+2, nj-2)==null)){
g.setGrille(cases_[3], ni+2, nj-1);
cases_[3].setX(ni+2);
cases_[3].setY(nj-1);
g.setGrille(cases_[2], ni+2, nj-2);
cases_[2].setX(ni+2);
cases_[2].setY(nj-2);
g.setGrille(cases_[0], ni, nj-2);
cases_[0].setX(ni);
cases_[0].setY(nj-2);
g.setGrille(cases_[1], ni+1, nj-2);
cases_[1].setX(ni+1);
cases_[1].setY(nj-2);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
this.setEtat(3);
return;
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni>1){
if(nj==0){
if(cases_[3].getX()!=-1){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni-1, nj+1)==null)){
g.setGrille(cases_[3], ni-1, nj+1);
cases_[3].setX(ni-1);
cases_[3].setY(nj+1);
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
this.setEtat(0);
return;
}
}
}
if((nj>=1)&&(nj<21)){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni-1, nj+1)==null)){
g.setGrille(cases_[3], ni-1, nj+1);
cases_[3].setX(ni-1);
cases_[3].setY(nj+1);
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni, nj-1);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni-2, nj-1);
this.setEtat(0);
return;
}
}
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class PanneauFigure extends JPanel {
private Figure figure_;
public PanneauFigure(L f){
figure_=f;
}
public PanneauFigure(L_retourné f){
figure_=f;
}
public PanneauFigure(S f){
figure_=f;
}
public PanneauFigure(Z f){
figure_=f;
}
public PanneauFigure(T f){
figure_=f;
}
public PanneauFigure(Barre f){
figure_=f;
}
public PanneauFigure(Cube f){
figure_=f;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
//Dimension taille =new Dimension(463,463);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
g.setColor(Color.white);
g.drawRect(i*25,j*25,25,25);
g.setColor(Color.black);
g.fillRect(25*i+3,25*j+3,20,20);
}
}
if(figure_ instanceof L){
g.setColor(((L)figure_).getCases(0).getCouleur());
int i=1; int j=0;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((L)figure_).getCases(1).getCouleur());
i=1; j=1;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((L)figure_).getCases(2).getCouleur());
i=1; j=2;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((L)figure_).getCases(3).getCouleur());
i=2; j=2;
g.fillRect(25*i+3,25*j+3,20,20);
}
if(figure_ instanceof L_retourné){
g.setColor(((L_retourné)figure_).getCases(0).getCouleur());
int i=2; int j=0;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((L_retourné)figure_).getCases(1).getCouleur());
i=2; j=1;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((L_retourné)figure_).getCases(2).getCouleur());
i=2; j=2;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((L_retourné)figure_).getCases(3).getCouleur());
i=1; j=2;
g.fillRect(25*i+3,25*j+3,20,20);
}
if(figure_ instanceof T){
g.setColor(((T)figure_).getCases(3).getCouleur());
int i=1; int j=0;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((T)figure_).getCases(2).getCouleur());
i=1; j=1;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((T)figure_).getCases(1).getCouleur());
i=1; j=2;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((T)figure_).getCases(0).getCouleur());
i=2; j=1;
g.fillRect(25*i+3,25*j+3,20,20);
}
if(figure_ instanceof Z){
g.setColor(((Z)figure_).getCases(3).getCouleur());
int i=2; int j=0;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((Z)figure_).getCases(2).getCouleur());
i=2; j=1;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((Z)figure_).getCases(1).getCouleur());
i=1; j=1;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((Z)figure_).getCases(0).getCouleur());
i=1; j=2;
g.fillRect(25*i+3,25*j+3,20,20);
}
if(figure_ instanceof S){
g.setColor(((S)figure_).getCases(3).getCouleur());
int i=1; int j=0;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((S)figure_).getCases(2).getCouleur());
i=1; j=1;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((S)figure_).getCases(1).getCouleur());
i=2; j=1;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((S)figure_).getCases(0).getCouleur());
i=2; j=2;
g.fillRect(25*i+3,25*j+3,20,20);
}
if(figure_ instanceof Barre){
g.setColor(((Barre)figure_).getCases(3).getCouleur());
int i=1; int j=3;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((Barre)figure_).getCases(2).getCouleur());
i=1; j=2;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((Barre)figure_).getCases(1).getCouleur());
i=1; j=1;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((Barre)figure_).getCases(0).getCouleur());
i=1; j=0;
g.fillRect(25*i+3,25*j+3,20,20);
}
if(figure_ instanceof Cube){
g.setColor(((Cube)figure_).getCases(3).getCouleur());
int i=2; int j=1;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((Cube)figure_).getCases(2).getCouleur());
i=2; j=2;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((Cube)figure_).getCases(1).getCouleur());
i=1; j=2;
g.fillRect(25*i+3,25*j+3,20,20);
g.setColor(((Cube)figure_).getCases(0).getCouleur());
i=1; j=1;
g.fillRect(25*i+3,25*j+3,20,20);
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class PanneauGrille extends JPanel {
private Grille grille_;
PanneauGrille(Grille g){
grille_=g;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
//Dimension taille =new Dimension(463,463);
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 22; j++) {
g.setColor(Color.white);
g.drawRect(i*25,j*25,25,25);
//g.setColor(Color.red);
//g.fillRect(25*i+3,25*j+3,20,20);
if(grille_.lireGrille(i,j)==null){
g.setColor(Color.black);
g.fillRect(25*i+3,25*j+3,20,20);
}
else{
g.setColor(grille_.lireGrille(i,j));
g.fillRect(25*i+3,25*j+3,20,20);
}
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class S extends Figure {
private Case [] cases_;
public S(){
cases_=new Case[4];
cases_[0]=new Case(-1,-1);
cases_[1]=new Case(-1,-1);
cases_[2]=new Case(-1,-1);
cases_[3]=new Case(-1,-1);
}
public Case getCases(int i){
return cases_[i];
}
public JPanel afficheFigure(){
PanneauFigure pan= new PanneauFigure(this);
return pan;
}
public void descendre(Grille g) throws Exception{
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
//si on est en bas de la grille
if(nj==21)throw new Exception();
//si les cases suisvantes sont ocupées
if(((cases_[0].getX()==-1)
&&(g.lireGrille(ni+1, nj)!=null))
||((cases_[0].getX()!=-1)
&&((g.lireGrille(ni, nj+1)!=null)
||(g.lireGrille(ni-1, nj)!=null))))
throw new Exception();
if(nj==0){
if((cases_[0].getY()!=-1)
&&(g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni, nj+1)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
}
if((cases_[0].getY()==-1)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni, nj+1)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni, nj+1)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni-1, nj-2);
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
//si on est en bas de la grille
if(nj==21)throw new Exception();
//si les cases suivantes sont occupées
if((g.lireGrille(ni, nj+1)!=null)
||(g.lireGrille(ni-1, nj+1)!=null)
||(g.lireGrille(ni+1, nj)!=null))
throw new Exception();
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni-1, nj+1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
if(nj==0){
g.setGrille(cases_[0], ni-1, nj+1);
cases_[0].setX(ni-1);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(null, ni-1, nj);
}
if(nj>=1){
g.setGrille(cases_[0], ni-1, nj+1);
cases_[0].setX(ni-1);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni+1, nj-1);
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
//si on est en bas de la grille
if(nj==21) throw new Exception();
//si les cases suivantes sont occupées
if((g.lireGrille(ni, nj+1)!=null)
||(g.lireGrille(ni-1, nj)!=null))
throw new Exception();
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
if(nj==0){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
}
if(nj==1){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni-1, nj-1);
cases_[0].setX(ni-1);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
if(nj>=2){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni-1, nj-1);
cases_[0].setX(ni-1);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni-1, nj-2);
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
//si on est en bas de la grille
if(nj==21) throw new Exception();
//si les cases suivantes sont occupées
if((g.lireGrille(ni, nj+1)!=null)
||(g.lireGrille(ni-1, nj+1)!=null)
||(g.lireGrille(ni+1, nj)!=null))
throw new Exception();
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni-1, nj+1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
if(nj==0){
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[3], ni-1, nj+1);
cases_[3].setX(ni-1);
cases_[3].setY(nj+1);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni-1, nj);
}
if(nj>=1){
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[3], ni-1, nj+1);
cases_[3].setX(ni-1);
cases_[3].setY(nj+1);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni+1, nj-1);
}
}
}
}
public void deplacerGauche(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni>1){
if(nj==0){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj-1)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[2], ni-2, nj-1);
cases_[2].setX(ni-2);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj-1)==null)
&&(g.lireGrille(ni-2, nj-2)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[2], ni-2, nj-1);
cases_[2].setX(ni-2);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(cases_[3], ni-2, nj-2);
cases_[3].setX(ni-2);
cases_[3].setY(nj-2);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni-1, nj-2);
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni>1){
if(nj==0){
if(g.lireGrille(ni-2, nj)==null){
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni-2, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni>1){
if(nj==0){
if(g.lireGrille(ni-1, nj)==null){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni-2, nj-1);
cases_[1].setX(ni-2);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj-1)==null)
&&(g.lireGrille(ni-2, nj-2)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni-2, nj-1);
cases_[1].setX(ni-2);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[0], ni-2, nj-2);
cases_[0].setX(ni-2);
cases_[0].setY(nj-2);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni-1, nj-2);
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni>1){
if(nj==0){
if(g.lireGrille(ni-2, nj)==null){
g.setGrille(cases_[3], ni-2, nj);
cases_[3].setX(ni-2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni-2, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[3], ni-2, nj);
cases_[3].setX(ni-2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
}
}
}
}
}
public void deplacerDroite(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni<9){
if(nj==0){
if(g.lireGrille(ni+1, nj)==null){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-1, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni, nj-2)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[3], ni, nj-2);
cases_[3].setX(ni);
cases_[3].setY(nj-2);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni-1, nj-2);
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni<8){
if(nj==0){
if(g.lireGrille(ni+1, nj)==null){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(null, ni-1, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni+2, nj-1);
cases_[3].setX(ni+2);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<9){
if(nj==0){
if(g.lireGrille(ni+1, nj)==null){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-1, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni, nj-2)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[0], ni, nj-2);
cases_[0].setX(ni);
cases_[0].setY(nj-2);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni-1, nj-2);
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni<8){
if(nj==0){
if(g.lireGrille(ni+1, nj)==null){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(null, ni-1, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
}
}
}
public void rotate(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni>1){
if(nj==0){
if((cases_[0].getX()!=-1)
&&(g.lireGrille(ni-2, nj)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
this.setEtat(1);
return;
}
}
if(nj==1){
if((cases_[0].getX()!=-1)
&&(g.lireGrille(ni-2, nj)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
this.setEtat(1);
return;
}
}
if(nj>=2){
if((cases_[0].getX()!=-1)
&&(g.lireGrille(ni-2, nj)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[0], ni-2, nj);
cases_[0].setX(ni-2);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni-1, nj-2);
this.setEtat(1);
return;
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(nj==0){
if(cases_[1].getX()!=-1){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
cases_[1].setX(-1);
cases_[1].setY(-1);
cases_[0].setX(-1);
cases_[0].setY(-1);
g.setGrille(null, ni-1, nj);
this.setEtat(2);
return;
}
}
if(nj==1){
if(g.lireGrille(ni-1, nj-1)==null){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
cases_[0].setX(-1);
cases_[0].setY(-1);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni+1, nj-1);
this.setEtat(2);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-1, nj-2)==null)){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni-1, nj-2);
cases_[0].setX(ni-1);
cases_[0].setY(nj-2);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni+1, nj-1);
this.setEtat(2);
return;
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<9){
if(nj==1){
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
cases_[1].setX(-1);
cases_[1].setY(-1);
g.setGrille(null, ni, nj);
this.setEtat(3);
return;
}
if(nj>=2){
if((g.lireGrille(ni+1, nj-2)==null)
&&(g.lireGrille(ni, nj-2)==null)){
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(cases_[1], ni, nj-2);
cases_[1].setX(ni);
cases_[1].setY(nj-2);
g.setGrille(cases_[0], ni+1, nj-2);
cases_[0].setX(ni+1);
cases_[0].setY(nj-2);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-1, nj-2);
this.setEtat(3);
return;
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(nj==0){
if((cases_[2].getX()!=-1)
&&(g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj+1)==null)){
g.setGrille(cases_[0], ni+1, nj+1);
cases_[0].setX(ni+1);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(null, ni-1, nj);
cases_[3].setX(-1);
cases_[3].setY(-1);
this.setEtat(0);
return;
}
}
if(nj>=1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj+1)==null)){
g.setGrille(cases_[0], ni+1, nj+1);
cases_[0].setX(ni+1);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
this.setEtat(0);
return;
}
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class T extends Figure{
private Case [] cases_;
public T(){
cases_=new Case[4];
cases_[0]=new Case(-1,-1);
cases_[1]=new Case(-1,-1);
cases_[2]=new Case(-1,-1);
cases_[3]=new Case(-1,-1);
}
public Case getCases(int i){
return cases_[i];
}
public JPanel afficheFigure(){
PanneauFigure pan= new PanneauFigure(this);
return pan;
}
public void descendre(Grille g) throws Exception{
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
//si on est en bas de la grille
if(nj==21) throw new Exception();
//si les cases suivantes sont ocupées
if((cases_[1].getY()!=-1)&&(g.lireGrille(ni, nj+1)!=null))
throw new Exception();
if((cases_[1].getY()==-1)&&(g.lireGrille(ni, nj)!=null))
throw new Exception();
if((cases_[1].getY()==0)&&(g.lireGrille(ni+1, nj)!=null))
throw new Exception();
if(nj==0){
if(cases_[1].getY()==0){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni, nj+1)==null)){
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
return;
}
}
if((cases_[1].getY()==-1)
&&(g.lireGrille(ni, nj)==null)){
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
return;
}
}
if(nj==1){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni, nj-2);
return;
}
}
throw new Exception();
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
//si on est en bas
if(nj==21) throw new Exception();
//si les cases suivantes sont occupées
if((g.lireGrille(ni, nj+1)!=null)
||(g.lireGrille(ni+1, nj)!=null)
||(g.lireGrille(ni-1, nj)!=null))
throw new Exception();
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni-1, nj)==null)){
if(nj==0){
if(cases_[0].getX()!=-1){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
}
}
if(nj>=1){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni+1, nj-1);
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
//si en est en bas de la grille
if(nj==21) throw new Exception();
//si les cases suivantes sont occuppées
if((g.lireGrille(ni-1, nj)!=null)
||(g.lireGrille(ni, nj+1)!=null))
throw new Exception();
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni, nj+1)==null)){
if(nj==0){
if(cases_[3].getX()!=-1){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
}
}
if(nj==1){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(null, ni-1, nj-1);
}
if(nj>=2){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni, nj-2);
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
//si on est en bas de la grille
if(nj==21)throw new Exception();
//si les cases suivantes sont occupées
if((g.lireGrille(ni, nj+1)!=null)
||(g.lireGrille(ni-1, nj+1)!=null)
||(g.lireGrille(ni+1, nj+1)!=null))
throw new Exception();
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni-1, nj+1)==null)
&&(g.lireGrille(ni+1, nj+1)==null)){
if(nj==0){
if(cases_[2].getX()!=-1){
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[1], ni+1, nj+1);
cases_[1].setX(ni+1);
cases_[1].setY(nj+1);
g.setGrille(cases_[3], ni-1, nj+1);
cases_[3].setX(ni-1);
cases_[3].setY(nj+1);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni+1, nj);
}
}
if(nj>=1){
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[1], ni+1, nj+1);
cases_[1].setX(ni+1);
cases_[1].setY(nj+1);
g.setGrille(cases_[3], ni-1, nj+1);
cases_[3].setX(ni-1);
cases_[3].setY(nj+1);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(null, ni-1, nj);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni, nj-1);
}
}
}
}
public void deplacerGauche(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni>0){
if(nj==0){
if((cases_[1].getX()!=-1)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni, nj);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-1, nj-2)==null)){
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(cases_[3], ni-1, nj-2);
cases_[3].setX(ni-1);
cases_[3].setY(nj-2);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-2);
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni>1){
if(nj==0){
if((cases_[0].getX()!=-1)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni-2, nj-1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-2, nj-1);
cases_[1].setX(ni-2);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni, nj);
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni>1){
if(nj==0){
if((cases_[3].getX()!=-1)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni-2, nj-1);
cases_[0].setX(ni-2);
cases_[0].setY(nj-1);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-2, nj-1)==null)
&&(g.lireGrille(ni-1, nj-2)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni-2, nj-1);
cases_[0].setX(ni-2);
cases_[0].setY(nj-1);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni-1, nj-2);
cases_[1].setX(ni-1);
cases_[1].setY(nj-2);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-2);
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni>1){
if(nj==0){
if((cases_[2].getX()!=-1)
&&(g.lireGrille(ni-2, nj)==null)){
g.setGrille(cases_[3], ni-2, nj);
cases_[3].setX(ni-2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni-2, nj)==null)){
g.setGrille(cases_[3], ni-2, nj);
cases_[3].setX(ni-2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni-1, nj-1);
cases_[0].setX(ni-1);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni+1, nj);
}
}
}
}
}
public void deplacerDroite(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni<8){
if(nj==0){
if((cases_[1].getX()!=-1)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj-1)==null)
&&(g.lireGrille(ni+1, nj-2)==null)){
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
g.setGrille(cases_[3], ni+1, nj-2);
cases_[3].setX(ni+1);
cases_[3].setY(nj-2);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-2);
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni<8){
if(nj==0){
if((cases_[0].getX()!=-1)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni+2, nj-1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni+2, nj-1);
cases_[3].setX(ni+2);
cases_[3].setY(nj-1);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni, nj);
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<9){
if(nj==0){
if((cases_[3].getX()!=-1)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni, nj);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+1, nj-2)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni+1, nj-2);
cases_[1].setX(ni+1);
cases_[1].setY(nj-2);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni, nj-2);
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni<8){
if(nj==0){
if((cases_[2].getX()!=-1)
&&(g.lireGrille(ni+2, nj)==null)){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni+2, nj);
cases_[1].setX(ni+2);
cases_[1].setY(nj);
g.setGrille(null, ni-1, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+2, nj)==null)){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[1], ni+2, nj);
cases_[1].setX(ni+2);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni+1, nj-1);
cases_[0].setX(ni+1);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni-1, nj);
}
}
}
}
}
public void rotate(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni>0){
if(nj==0){
if(cases_[1].getX()!=-1){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
cases_[1].setX(-1);
cases_[1].setY(-1);
this.setEtat(1);
return;
}
}
if(nj==1){
if(g.lireGrille(ni-1, nj-1)==null){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
this.setEtat(1);
return;
}
}
if(nj>=2){
if(g.lireGrille(ni-1, nj-1)==null){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-2);
this.setEtat(1);
return;
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(nj==0){
if(cases_[0].getX()!=-1){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
cases_[0].setX(-1);
cases_[0].setY(-1);
this.setEtat(2);
return;
}
}
if(nj==1){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni-1, nj-1);
cases_[0].setX(ni-1);
cases_[0].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
this.setEtat(2);
return;
}
if(nj>=2){
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni-1, nj-1);
cases_[0].setX(ni-1);
cases_[0].setY(nj-1);
g.setGrille(cases_[1], ni, nj-2);
cases_[0].setX(ni);
cases_[0].setY(nj-2);
g.setGrille(null, ni+1, nj-1);
this.setEtat(2);
return;
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<9){
/*if(nj==0){
if(cases_[3].getX()!=-1){
cases_[3].setX(-1);
cases_[3].setX(-1);
}
}*/
if(nj==1){
if(g.lireGrille(ni+1, nj-1)==null){
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj);
this.setEtat(3);
return;
}
}
if(nj>=2){
if(g.lireGrille(ni+1, nj-1)==null){
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[3], ni-1, nj-1);
cases_[3].setX(ni-1);
cases_[3].setY(nj-1);
g.setGrille(cases_[0], ni, nj-2);
g.setGrille(null, ni, nj);
this.setEtat(3);
return;
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(nj==0){
if((cases_[2].getX()!=-1)
&&(g.lireGrille(ni, nj+1)==null)){
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
cases_[3].setX(-1);
cases_[3].setY(-1);
g.setGrille(null, ni-1, nj);
this.setEtat(0);
return;
}
}
if(nj>=1){
if(g.lireGrille(ni, nj+1)==null){
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(null, ni-1, nj);
this.setEtat(0);
return;
}
}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class Thread1 extends Thread implements KeyListener {
private Timer timer_1;
private Figure fig_;
private Figure fig_next;
private JPanel pan_next_fig;
private JPanel pan_grille_;
private JLabel jLabel_1;
private JLabel jLabel_2;
private Grille grille_;
private Grille grille_2;
private int delai_=1000;
private JPanel pan_figure_;
private JPanel jPanel4;
private Thread2 thread_2;
public Thread1(JPanel pan_g, JPanel pan_fig,JLabel jl,
Thread2 th2,Grille g1, Grille g2){
thread_2=th2;
//affichage de la grille
jLabel_1=jl;
grille_=g1;
grille_2=g2;
pan_grille_=grille_.afficheGrille();
pan_grille_.setBounds(0,0,251,551);
pan_g.add(pan_grille_);
pan_grille_.setBackground(Color.black);
fig_=Controle.newFigure();
//next figure
pan_next_fig=pan_fig;
fig_next=Controle.newFigure();
pan_figure_=fig_next.afficheFigure();
pan_next_fig.add(pan_figure_);
pan_figure_.repaint();
pan_figure_.setBounds(0,0,101,101);
pan_figure_.setBackground(Color.black);
}
public Timer getTimer(){
return timer_1;
}
public void setLabel(String s){
jLabel_1.setVisible(true);
jLabel_1.setText(s);
}
public Grille getGrille(){
return grille_;
}
public void run(){
timer_1 = new Timer(delai_, new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Inserer ici le code a repeter
try{
fig_.descendre(grille_);
}
catch (Exception ex) {
if((grille_.lireGrille(4, 0)!=null)
||(grille_.lireGrille(5, 0)!=null)){
jLabel_1.setVisible(true);
//affichage_.setVisible(false);
jLabel_1.setText("GAME OVER");
pan_grille_.add(jLabel_1);
pan_grille_.repaint();
//affichage_.setEnabled(true);
timer_1.stop();
thread_2.getTimer().stop();
thread_2.setLabel("YOU ARE THE WINNER");
//System.out.println("je suis là");
return;
}
//timer.stop();
//Controle.simul_2(grille_,grille_2);
Controle.simul_2(grille_,grille_2);
delai_=Controle.delay(grille_);
timer_1.setDelay(delai_);
pan_grille_.repaint();
fig_=fig_next;
fig_next=Controle.newFigure();
pan_figure_=fig_next.afficheFigure();
pan_next_fig.add(pan_figure_);
pan_figure_.repaint();
pan_figure_.setBounds(0,0,101,101);
pan_figure_.setBackground(Color.black);
}
finally{
pan_grille_.repaint();
//System.out.println("finaly: "+fig_+" "+test);
}
}});
timer_1.start();
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_DOWN)
{timer_1.setDelay(50);}
}
@Override
public void keyReleased(KeyEvent e) {
if(timer_1.isRunning()){
if(e.getKeyCode()==KeyEvent.VK_LEFT)
{fig_.deplacerGauche(grille_);
pan_grille_.repaint();}
else if(e.getKeyCode()==KeyEvent.VK_RIGHT)
{
fig_.deplacerDroite(grille_);
pan_grille_.repaint();
}
else if(e.getKeyCode()==KeyEvent.VK_UP)
{
fig_.rotate(grille_);
pan_grille_.repaint();
}
else if(e.getKeyCode()==KeyEvent.VK_DOWN)
{timer_1.setDelay(delai_);}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class Thread2 extends Thread implements KeyListener {
private Timer timer_1;
private Figure fig_;
private Figure fig_next;
private JPanel pan_next_fig;
private JPanel pan_grille_;
private JLabel jLabel_1;
private JLabel jLabel_2;
private Grille grille_;
private Grille grille_2;
private int delai_=1000;
private JPanel pan_figure_;
private JPanel jPanel4;
private Thread1 thread_1;
public Thread2(JPanel pan_g, JPanel pan_fig,JLabel jl,Thread1 th1,
Grille g1, Grille g2){
thread_1=th1;
//affichage de la grille
jLabel_1=jl;
grille_=g1;
grille_2=g2;
pan_grille_=grille_.afficheGrille();
pan_grille_.setBounds(0,0,251,551);
pan_g.add(pan_grille_);
pan_grille_.setBackground(Color.black);
fig_=Controle.newFigure();
//next figure
fig_next=Controle.newFigure();
pan_figure_=fig_next.afficheFigure();
pan_fig.add(pan_figure_);
pan_next_fig=pan_fig;
pan_figure_.repaint();
pan_figure_.setBounds(0,0,101,101);
pan_figure_.setBackground(Color.black);
}
public Timer getTimer(){
return timer_1;
}
public void setLabel(String s){
jLabel_1.setVisible(true);
jLabel_1.setText(s);
}
public Grille getGrille(){
return grille_;
}
public void run(){
timer_1 = new Timer(delai_, new ActionListener() {
public void actionPerformed(ActionEvent e) {
//Inserer ici le code a repeter
try{
fig_.descendre(grille_);
}
catch (Exception ex) {
if((grille_.lireGrille(4, 0)!=null)
||(grille_.lireGrille(5, 0)!=null)){
jLabel_1.setVisible(true);
//affichage_.setVisible(false);
jLabel_1.setText("GAME OVER");
pan_grille_.add(jLabel_1);
pan_grille_.repaint();
//affichage_.setEnabled(true);
timer_1.stop();
thread_1.getTimer().stop();
thread_1.setLabel("YOU ARE THE WINNER");
//System.out.println("je suis là");
return;
}
//timer.stop();
Controle.simul_2(grille_,grille_2);
//Controle.simul(grille_);
delai_=Controle.delay(grille_);
timer_1.setDelay(delai_);
pan_grille_.repaint();
fig_=fig_next;
fig_next=Controle.newFigure();
pan_figure_=fig_next.afficheFigure();
//jPanel3.add(affichage_fig);
pan_next_fig.add(pan_figure_);
pan_figure_.repaint();
pan_figure_.setBounds(0,0,101,101);
pan_figure_.setBackground(Color.black);
}
finally{
pan_grille_.repaint();
//System.out.println("finaly: "+fig_+" "+test);
}
}});
timer_1.start();
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_D)
{timer_1.setDelay(50);}
}
@Override
public void keyReleased(KeyEvent e) {
if(timer_1.isRunning()){
if(e.getKeyCode()==KeyEvent.VK_S)
{fig_.deplacerGauche(grille_);
pan_grille_.repaint();}
else if(e.getKeyCode()==KeyEvent.VK_F)
{
fig_.deplacerDroite(grille_);
pan_grille_.repaint();
}
else if(e.getKeyCode()==KeyEvent.VK_E)
{
fig_.rotate(grille_);
pan_grille_.repaint();
}
else if(e.getKeyCode()==KeyEvent.VK_D)
{timer_1.setDelay(delai_);}
}
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tetris;
import javax.swing.JPanel;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
/**
*
* @author zero
*/
public class Z extends Figure {
private Case [] cases_;
public Z(){
cases_=new Case[4];
cases_[0]=new Case(-1,-1);
cases_[1]=new Case(-1,-1);
cases_[2]=new Case(-1,-1);
cases_[3]=new Case(-1,-1);
}
public Case getCases(int i){
return cases_[i];
}
public JPanel afficheFigure(){
PanneauFigure pan= new PanneauFigure(this);
return pan;
}
public void descendre(Grille g) throws Exception{
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
//System.out.println("nj ="+nj);
//si on est en bas de la grille
if(nj==21) throw new Exception();
//si les cases suivantes sont occupées
if((g.lireGrille(ni, nj+1)!=null)){
//System.out.println("nj exception ="+nj);
throw new Exception();
}
if((cases_[0].getY()==-1)&&(g.lireGrille(ni, nj)!=null))
throw new Exception();
if((cases_[0].getY()==0)&&(g.lireGrille(ni+1, nj)!=null))
throw new Exception();
//System.out.println("nj ="+nj);
if(nj==0){
if((cases_[0].getY()==0)
&&(g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni, nj+1)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
return;
}
if((cases_[0].getY()==-1)
&&(g.lireGrille(ni, nj)==null)){
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
return;
}
}
if(nj==1){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-1);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni+1, nj-2);
return;
}
}
throw new Exception();
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
//si on est en bas de la grille
if(nj==21)throw new Exception();
//si les cases suivantes sont occupées
if((cases_[2].getX()!=-1)
&&((g.lireGrille(ni, nj+1)!=null)
||(g.lireGrille(ni+1, nj+1)!=null)
||(g.lireGrille(ni-1, nj)!=null)))
throw new Exception();
if(nj==0){
if((cases_[2].getX()!=-1)
&&(g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj+1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[3], ni+1, nj+1);
cases_[3].setX(ni+1);
cases_[3].setY(nj+1);
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj+1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[3], ni+1, nj+1);
cases_[3].setX(ni+1);
cases_[3].setY(nj+1);
g.setGrille(cases_[2], ni, nj+1);
cases_[2].setX(ni);
cases_[2].setY(nj+1);
g.setGrille(cases_[1], ni, nj);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni-1, nj-1);
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
//si on est en bas de la grille
if(nj==21) throw new Exception();
//si les cases suivantes sont occupées
if((g.lireGrille(ni, nj+1)!=null)
||(g.lireGrille(ni+1, nj)!=null))
throw new Exception();
if(nj==0){
if((cases_[3].getX()!=-1)
&&(g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni, nj+1)==null)){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni, nj+1)==null)){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[0], ni+1, nj-1);
cases_[0].setX(ni+1);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-1);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni, nj+1)==null)){
g.setGrille(cases_[3], ni, nj+1);
cases_[3].setX(ni);
cases_[3].setY(nj+1);
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[0], ni+1, nj-1);
cases_[0].setX(ni+1);
cases_[0].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni+1, nj-2);
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
//si on est en bas de la grille
if(nj==21)throw new Exception();
//si les cases suivantes sont occupées
if((cases_[1].getX()!=-1)
&&((g.lireGrille(ni, nj+1)!=null)
||(g.lireGrille(ni+1, nj+1)!=null)
||(g.lireGrille(ni-1, nj)!=null)))
throw new Exception();
if(nj==0){
if((cases_[1].getX()!=-1)
&&(g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj+1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[0], ni+1, nj+1);
cases_[0].setX(ni+1);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj+1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[0], ni+1, nj+1);
cases_[0].setX(ni+1);
cases_[0].setY(nj+1);
g.setGrille(cases_[1], ni, nj+1);
cases_[1].setX(ni);
cases_[1].setY(nj+1);
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni-1, nj-1);
}
}
}
}
public void deplacerGauche(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni>0){
if(nj==0){
if((cases_[0].getX()!=-1)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni, nj);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni, nj-2)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[0].setX(ni-1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni-1);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni, nj-2);
cases_[3].setX(ni);
cases_[3].setY(nj-2);
g.setGrille(null, ni+1, nj-2);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni, nj);
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni>1){
if(nj==0){
if((cases_[2].getX()!=-1)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni-2, nj-1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[2], ni-1, nj);
cases_[2].setX(ni-1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni, nj);
cases_[3].setX(ni);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni-2, nj-1);
cases_[0].setX(ni-2);
cases_[0].setY(nj-1);
g.setGrille(cases_[1], ni-1, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni, nj-1);
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni>0){
if(nj==0){
if((cases_[3].getX()!=-1)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[0], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni, nj);
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj)==null)
&&(g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni, nj-2)==null)){
g.setGrille(cases_[3], ni-1, nj);
cases_[3].setX(ni-1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni-1);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni, nj-1);
cases_[1].setX(ni);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni, nj-2);
cases_[0].setX(ni);
cases_[0].setY(nj-2);
g.setGrille(null, ni+1, nj-2);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni, nj);
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni>1){
if(nj==0){
if((cases_[1].getX()!=-1)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(null, ni+1, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni-2, nj-1)==null)
&&(g.lireGrille(ni-1, nj)==null)){
g.setGrille(cases_[1], ni-1, nj);
cases_[1].setX(ni-1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni, nj);
cases_[0].setX(ni);
cases_[0].setY(nj);
g.setGrille(cases_[3], ni-2, nj-1);
cases_[3].setX(ni-2);
cases_[3].setY(nj-1);
g.setGrille(cases_[2], ni-1, nj-1);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(null, ni+1, nj);
g.setGrille(null, ni, nj-1);
}
}
}
}
}
public void deplacerDroite(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if((ni<8)&&(ni>=0)){
if(nj==0){
if((cases_[0].getX()!=-1)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni+2, nj-1);
cases_[2].setX(ni+2);
cases_[2].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj-1)==null)
&&(g.lireGrille(ni+2, nj-2)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[0].setX(ni+1);
cases_[0].setY(nj);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj-1);
g.setGrille(cases_[2], ni+2, nj-1);
cases_[2].setX(ni+2);
cases_[2].setY(nj-1);
g.setGrille(cases_[3], ni+2, nj-2);
cases_[3].setX(ni+2);
cases_[3].setY(nj-2);
g.setGrille(null, ni+1, nj-2);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[2].getX()!=-1){
ni=cases_[2].getX();
nj=cases_[2].getY();
}
if(ni<8){
if(nj==0){
if((cases_[2].getX()!=-1)
&&(g.lireGrille(ni+2, nj)==null)){
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+2, nj);
cases_[3].setX(ni+2);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+2, nj)==null)){
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+2, nj);
cases_[3].setX(ni+2);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni, nj-1);
cases_[0].setX(ni);
cases_[0].setY(nj-1);
g.setGrille(cases_[1], ni+1, nj-1);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-1, nj-1);
}
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<8){
if(nj==0){
if((cases_[3].getX()!=-1)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[0], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj==1){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj-1)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni+2, nj-1);
cases_[1].setX(ni+2);
cases_[1].setY(nj-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
}
}
if(nj>=2){
if((g.lireGrille(ni+1, nj)==null)
&&(g.lireGrille(ni+2, nj-1)==null)
&&(g.lireGrille(ni+2, nj-2)==null)){
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj-1);
g.setGrille(cases_[1], ni+2, nj-1);
cases_[1].setX(ni+2);
cases_[1].setY(nj-1);
g.setGrille(cases_[0], ni+2, nj-2);
cases_[0].setX(ni+2);
cases_[0].setY(nj-2);
g.setGrille(null, ni+1, nj-2);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(ni<8){
if(nj==0){
if((cases_[1].getX()!=-1)
&&(g.lireGrille(ni+2, nj)==null)){
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni+2, nj);
cases_[0].setX(ni+2);
cases_[0].setY(nj);
g.setGrille(null, ni, nj);
}
}
if(nj>=1){
if((g.lireGrille(ni+1, nj-1)==null)
&&(g.lireGrille(ni+2, nj)==null)){
g.setGrille(cases_[1], ni+1, nj);
cases_[1].setX(ni+1);
cases_[1].setY(nj);
g.setGrille(cases_[0], ni+2, nj);
cases_[0].setX(ni+2);
cases_[0].setY(nj);
g.setGrille(cases_[3], ni, nj-1);
cases_[3].setX(ni);
cases_[3].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-1);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-1, nj-1);
}
}
}
}
}
public void rotate(Grille g){
if(this.getEtat()==0){
int ni=4;
int nj=0;
if(cases_[0].getX()!=-1){
ni=cases_[0].getX();
nj=cases_[0].getY();
}
if(ni>0){
if(nj==0){
if((cases_[0].getY()!=-1)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
cases_[0].setX(-1);
cases_[0].setY(-1);
this.setEtat(1);
return;
}
}
if(nj==1){
if((g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni-1, nj-1);
cases_[0].setX(ni-1);
cases_[0].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
this.setEtat(1);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni-1, nj-1)==null)
&&(g.lireGrille(ni+1, nj)==null)){
g.setGrille(cases_[2], ni, nj);
cases_[2].setX(ni);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj);
cases_[3].setX(ni+1);
cases_[3].setY(nj);
g.setGrille(cases_[0], ni-1, nj-1);
cases_[0].setX(ni-1);
cases_[0].setY(nj-1);
g.setGrille(null, ni+1, nj-1);
g.setGrille(null, ni+1, nj-2);
this.setEtat(1);
return;
}
}
}
}
if(this.getEtat()==1){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(nj==0){
if((cases_[3].getX()!=-1)
&&(g.lireGrille(ni-2, nj)==null)){
g.setGrille(cases_[3], ni-2, nj);
cases_[3].setX(ni-2);
cases_[3].setY(nj);
cases_[2].setX(-1);
cases_[2].setY(-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-1, nj);
this.setEtat(2);
return;
}
}
if(nj==1){
if(g.lireGrille(ni-2, nj)==null){
g.setGrille(cases_[3], ni-2, nj);
cases_[3].setX(ni-2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-2, nj-1);
cases_[2].setX(ni-2);
cases_[2].setY(nj-1);
cases_[0].setX(-1);
cases_[0].setY(-1);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-1, nj);
this.setEtat(2);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni-2, nj)==null)
&&(g.lireGrille(ni-1, nj-2)==null)){
g.setGrille(cases_[3], ni-2, nj);
cases_[3].setX(ni-2);
cases_[3].setY(nj);
g.setGrille(cases_[2], ni-2, nj-1);
cases_[2].setX(ni-2);
cases_[2].setY(nj-1);
g.setGrille(cases_[0], ni-1, nj-2);
cases_[0].setX(ni-1);
cases_[0].setY(nj-2);
g.setGrille(null, ni, nj);
g.setGrille(null, ni-1, nj);
this.setEtat(2);
return;
}
}
}
if(this.getEtat()==2){
int ni=4;
int nj=0;
if(cases_[3].getX()!=-1){
ni=cases_[3].getX();
nj=cases_[3].getY();
}
if(ni<9){
/*if(nj==0){
if((cases_[3].getY()!=-1)
&&(g.lireGrille(ni, nj)))
}*/
if(nj==1){
if(g.lireGrille(ni+2, nj-1)==null){
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
cases_[2].setX(-1);
cases_[2].setY(-1);
cases_[3].setX(-1);
cases_[3].setY(-1);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
this.setEtat(3);
return;
}
}
if(nj>=2){
if((g.lireGrille(ni+2, nj-1)==null)
&&(g.lireGrille(ni, nj-2)==null)){
g.setGrille(cases_[0], ni+2, nj-1);
cases_[0].setX(ni+2);
cases_[0].setY(nj-1);
g.setGrille(cases_[2], ni+1, nj-2);
cases_[2].setX(ni+1);
cases_[2].setY(nj-2);
g.setGrille(cases_[3], ni, nj-2);
cases_[3].setX(ni);
cases_[3].setY(nj-2);
g.setGrille(null, ni, nj-1);
g.setGrille(null, ni, nj);
this.setEtat(3);
return;
}
}
}
}
if(this.getEtat()==3){
int ni=4;
int nj=0;
if(cases_[1].getX()!=-1){
ni=cases_[1].getX();
nj=cases_[1].getY();
}
if(nj<21){
if(nj==0){
if((cases_[1].getY()!=-1)
&&(g.lireGrille(ni, nj+1)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
this.setEtat(0);
return;
}
}
if(nj>=1){
if((g.lireGrille(ni, nj+1)==null)
&&(g.lireGrille(ni+1, nj-1)==null)){
g.setGrille(cases_[0], ni, nj+1);
cases_[0].setX(ni);
cases_[0].setY(nj+1);
g.setGrille(cases_[2], ni+1, nj);
cases_[2].setX(ni+1);
cases_[2].setY(nj);
g.setGrille(cases_[3], ni+1, nj-1);
cases_[3].setX(ni+1);
cases_[3].setY(nj-1);
g.setGrille(null, ni-1, nj-1);
g.setGrille(null, ni, nj-1);
this.setEtat(0);
return;
}
}
}
}
}
}
Conclusion :
Interface graphique
L?interface reste proche de la version à un seul joueur mais deux zones de jeu doivent être représentées simultanément et la partie score n?ayant plus aucune utilité disparaîtra.
Gameplay
A deux joueurs, le Gameplay de chacun est évidement le même que celui à un joueur (voir le paragraphe Gameplay à un joueur). Les boutons, dont le nombre est évidemment doublé, sont paramétrables (cf. le paragraphe suivant). La touche Échap du clavier permet, comme pour la version à un joueur, de mettre le jeu en pause et d?afficher le même choix de possibilité.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.