begin process at 2010 02 09 18:50:55
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Api

 > JAVANOID CASSE BRIQUE EN JAVA PROGRAMMATION ORIENTÉ OBJET

JAVANOID CASSE BRIQUE EN JAVA PROGRAMMATION ORIENTÉ OBJET


 Information sur la source

Note :
6,5 / 10 - par 4 personnes
6,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Api Classé sous :jeu, arkanoid, casse, brique Niveau :Débutant Date de création :20/06/2003 Date de mise à jour :20/06/2003 01:19:35 Vu / téléchargé :20 416 / 970

Auteur : spontex

Ecrire un message privé
Commentaire sur cette source (32)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
        Projet presenté en deuxieme année de deug de cette année, il n as pas pour vocation d etre rempli de plein de niveau etc.. mais il a l humble pretention d etre assez portatif, plein d options (laser, multiballe) et  modifier ce programme est en fait assez simple.
        Je sais que de nombreux projet du meme type on etait edités ici mais je pense que le mien ressemble plus a ce que l on pourrait s attendre avec un language orienté objet.
        Enjoy your self.

Source

  • import java.awt.*;
  • import java.awt.event.*;
  • import java.applet.Applet;
  • import java.awt.Graphics;
  • import java.awt.Point;
  • import java.awt.Event;
  • import java.lang.Math;
  • import java.util.*;
  • import java.io.*;
  • public class Javanoid extends Applet implements Runnable{
  • public static int RAYON=10;
  • public static int RAPIDITE=5;
  • public static int LARGEUR=500;
  • public static int HAUTEUR=600;
  • public Cadre tableau;
  • public ListeBoule listeballe;
  • public Boule balle;
  • public Barre tige;
  • public Level level;
  • public Brique brique;
  • public Option options;
  • public Bonus GetBonus,SetBonus;
  • public ListeBonus listebonus;
  • public ListeLaser listelaser;
  • public Laser laser;
  • public static int Score;
  • public boolean ToucheBarre;
  • public Thread runner= new Thread(this);
  • public TracerSouris s=new TracerSouris();
  • public void init()
  • {
  • tableau=new Cadre(80,10);
  • tige=new Barre(220,tableau);
  • balle=new Boule(tige,1,1);
  • listeballe=new ListeBoule();
  • listelaser=new ListeLaser();
  • level=new Level(tableau.Getx()+(LARGEUR-HAUTEUR/2)/2,tableau.Gety()+(2*HAUTEUR/3-LARGEUR/2)/2);
  • options=new Option(tableau.GetBordDroit(),tableau.GetBordHaut(),tableau.GetLargeur()/3,tableau.GetHauteur());
  • options.SetColler();
  • listebonus=new ListeBonus();
  • listeballe.insererEnTete(balle);
  • level.Level2();
  • ToucheBarre=true;
  • setBackground(Color.white);
  • addMouseMotionListener(s);
  • addMouseListener(s);
  • runner.start();
  • }
  • public void run(){
  • Graphics g=getGraphics();
  • if(!level.LevelFini()){
  • if(options.GetVie()>=0){
  • if(!listeballe.estVide()){
  • if(!(options.GetColler() && ToucheBarre) || listeballe.ContientPlusDuneBoule()){
  • if(options.GetDoubleBarre() && tige.GetLargeur()<(tableau.GetLargeur()/5)){
  • options.NoDoubleBarre();
  • tige=new Barre(tige.Getx(),tige.Gety(),tige.GetHauteur(),tige.GetLargeur()*2);
  • }else {options.NoDoubleBarre();}
  • if(options.GetMultiBalle()){
  • options.NoMultiballe();
  • balle=new Boule(tige,1,1);
  • listeballe.insererEnTete(balle);}
  • ToucheBarre=listeballe.TestBarre(tige);
  • listeballe.TestFall(tige);
  • listeballe.TestCadre(tableau);
  • if(options.GetInvincible()){brique=listeballe.getPremier().TestBriqueInvincible(level,Score);
  • listeballe.TestBriqueInvincible(level,Score);}
  • else { brique=listeballe.getPremier().TestBrique(level,Score);
  • listeballe.TestBrique(level,Score);
  • }
  • GetBonus=listebonus.TestBarre(tige);
  • options.Bonus_to_Option(GetBonus);
  • listebonus.Fall(tige);
  • if(brique!=null){
  • SetBonus=new Bonus(brique);
  • SetBonus.Random();
  • listebonus.insererEnQueue(SetBonus);
  • options.addScore();
  • }
  • listelaser.TestBrique(level,Score);
  • listelaser.TestCadre(tableau);
  • listebonus.Move();
  • listeballe.Move();
  • listelaser.Move();
  • listelaser.Dessiner(g);
  • listeballe.Dessiner(g);
  • listebonus.Dessiner(g);
  • try {runner.sleep(30/RAPIDITE);}
  • catch(InterruptedException e){};
  • repaint();
  • }} else {this.Vieperdu(g); }
  • }
  • }else{ this.DessinerFin(g);}
  • }
  • public void update(Graphics g) {
  • paint(g);
  • }
  • public void paint(Graphics g){
  • String tmp,tmp2;
  • tableau.Dessiner(g);
  • tige.Dessiner(g);
  • listebonus.EnDessiner(g);
  • level.Dessiner(g);
  • listeballe.EnDessiner(g);
  • options.EnDessiner(g);
  • options.Dessiner(g);
  • listelaser.EnDessiner(g);
  • if(options.GetColler() && ToucheBarre){listeballe.Dessiner(g);}
  • this.run();
  • }
  • public void Vieperdu(Graphics g){
  • tige.EnDessiner(g);
  • tige=new Barre(220,tableau);
  • listelaser=new ListeLaser();
  • balle=new Boule(tige,1,1);
  • listeballe.insererEnTete(balle);
  • options.supVie();
  • ToucheBarre=true;
  • options.Init();}
  • public void DessinerFin(Graphics g){
  • removeMouseMotionListener(s);
  • removeMouseListener(s);
  • g.setColor(Color.white);
  • g.fillRect(tableau.Getx(),tableau.Gety(),tableau.GetLargeur()+options.GetCadre().GetLargeur()+1,tige.GetBordBas());
  • g.setColor(Color.black);
  • g.drawString("Score : "+(options.GetScore()*100+options.GetVie()*1000),tableau.GetBordGauche()+(tableau.GetLargeur()/2),tableau.GetBordHaut()+(tableau.GetHauteur()/2));
  • }
  • class TracerSouris extends MouseAdapter implements MouseMotionListener{
  • public void mouseDragged(MouseEvent e){}
  • public void mouseMoved(MouseEvent e){
  • int ancvaleur=tige.GetBordGauche();
  • int tmp=e.getX();
  • if(tmp<=tableau.GetBordGauche()){tmp=tableau.GetBordGauche();}
  • if(tmp+tige.GetLargeur()>=tableau.GetBordDroit()){tmp=tableau.GetBordDroit()-tige.GetLargeur();}
  • Graphics g=getGraphics();
  • tige.EnDessiner(g);
  • tige.Givex(tmp);
  • repaint();
  • if(options.GetColler() && ToucheBarre){
  • listeballe.EnDessiner(g);
  • listeballe.getPremier().Move(tmp-ancvaleur,0);
  • }
  • }
  • public void mouseClicked(MouseEvent e){
  • Graphics g=getGraphics();
  • if(options.GetColler()==true && ToucheBarre) options.DeColler();
  • if(options.GetLaser()){laser=new Laser(tige);listelaser.insererEnTete(laser);}
  • repaint();}
  • }
  • }
  • class ListeLaser{
  • private Chainon premier;
  • private class Chainon{
  • private Laser data;
  • private Chainon suivant;
  • }
  • public ListeLaser(){
  • premier=null;}
  • public boolean estVide(){
  • return (premier==null);}
  • public Laser getPremier(){
  • if(estVide())
  • throw new NoSuchElementException();
  • return premier.data;
  • }
  • public void insererEnTete(Laser data){
  • Chainon nvChn=new Chainon();
  • nvChn.data=data;
  • Chainon nvChn1=new Chainon();
  • nvChn1.data=new Laser(data);
  • nvChn1.suivant=premier;
  • nvChn.suivant=nvChn1;
  • premier=nvChn;}
  • public void insererEnQueue(Laser data){
  • Chainon curseur=new Chainon();
  • Chainon nvChn=new Chainon();
  • nvChn.data=data;
  • curseur=premier;
  • if(estVide()){this.insererEnTete(data);}
  • else{
  • while(curseur.suivant!=null){
  • curseur=curseur.suivant;}
  • curseur.suivant=nvChn;}
  • }
  • public void retrancherEnTete(){
  • if(estVide())
  • throw new NoSuchElementException();
  • else{premier=premier.suivant;}}
  • public void supprimerElt(Chainon laser){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • if(curseur==null)
  • throw new NoSuchElementException();
  • if(curseur.data.Getx()==laser.data.Getx()){this.retrancherEnTete();}
  • else{
  • while(curseur.suivant.data.Getx()!=laser.data.Getx() && curseur.suivant.data.Gety()!=laser.data.Gety() && curseur.suivant!=null){
  • curseur=curseur.suivant;}
  • curseur.suivant=curseur.suivant.suivant;}
  • }
  • public void TestBrique(Level level,int score){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • if(curseur.data.TestBrique(level,score)){supprimerElt(curseur);}
  • curseur=curseur.suivant;
  • }
  • }
  • public void TestCadre(Cadre tableau){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • if(curseur.data.TestCadre(tableau)){supprimerElt(curseur);}
  • curseur=curseur.suivant;
  • }
  • }
  • public void Move(){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.Move();
  • curseur=curseur.suivant;
  • }
  • }
  • public void Dessiner(Graphics g){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.Dessiner(g);
  • curseur=curseur.suivant;
  • }
  • }
  • public void EnDessiner(Graphics g){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.EnDessiner(g);
  • curseur=curseur.suivant;
  • }
  • }
  • }
  • class Laser{
  • private int x;
  • private int y;
  • private int largeur;
  • private int hauteur;
  • public Laser(int x,int y,int largeur,int hauteur){
  • this.x=x;
  • this.y=y;
  • this.largeur=largeur;
  • this.hauteur=hauteur;
  • }
  • public Laser(Barre tige){
  • this.x=tige.Getx();
  • this.y=tige.Gety();
  • this.largeur=tige.GetLargeur()/20;
  • this.hauteur=tige.GetHauteur();}
  • public Laser(Laser laser){
  • this.x=laser.Getx()+(19*laser.GetLargeur());
  • this.y=laser.Gety();
  • this.largeur=laser.GetLargeur();
  • this.hauteur=laser.GetHauteur();}
  • public int Getx(){
  • return this.x;}
  • public int Gety(){
  • return this.y;}
  • public int GetHauteur(){
  • return this.hauteur;}
  • public int GetLargeur(){
  • return this.largeur;}
  • public void Move(){
  • this.y=this.y-2;}
  • public void Move(int y){
  • this.y=this.y-y;}
  • public boolean TestBrique(Level level,int score){
  • int i=0,j=0;
  • if(this.Getx()+this.largeur>=level.GetBordGauche() && this.Getx()-this.largeur<=level.GetBordDroit() && this.Gety()-this.largeur<=level.GetBordBas() && this.Gety()+this.largeur>=level.GetBordHaut()){
  • j= (this.Getx()-level.GetBordGauche())/(level.GetMatrice()[0][0].GetLargeur()+1);
  • i= (this.Gety()-level.GetBordHaut())/(level.GetMatrice()[0][0].GetHauteur()+1);
  • if(i<level.GetMatrice().length){
  • if(j<level.GetMatrice()[i].length){
  • if(level.GetMatrice()[i][j].GetExiste()){
  • level.GetMatrice()[i][j].Casser();
  • ++score;return true;}
  • }
  • }
  • }
  • return false;
  • }
  • public boolean TestCadre(Cadre tableau){
  • if(this.Gety()<=tableau.GetBordHaut()){return true;}
  • return false;}
  • public void Dessiner(Graphics g){
  • g.setColor(Color.red);
  • g.fillRect(this.x,this.y,this.largeur,this.hauteur);}
  • public void EnDessiner(Graphics g){
  • g.setColor(Color.white);
  • g.fillRect(this.x,this.y,this.largeur,this.hauteur);}
  • }
  • class ListeBoule {
  • private Chainon premier;
  • private class Chainon{
  • private Boule data;
  • private Chainon suivant;
  • }
  • public ListeBoule(){
  • premier=null;}
  • public boolean estVide(){
  • return (premier==null);}
  • public boolean ContientPlusDuneBoule(){
  • if(estVide()){return false;}
  • if(premier.suivant==null){return false;}
  • return true;}
  • public Boule getPremier(){
  • if(estVide())
  • throw new NoSuchElementException();
  • return premier.data;
  • }
  • public void insererEnTete(Boule data){
  • Chainon nvChn=new Chainon();
  • nvChn.data=data;
  • nvChn.suivant=premier;
  • premier=nvChn;}
  • public void insererEnQueue(Boule data){
  • Chainon curseur=new Chainon();
  • Chainon nvChn=new Chainon();
  • nvChn.data=data;
  • curseur=premier;
  • if(estVide()){this.insererEnTete(data);}
  • else{
  • while(curseur.suivant!=null){
  • curseur=curseur.suivant;}
  • curseur.suivant=nvChn;}
  • }
  • public void retrancherEnTete(){
  • if(estVide())
  • throw new NoSuchElementException();
  • else{premier=premier.suivant;}}
  • public void supprimerElt(Chainon balle){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • if(curseur==null)
  • throw new NoSuchElementException();
  • if(curseur.data.Getx()==balle.data.Getx()){this.retrancherEnTete();}
  • else{
  • while(curseur.suivant.data.Getx()!=balle.data.Getx() && curseur.suivant.data.Gety()!=balle.data.Gety() && curseur.suivant!=null){
  • curseur=curseur.suivant;}
  • curseur.suivant=curseur.suivant.suivant;}
  • }
  • public void TestFall(Barre tige){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • if(curseur.data.TestFall(tige)){this.supprimerElt(curseur);}
  • curseur=curseur.suivant;
  • }
  • }
  • public boolean TestBarre(Barre tige){
  • boolean touche=false;
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • if(curseur==premier){touche=curseur.data.TestBarre(tige);}
  • else{curseur.data.TestBarre(tige);}
  • curseur=curseur.suivant;
  • }
  • return touche;
  • }
  • public void TestBrique(Level level,int score){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.TestBrique(level,score);
  • curseur=curseur.suivant;
  • }
  • }
  • public void TestCadre(Cadre tableau){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.TestCadre(tableau);
  • curseur=curseur.suivant;
  • }
  • }
  • public void TestBriqueInvincible(Level level,int score){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.TestBriqueInvincible(level,score);
  • curseur=curseur.suivant;
  • }
  • }
  • public void Move(){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.Move();
  • curseur=curseur.suivant;
  • }
  • }
  • public void Dessiner(Graphics g){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.Dessiner(g);
  • curseur=curseur.suivant;
  • }
  • }
  • public void EnDessiner(Graphics g){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.EnDessiner(g);
  • curseur=curseur.suivant;
  • }
  • }
  • }
  • class Option{
  • public static int RAYON=10;
  • public static int RAPIDITE=5;
  • public static int LARGEUR=500;
  • public static int HAUTEUR=600;
  • private boolean invincible;
  • private boolean doublebarre;
  • private boolean multiballe;
  • private int vie;
  • private boolean laser;
  • private boolean coller;
  • private int Score;
  • private Cadre cadre;
  • public Option(){
  • this.cadre=new Cadre();
  • this.invincible=false;
  • this.doublebarre=false;
  • this.multiballe=false;
  • this.vie=3;
  • this.laser=false;
  • this.coller=false;
  • this.Score=0;
  • }
  • public Option(int x,int y,int largeur,int hauteur){
  • this.cadre=new Cadre(x,y,largeur,hauteur);
  • this.invincible=false;
  • this.doublebarre=false;
  • this.multiballe=false;
  • this.vie=3;
  • this.laser=false;
  • this.coller=false;
  • this.Score=0;
  • }
  • public void Init(){
  • this.invincible=false;
  • this.doublebarre=false;
  • this.multiballe=false;
  • this.laser=false;
  • this.coller=true;
  • }
  • public Cadre GetCadre(){
  • return this.cadre;}
  • public int GetVie(){
  • return this.vie;}
  • public int GetScore(){
  • return this.Score;}
  • public boolean GetMultiBalle(){
  • return this.multiballe;}
  • public boolean GetInvincible(){
  • return this.invincible;}
  • public boolean GetDoubleBarre(){
  • return this.doublebarre;}
  • public boolean GetLaser(){
  • return this.laser;}
  • public boolean GetColler(){
  • return this.coller;}
  • public void DeColler(){
  • this.coller=false;}
  • public void SetCadre(int x,int y,int largeur,int hauteur){
  • this.cadre=new Cadre(x,y,largeur,hauteur);}
  • public void SetVie(int x){
  • this.vie=x;}
  • public void addVie(){
  • ++this.vie;}
  • public void supVie(){
  • --this.vie;}
  • public void SetScore(int x){
  • this.Score=x;}
  • public void addScore(){
  • ++this.Score;}
  • public void addScore(int x){
  • this.Score=this.Score+x;}
  • public void SetMultiballe(){
  • this.multiballe=true;}
  • public void NoMultiballe(){
  • this.multiballe=false;}
  • public void SetInvincible(){
  • this.invincible=true;}
  • public void SetDoubleBarre(){
  • this.doublebarre=true;}
  • public void NoDoubleBarre(){
  • this.doublebarre=false;}
  • public void NoLaser(){
  • this.laser=false;}
  • public void SetLaser(){
  • this.laser=true;}
  • public void SetColler(){
  • this.coller=true;}
  • public void Bonus_to_Option(Bonus bonus){
  • if(bonus.Getcoller()){this.SetColler();}
  • if(bonus.Getmultiballe()){this.SetMultiballe();}
  • if(bonus.Getlaser()){this.SetLaser();}
  • if(bonus.Getvie()){this.addVie();}
  • if(bonus.Getmort()){this.supVie();}
  • if(bonus.Getinvincible()){this.SetInvincible();}
  • if(bonus.Getdoublebarre()){this.SetDoubleBarre();}
  • }
  • public void Dessiner(Graphics g){
  • g.setColor(Color.black);
  • this.cadre.Dessiner(g);
  • g.drawString("Score : "+this.Score*100,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/20));
  • g.drawString("Vie : "+this.vie,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/10));
  • g.drawString("Coller : "+this.coller,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/5));
  • g.drawString("Invincible : "+this.invincible,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),20+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/5));
  • g.drawString("Laser : "+this.laser,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),40+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/5));
  • g.drawString("doubleBarre : "+this.doublebarre,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),60+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/5));
  • g.setColor(Color.magenta);
  • g.drawString("Invincible ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
  • g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);
  • g.setColor(Color.red);
  • g.drawString("Laser ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),20+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
  • g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 20+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);
  • g.setColor(Color.orange);
  • g.drawString("Multiballe ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),40+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
  • g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 40+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);
  • g.setColor(Color.pink);
  • g.drawString("Vie ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),60+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
  • g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 60+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);
  • g.setColor(Color.blue);
  • g.drawString("BoubleBarre ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),80+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
  • g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 80+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);
  • g.setColor(Color.green);
  • g.drawString("Coller ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),100+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
  • g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 100+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);
  • g.setColor(Color.black);
  • g.drawString("Mort ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),120+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
  • g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 120+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);
  • }
  • public void EnDessiner(Graphics g){
  • g.setColor(Color.white);
  • g.fillRect(this.cadre.GetBordGauche()+1,this.cadre.GetBordHaut()+1,this.cadre.GetLargeur()-2,this.cadre.GetHauteur()/3);
  • }
  • }
  • class ListeBonus {
  • private Chainon premier;
  • private class Chainon{
  • private Bonus data;
  • private Chainon suivant;
  • }
  • public ListeBonus(){
  • premier=null;}
  • public boolean estVide(){
  • return (premier==null);}
  • public Bonus getPremier(){
  • if(estVide())
  • throw new NoSuchElementException();
  • return premier.data;
  • }
  • public void insererEnTete(Bonus data){
  • Chainon nvChn=new Chainon();
  • nvChn.data=data;
  • nvChn.suivant=premier;
  • premier=nvChn;}
  • public void insererEnQueue(Bonus data){
  • Chainon curseur=new Chainon();
  • Chainon nvChn=new Chainon();
  • nvChn.data=data;
  • curseur=premier;
  • if(estVide()){this.insererEnTete(data);}
  • else{
  • while(curseur.suivant!=null){
  • curseur=curseur.suivant;}
  • curseur.suivant=nvChn;}
  • }
  • public void retrancherEnTete(){
  • if(estVide())
  • throw new NoSuchElementException();
  • else{premier=premier.suivant;}}
  • public void supprimerElt(Chainon bonus){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • if(curseur==null)
  • throw new NoSuchElementException();
  • if(curseur.data.Getx()==bonus.data.Getx()){this.retrancherEnTete();}
  • else{
  • while(curseur.suivant.data.Getx()!=bonus.data.Getx() && curseur.suivant.data.Gety()!=bonus.data.Gety() && curseur.suivant!=null){
  • curseur=curseur.suivant;}
  • curseur.suivant=curseur.suivant.suivant;}
  • }
  • public void Fall(Barre tige){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • if(curseur.data.TestFall(tige)){this.supprimerElt(curseur);}
  • curseur=curseur.suivant;
  • }
  • }
  • public Bonus TestBarre(Barre tige){
  • Bonus pasdebonus=new Bonus(0,0);
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • if(curseur.data.TestBarre(tige)){this.supprimerElt(curseur);return curseur.data;}
  • curseur=curseur.suivant;
  • }
  • return pasdebonus;
  • }
  • public void Move(){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.Move();
  • curseur=curseur.suivant;
  • }
  • }
  • public void Dessiner(Graphics g){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.Dessiner(g);
  • curseur=curseur.suivant;
  • }
  • }
  • public void EnDessiner(Graphics g){
  • Chainon curseur=new Chainon();
  • curseur=premier;
  • while(curseur!=null){
  • curseur.data.EnDessiner(g);
  • curseur=curseur.suivant;
  • }
  • }
  • }
  • class Bonus{
  • public static int RAYON=10;
  • public static int RAPIDITE=5;
  • public static int LARGEUR=500;
  • public static int HAUTEUR=600;
  • private int x;
  • private int y;
  • private int r;
  • private boolean invincible;
  • private boolean doublebarre;
  • private boolean multiballe;
  • private boolean vie;
  • private boolean mort;
  • private boolean laser;
  • private boolean coller;
  • public Bonus(int x,int y){
  • this.x=x;
  • this.y=y;
  • this.r=RAYON;
  • this.invincible=false;
  • this.doublebarre=false;
  • this.multiballe=false;
  • this.vie=false;
  • this.mort=false;
  • this.laser=false;
  • this.coller=false;
  • }
  • public Bonus(Brique brique){
  • this.x=brique.Getx()+(brique.GetLargeur()/2);
  • this.y=brique.Gety()+(brique.GetHauteur()/2);
  • this.r=RAYON;
  • this.invincible=false;
  • this.doublebarre=false;
  • this.multiballe=false;
  • this.vie=false;
  • this.mort=false;
  • this.laser=false;
  • this.coller=false;
  • }
  • public void Init(){
  • this.invincible=false;
  • this.doublebarre=false;
  • this.multiballe=false;
  • this.vie=false;
  • this.mort=false;
  • this.laser=false;
  • this.coller=false;
  • }
  • public int Getx(){
  • return this.x;}
  • public int Gety(){
  • return this.y;}
  • public int GetRayon(){
  • return this.r;}
  • public boolean Getinvincible(){
  • return this.invincible;}
  • public boolean Getdoublebarre(){
  • return this.doublebarre;}
  • public boolean Getmultiballe(){
  • return this.multiballe;}
  • public boolean Getvie(){
  • return this.vie;}
  • public boolean Getmort(){
  • return this.mort;}
  • public boolean Getlaser(){
  • return this.laser;}
  • public boolean Getcoller(){
  • return this.coller;}
  • public void Setinvincible(){
  • this.invincible=!this.invincible;}
  • public void Setdoublebarre(){
  • this.doublebarre=!this.doublebarre;}
  • public void Setmultiballe(){
  • this.multiballe=!this.multiballe;}
  • public void Setvie(){
  • this.vie=!this.vie;}
  • public void Setlaser(){
  • this.laser=!this.laser;}
  • public void Setcoller(){
  • this.coller=!this.coller;}
  • public void Setx(int x){
  • this.x=x;}
  • public void Sety(int y){
  • this.y=y;}
  • public void Move(){
  • this.y=this.y+(this.r/5);}
  • public void Move(int y){
  • this.y=this.y+y;}
  • public void Move(int x,int y){
  • this.x=this.x+x;
  • this.y=this.y+y;}
  • public boolean TestFall(Barre tige){
  • if(this.Gety()>=tige.Gety()){return true;}
  • return false;
  • }
  • public boolean TestBarre(Barre tige){
  • if(this.Gety()+this.r>=tige.GetBordHaut() && this.Getx()+(this.r/2)>=(tige.GetBordGauche()) && this.Getx()+(this.r/2)<=(tige.GetBordDroit()))
  • {return true;}
  • return false;
  • }
  • public void Random(){
  • int tmp;
  • Random rnd = new Random( );
  • tmp=rnd.nextInt()%7;
  • switch (tmp){
  • case 0:
  • this.vie=true;
  • break;
  • case 1:
  • this.invincible=true;
  • break;
  • case 2:
  • this.doublebarre=true;
  • break;
  • case 3:
  • this.multiballe=true;
  • break;
  • case 4:
  • this.mort=true;
  • break;
  • case 5:
  • this.coller=true;
  • break;
  • case 6:
  • this.laser=true;
  • break;
  • default:;
  • }
  • }
  • public void Dessiner(Graphics g){
  • if(this.vie){g.setColor(Color.pink);}
  • if(this.mort){g.setColor(Color.black);}
  • if(this.multiballe){g.setColor(Color.orange);}
  • if(this.coller){g.setColor(Color.green);}
  • if(this.laser){g.setColor(Color.red);}
  • if(this.doublebarre){g.setColor(Color.blue);}
  • if(this.invincible){g.setColor(Color.magenta);}
  • if(this.vie || this.mort || this.multiballe || this.coller || this.laser || this.doublebarre || this.invincible)
  • {g.fillOval(this.x, this.y,this.r,this.r);}
  • }
  • public void EnDessiner(Graphics g){
  • g.setColor(Color.white);
  • if(this.vie || this.mort || this.multiballe || this.coller || this.laser || this.doublebarre || this.invincible){
  • g.fillOval(this.x, this.y,this.r,this.r);}
  • }
  • }
  • class Brique{
  • public static int RAYON=10;
  • public static int RAPIDITE=5;
  • public static int LARGEUR=500;
  • public static int HAUTEUR=600;
  • private int x;
  • private int y;
  • private boolean existe;
  • private int Largeur;
  • private int Hauteur;
  • public Brique(int x,int y,int largeur,int hauteur,boolean bool){
  • this.x=x;
  • this.y=y;
  • this.Largeur=largeur;
  • this.Hauteur=hauteur;
  • this.existe=bool;
  • }
  • public Brique(int x,int y,int largeur,int hauteur){
  • this.x=x;
  • this.y=y;
  • this.Largeur=largeur;
  • this.Hauteur=hauteur;
  • this.existe=true;
  • }
  • public Brique(int x,int y){
  • this.x=x;
  • this.y=y;
  • this.Largeur=(HAUTEUR/20)-1;
  • this.Hauteur=(LARGEUR/20)-1;
  • this.existe=true;
  • }
  • public Brique(int x,int y,Level level){
  • this.x=x;
  • this.y=y;
  • this.Largeur=(LARGEUR/level.GetMatrice()[0].length)-1;
  • this.Hauteur=(HAUTEUR/level.GetMatrice().length)-1;
  • this.existe=true;
  • }
  • public void Casser(){
  • this.existe=false;
  • }
  • public int Getx(){
  • return this.x;}
  • public int Gety(){
  • return this.y;}
  • public int GetLargeur(){
  • return this.Largeur;}
  • public int GetHauteur(){
  • return this.Hauteur;}
  • public boolean GetExiste(){
  • return this.existe;}
  • public int GetBordGauche(){
  • return this.x;}
  • public int GetBordDroit(){
  • return this.x+this.Largeur;}
  • public int GetBordHaut(){
  • return this.y;}
  • public int GetBordBas(){
  • return this.y+this.Hauteur;
  • }
  • public void Dessiner(Graphics g){
  • g.setColor(Color.red);
  • g.fillRect(this.x,this.y,this.Largeur,this.Hauteur);}
  • public void EnDessiner(Graphics g){
  • g.setColor(Color.white);
  • g.fillRect(this.x,this.y,this.Largeur,this.Hauteur);}
  • }
  • class Level{
  • public static int RAYON=10;
  • public static int RAPIDITE=5;
  • public static int LARGEUR=500;
  • public static int HAUTEUR=600;
  • private Brique[][] matrice;
  • private int x;
  • private int y;
  • public Level(int x,int y,int u,int v){
  • this.matrice=new Brique[x][y];
  • this.x=u;
  • this.y=v;
  • }
  • public Level(int n,int x,int y){
  • this.matrice=new Brique[n][n];
  • this.x=x;
  • this.y=y;
  • }
  • public Level(Brique[][] tableau,int x,int y){
  • this.matrice=tableau;
  • this.x=x;
  • this.y=y;
  • }
  • public Level(int x,int y){
  • this.matrice=new Brique[10][10];
  • this.x=x;
  • this.y=y;
  • }
  • public int Getx(){
  • return this.x;}
  • public int Gety(){
  • return this.x;}
  • public int GetBordGauche(){
  • return this.x;}
  • public int GetBordDroit(){
  • return this.x+(this.matrice[0].length*this.matrice[0][0].GetLargeur());}
  • public int GetBordBas(){
  • return this.y+(this.matrice.length*this.matrice[0][0].GetHauteur());}
  • public int GetBordHaut(){
  • return this.y;}
  • public boolean LevelFini(){
  • boolean tmp=true;
  • for(int i=0;i<this.matrice.length;i++){
  • for(int j=0;j<this.matrice[i].length;j++){
  • tmp=(tmp && !this.matrice[i][j].GetExiste());}}
  • return tmp;
  • }
  • public Level Level1(Level level1){
  • int x1,y1,nbrique;
  • nbrique=(level1.matrice[0].length)*(level1.matrice.length);
  • level1.matrice[0][0]=new Brique(level1.x,level1.y,level1);
  • for(int i=0;i<level1.matrice.length;i++){
  • for(int j=0;j<level1.matrice[i].length;j++){
  • x1=(level1.matrice[0][0].GetLargeur()+1)*j;
  • y1=(level1.matrice[0][0].GetHauteur()+1)*i;
  • this.matrice[i][j]=new Brique(x1+level1.x,y1+level1.y,level1);
  • }
  • }
  • return level1;
  • }
  • public void Level2(){
  • int x1,y1,tmp,tmp1;
  • this.matrice[0][0]=new Brique(this.x,this.y);
  • tmp=this.matrice[0][0].GetLargeur();
  • tmp1=this.matrice[0][0].GetHauteur();
  • for(int i=0;i<this.matrice.length;i++){
  • for(int j=0;j<this.matrice[i].length;j++){
  • x1=(tmp+1)*j;
  • y1=(tmp1+1)*i;
  • this.matrice[i][j]=new Brique((this.x+x1),(this.y+y1));
  • }
  • }
  • }
  • public Brique[][] GetMatrice(){
  • return this.matrice;
  • }
  • public boolean TestSiBrique(int x, int y){
  • return this.matrice[x][y].GetExiste();
  • }
  • public void Dessiner(Graphics g){
  • for(int i=0;i<this.matrice.length;i++){
  • for(int j=0;j<this.matrice[i].length;j++){
  • if(this.matrice[i][j].GetExiste()){this.matrice[i][j].Dessiner(g);} else{this.matrice[i][j].EnDessiner(g);}
  • }
  • }
  • }
  • }
  • class Boule{
  • public static int RAYON=10;
  • public static int RAPIDITE=5;
  • public static int LARGEUR=500;
  • public static int HAUTEUR=600;
  • private int x;
  • private int y;
  • private int r;
  • private int dx;
  • private int dy;
  • public Boule(int x,int y){
  • this.x=x;
  • this.y=HAUTEUR-y;
  • this.r=RAYON;
  • this.dx=0;
  • this.dy=0;
  • }
  • public Boule(Cadre tableau){
  • this.x=(tableau.GetBordDroit()-tableau.GetBordGauche())/2;
  • this.y=(tableau.GetBordBas());
  • this.r=RAYON;
  • this.dx=0;
  • this.dy=0;
  • }
  • public Boule(int x,int y,int dx,int dy){
  • this.x=x;
  • this.y=HAUTEUR-y;
  • this.r=RAYON;
  • this.dx=dx;
  • this.dy=-dy;
  • }
  • public Boule(Cadre tableau,int dx,int dy){
  • this.x=(tableau.GetBordDroit()-tableau.GetBordGauche())/2;
  • this.y=(tableau.GetBordHaut());
  • this.r=RAYON;
  • this.dx=dx;
  • this.dy=-dy;
  • }
  • public Boule(Barre tige,int dx,int dy){
  • this.x=tige.GetBordGauche()+(tige.GetBordDroit()-tige.GetBordGauche()-this.r)/2;
  • this.r=RAYON;
  • this.y=(tige.Gety()-(this.r+1));
  • this.dx=dx;
  • this.dy=-dy;
  • }
  • public int Getx(){
  • return this.x;}
  • public int Gety(){
  • return this.y;}
  • public int Getdx(){
  • return this.dx;}
  • public int Getdy(){
  • return this.dy;}
  • public void Setdx(int dx){
  • this.dx=dx;}
  • public void Setdy(int dy){
  • this.dy=dy;}
  • public int PrecedentGetx(){
  • return this.x-this.dx;}
  • public int PrecedentGety(){
  • return this.y-this.dy;}
  • public void Move(){
  • this.x=this.x+this.dx;
  • this.y=this.y+this.dy; }
  • public void Move(int dx,int dy){
  • this.x=this.x+dx;
  • this.y=this.y+dy;
  • }
  • public void RebondCote(){
  • this.dx=-this.dx;}
  • public void RebondHauteur(){
  • this.dy=-this.dy;}
  • public void RebondBarre(int dx1,int dy1){
  • this.dx=dx1;
  • this.dy=-dy1;}
  • public void Dessiner(Graphics g){
  • g.setColor(Color.black);
  • g.fillOval(this.x, this.y,this.r,this.r);}
  • public void EnDessiner(Graphics g){
  • g.setColor(Color.white);
  • g.fillOval(this.x, this.y,this.r,this.r);}
  • public Boule TestCadre(Cadre tableau){
  • if(this.Getx()<=tableau.GetBordGauche())
  • {this.Move(tableau.GetBordGauche()-this.x,this.dy*(tableau.GetBordGauche()-this.x)/this.dx);this.RebondCote();}
  • if(this.Gety()<=tableau.GetBordHaut())
  • {this.Move((tableau.GetBordHaut()-this.y)*this.dx/this.dy,tableau.GetBordHaut()-this.y); this.RebondHauteur();}
  • if(this.Getx()+this.r>=tableau.GetBordDroit())
  • {this.Move(tableau.GetBordDroit()-this.x-this.r,this.dy*(tableau.GetBordDroit()-this.x)/this.dx);this.RebondCote();}
  • return this;
  • }
  • public boolean TestBarre(Barre tige){
  • if(this.Gety()+this.r>=tige.GetBordHaut() && this.Getx()+(this.r/2)>=(tige.GetBordGauche()) && this.Getx()+(this.r/2)<=(tige.GetBordDroit()))
  • {int tmp=tige.CoefficientRebond(this.Getx());this.RebondBarre(tmp*Math.abs(this.dx)/this.dx,this.dy);return true;}
  • return false;
  • }
  • public Brique TestBriqueInvincible(Level level,int score){
  • int j=0,i=0,k=0,l=0;
  • Brique brique=null;
  • boolean Casse=false;
  • if(this.Getx()+this.r>=level.GetBordGauche() && this.Getx()-this.r<=level.GetBordDroit() && this.Gety()-this.r<=level.GetBordBas() && this.Gety()+this.r>=level.GetBordHaut()){
  • j= (this.Getx()-level.GetBordGauche())/(level.GetMatrice()[0][0].GetLargeur()+1);
  • i= (this.Gety()-level.GetBordHaut())/(level.GetMatrice()[0][0].GetHauteur()+1);
  • k= (this.Getx()+this.dx-level.GetBordGauche())/(level.GetMatrice()[0][0].GetLargeur()+1);
  • l= (this.Gety()+this.dy-level.GetBordHaut())/(level.GetMatrice()[0][0].GetHauteur()+1);
  • if(i<level.GetMatrice().length){
  • if(j<level.GetMatrice()[i].length){
  • if(level.GetMatrice()[i][j].GetExiste()){
  • level.GetMatrice()[i][j].Casser();
  • ++score;
  • Casse=true;
  • brique=level.GetMatrice()[i][j];
  • if(this.Gety()+this.r>level.GetMatrice()[i][j].GetBordHaut() && this.Gety()<level.GetMatrice()[i][j].GetBordBas()){
  • }
  • if(this.Getx()<level.GetMatrice()[i][j].GetBordDroit() && this.Getx()+this.r>level.GetMatrice()[i][j].GetBordGauche()){
  • }
  • }
  • if(l<level.GetMatrice().length){
  • if(level.GetMatrice()[l][j].GetExiste()){
  • if(this.Getx()<level.GetMatrice()[l][j].GetBordDroit() && this.Getx()+this.r>level.GetMatrice()[l][j].GetBordGauche()){
  • level.GetMatrice()[l][j].Casser();
  • ++score;
  • Casse=true;
  • brique=level.GetMatrice()[l][j];
  • }
  • }
  • }
  • if(i<level.GetMatrice().length){
  • if(k<level.GetMatrice()[i].length){
  • if(level.GetMatrice()[i][k].GetExiste()){
  • if(this.Gety()>=level.GetMatrice()[i][k].GetBordHaut() && this.Gety()+1<=level.GetMatrice()[i][k].GetBordBas()){
  • level.GetMatrice()[i][k].Casser();
  • ++score;
  • Casse=true;
  • brique=level.GetMatrice()[i][k];}
  • }
  • }
  • }
  • }
  • }
  • }
  • return brique;
  • }
  • public Brique TestBrique(Level level,int score){
  • int j=0,i=0,k=0,l=0;
  • Brique brique=null;
  • boolean Casse=false;
  • if(this.Getx()+this.r>=level.GetBordGauche() && this.Getx()-this.r<=level.GetBordDroit() && this.Gety()-this.r<=level.GetBordBas() && this.Gety()+this.r>=level.GetBordHaut()){
  • j= (this.Getx()-level.GetBordGauche())/(level.GetMatrice()[0][0].GetLargeur()+1);
  • i= (this.Gety()-level.GetBordHaut())/(level.GetMatrice()[0][0].GetHauteur()+1);
  • k= (this.Getx()+this.dx-level.GetBordGauche())/(level.GetMatrice()[0][0].GetLargeur()+1);
  • l= (this.Gety()+this.dy-level.GetBordHaut())/(level.GetMatrice()[0][0].GetHauteur()+1);
  • if(i<level.GetMatrice().length){
  • if(j<level.GetMatrice()[i].length){
  • if(level.GetMatrice()[i][j].GetExiste()){
  • level.GetMatrice()[i][j].Casser();
  • ++score;
  • Casse=true;
  • brique=level.GetMatrice()[i][j];
  • if(this.Gety()+this.r>level.GetMatrice()[i][j].GetBordHaut() && this.Gety()<level.GetMatrice()[i][j].GetBordBas()){
  • this.RebondCote();
  • }
  • if(this.Getx()<level.GetMatrice()[i][j].GetBordDroit() && this.Getx()+this.r>level.GetMatrice()[i][j].GetBordGauche()){
  • this.RebondHauteur();
  • }
  • }
  • if(l<level.GetMatrice().length){
  • if(level.GetMatrice()[l][j].GetExiste()){
  • if(this.Getx()<level.GetMatrice()[l][j].GetBordDroit() && this.Getx()+this.r>level.GetMatrice()[l][j].GetBordGauche()){
  • level.GetMatrice()[l][j].Casser();
  • ++score;
  • Casse=true;
  • brique=level.GetMatrice()[l][j];
  • this.RebondHauteur();}
  • }
  • if(k<level.GetMatrice()[l].length){
  • if(level.GetMatrice()[l][k].GetExiste()){
  • if(this.Getx()<level.GetMatrice()[l][k].GetBordDroit() && this.Getx()>level.GetMatrice()[l][k].GetBordGauche()){
  • level.GetMatrice()[l][k].Casser();++score;
  • this.RebondHauteur();}
  • if(this.Gety()>level.GetMatrice()[l][k].GetBordHaut() && this.Gety()<level.GetMatrice()[l][k].GetBordBas()){
  • level.GetMatrice()[l][k].Casser();++score;
  • this.RebondCote();}
  • }
  • }
  • }
  • if(i<level.GetMatrice().length){
  • if(k<level.GetMatrice()[i].length){
  • if(level.GetMatrice()[i][k].GetExiste()){
  • if(this.Gety()>=level.GetMatrice()[i][k].GetBordHaut() && this.Gety()+1<=level.GetMatrice()[i][k].GetBordBas()){
  • this.RebondCote();
  • level.GetMatrice()[i][k].Casser();
  • ++score;
  • Casse=true;
  • brique=level.GetMatrice()[i][k];}
  • }
  • }
  • }
  • }
  • }
  • }
  • return brique;
  • }
  • public boolean TestFall(Barre tige){
  • if(this.Gety()>=tige.Gety()){return true;}
  • return false;
  • }
  • }
  • class Cadre{
  • public static int RAYON=10;
  • public static int RAPIDITE=5;
  • public static int LARGEUR=500;
  • public static int HAUTEUR=600;
  • private int largeur;
  • private int hauteur;
  • private int x;
  • private int y;
  • public Cadre(int x,int y,int largeur,int hauteur){
  • this.largeur=largeur;
  • this.hauteur=hauteur;
  • this.x=x;
  • this.y=y;
  • }
  • public Cadre(int x,int y){
  • this.largeur=LARGEUR;
  • this.hauteur=HAUTEUR;
  • this.x=x;
  • this.y=y;
  • }
  • public Cadre(){
  • this.largeur=LARGEUR;
  • this.hauteur=HAUTEUR;
  • this.x=0;
  • this.y=0;
  • }
  • public int Getx(){
  • return this.x;
  • }
  • public int Gety(){
  • return this.y;
  • }
  • public int GetBordGauche(){
  • return this.x;
  • }
  • public int GetBordDroit(){
  • return (this.x+this.largeur);
  • }
  • public int GetBordHaut(){
  • return this.y;
  • }
  • public int GetBordBas(){
  • return (this.y+this.hauteur);
  • }
  • public int GetHauteur(){
  • return this.hauteur;}
  • public int GetLargeur(){
  • return this.largeur;}
  • public void Dessiner(Graphics g){
  • g.setColor(Color.black);
  • g.drawLine(this.GetBordGauche(),this.GetBordHaut(),this.GetBordDroit(),this.GetBordHaut());
  • g.drawLine(this.GetBordGauche(),this.GetBordBas(),this.GetBordGauche(),this.GetBordHaut());
  • g.drawLine(this.GetBordDroit(),this.GetBordHaut(),this.GetBordDroit(),this.GetBordBas());
  • }
  • }
  • class Barre {
  • public static int RAYON=10;
  • public static int RAPIDITE=5;
  • public static int LARGEUR=500;
  • public static int HAUTEUR=600;
  • private int Largeur;
  • private int Hauteur;
  • private int x;
  • private int y;
  • public Barre(int x,int y,int hauteur,int largeur){
  • this.x=x;
  • this.y=y;
  • this.Hauteur=hauteur;
  • this.Largeur=largeur;
  • }
  • public Barre(Cadre tab,int hauteur,int largeur){
  • this.x=(tab.GetBordDroit()-tab.GetBordGauche()-largeur)/2;
  • this.y=tab.GetBordBas()+(hauteur/2);
  • this.Hauteur=hauteur;
  • this.Largeur=largeur;
  • }
  • public Barre(Cadre tab,int hauteur){
  • this.y=tab.GetBordBas()+(hauteur/2);
  • this.Hauteur=hauteur;
  • this.Largeur=(tab.GetBordDroit()-tab.GetBordGauche())/8;
  • this.x=(tab.GetBordDroit()-tab.GetBordGauche()-this.Largeur)/2;
  • }
  • public Barre(Cadre tab){
  • this.Hauteur=(tab.GetBordBas()-tab.GetBordHaut())/90;
  • this.Largeur=(tab.GetBordDroit()-tab.GetBordGauche())/8;
  • this.x=(tab.GetBordDroit()-tab.GetBordGauche()-this.Largeur)/2;
  • this.y=tab.GetBordBas()+(this.Hauteur/2);
  • }
  • public Barre(int x,int y,Cadre tab){
  • this.Hauteur=(tab.GetBordBas()-tab.GetBordHaut())/90;
  • this.Largeur=(tab.GetBordDroit()-tab.GetBordGauche())/8;
  • this.x=x-(this.Largeur/2);;
  • this.y=y+(this.Hauteur/2);;
  • }
  • public Barre(int x,Cadre tab){
  • this.Hauteur=(tab.GetBordBas()-tab.GetBordHaut())/90;
  • this.Largeur=(tab.GetBordDroit()-tab.GetBordGauche())/8;
  • this.x=x-(this.Largeur/2);
  • this.y=tab.GetBordBas()+(this.Hauteur/2);
  • }
  • public Barre(){
  • this.Hauteur=HAUTEUR/90;
  • this.Largeur=LARGEUR/8;
  • this.x=(LARGEUR-this.Largeur)/2;
  • this.y=HAUTEUR+(this.Hauteur*2);
  • }
  • public void Givex(int x){
  • this.x=x;
  • }
  • public int Getx(){
  • return this.x;
  • }
  • public int GetLargeur(){
  • return this.Largeur;}
  • public int GetHauteur(){
  • return this.Hauteur;}
  • public int Gety(){
  • return this.y;
  • }
  • public int GetBordGauche(){
  • return this.x;
  • }
  • public int GetBordDroit(){
  • return (this.x+this.Largeur);
  • }
  • public int GetBordHaut(){
  • return this.y;
  • }
  • public int GetBordBas(){
  • return (this.y+this.Hauteur);
  • }
  • public int CoefficientRebond(int x){
  • int coefbord=((this.Largeur)/10);
  • int coefdemibord=((this.Largeur)/5);
  • if(x<=(this.Getx()+coefbord) || x>=((this.Getx()+(coefbord*9)))) {return -3;}
  • if(x<=(this.Getx()+coefdemibord) || x>=(this.Getx()+(coefdemibord*4))) {return 2;}
  • return 1;
  • }
  • public void EnDessiner(Graphics g){
  • g.setColor(Color.white);
  • g.fillRect(this.x,this.y,this.Largeur,this.Hauteur);
  • }
  • public void Dessiner(Graphics g){
  • g.setColor(Color.black);
  • g.fillRect(this.x,this.y,this.Largeur,this.Hauteur);
  • }
  • }
     import java.awt.*;
     import java.awt.event.*;
     import java.applet.Applet;
     import java.awt.Graphics;
     import java.awt.Point;
     import java.awt.Event;
     import java.lang.Math;
     import java.util.*;
     import java.io.*;


public class  Javanoid extends Applet implements Runnable{
public static int RAYON=10;
public static int RAPIDITE=5;
public static int LARGEUR=500;
public static int HAUTEUR=600;


public Cadre tableau;
public ListeBoule listeballe;
public Boule balle;
public Barre tige;
public Level level;
public Brique brique;
public Option options;
public Bonus  GetBonus,SetBonus;
public ListeBonus listebonus;
public ListeLaser listelaser;
public Laser laser;
public static int Score;
public boolean ToucheBarre;
public Thread runner= new Thread(this);
public TracerSouris s=new TracerSouris();

    public void init()
    {
      tableau=new Cadre(80,10);
      tige=new Barre(220,tableau);
      balle=new Boule(tige,1,1);
      listeballe=new ListeBoule();
      listelaser=new ListeLaser();
      level=new Level(tableau.Getx()+(LARGEUR-HAUTEUR/2)/2,tableau.Gety()+(2*HAUTEUR/3-LARGEUR/2)/2);
      options=new Option(tableau.GetBordDroit(),tableau.GetBordHaut(),tableau.GetLargeur()/3,tableau.GetHauteur());
      options.SetColler();
      listebonus=new ListeBonus();
      listeballe.insererEnTete(balle);
      level.Level2();
      ToucheBarre=true;
      setBackground(Color.white);
      addMouseMotionListener(s);
      addMouseListener(s);
      runner.start();
     }


    public  void run(){
    Graphics g=getGraphics();
    if(!level.LevelFini()){
    if(options.GetVie()>=0){
    if(!listeballe.estVide()){
    if(!(options.GetColler() && ToucheBarre) || listeballe.ContientPlusDuneBoule()){
    if(options.GetDoubleBarre() && tige.GetLargeur()<(tableau.GetLargeur()/5)){
    options.NoDoubleBarre();
    tige=new Barre(tige.Getx(),tige.Gety(),tige.GetHauteur(),tige.GetLargeur()*2);
    }else {options.NoDoubleBarre();}
    if(options.GetMultiBalle()){
    options.NoMultiballe();
    balle=new Boule(tige,1,1);
    listeballe.insererEnTete(balle);}

    ToucheBarre=listeballe.TestBarre(tige);
    listeballe.TestFall(tige);
    listeballe.TestCadre(tableau);
    if(options.GetInvincible()){brique=listeballe.getPremier().TestBriqueInvincible(level,Score);
                                listeballe.TestBriqueInvincible(level,Score);}
                                else {     brique=listeballe.getPremier().TestBrique(level,Score);
                                listeballe.TestBrique(level,Score);
                                }
    GetBonus=listebonus.TestBarre(tige);
    options.Bonus_to_Option(GetBonus);
    listebonus.Fall(tige);
    if(brique!=null){
    SetBonus=new Bonus(brique);
    SetBonus.Random();
    listebonus.insererEnQueue(SetBonus);
    options.addScore();
    }

    listelaser.TestBrique(level,Score);
    listelaser.TestCadre(tableau);
    listebonus.Move();
    listeballe.Move();
    listelaser.Move();
    listelaser.Dessiner(g);
    listeballe.Dessiner(g);
    listebonus.Dessiner(g);
    try {runner.sleep(30/RAPIDITE);}
           catch(InterruptedException e){};

    repaint();
    }} else {this.Vieperdu(g); }
    }
    }else{  this.DessinerFin(g);}
    }

    public void update(Graphics g) {
    paint(g);
    }



    public void paint(Graphics g){
    String tmp,tmp2;
    tableau.Dessiner(g);
    tige.Dessiner(g);
    listebonus.EnDessiner(g);
    level.Dessiner(g);
    listeballe.EnDessiner(g);
    options.EnDessiner(g);
    options.Dessiner(g);
    listelaser.EnDessiner(g);
    if(options.GetColler() && ToucheBarre){listeballe.Dessiner(g);}
    this.run();
    }

     public void Vieperdu(Graphics g){
             tige.EnDessiner(g);
             tige=new Barre(220,tableau);
             listelaser=new ListeLaser();
             balle=new Boule(tige,1,1);
             listeballe.insererEnTete(balle);
             options.supVie();
             ToucheBarre=true;
             options.Init();}

    public void DessinerFin(Graphics g){
    removeMouseMotionListener(s);
    removeMouseListener(s);
    g.setColor(Color.white);
    g.fillRect(tableau.Getx(),tableau.Gety(),tableau.GetLargeur()+options.GetCadre().GetLargeur()+1,tige.GetBordBas());
    g.setColor(Color.black);
    g.drawString("Score : "+(options.GetScore()*100+options.GetVie()*1000),tableau.GetBordGauche()+(tableau.GetLargeur()/2),tableau.GetBordHaut()+(tableau.GetHauteur()/2));
    }

    class TracerSouris extends MouseAdapter implements MouseMotionListener{


    public void mouseDragged(MouseEvent e){}

    public void mouseMoved(MouseEvent e){
    int ancvaleur=tige.GetBordGauche();
    int tmp=e.getX();
    if(tmp<=tableau.GetBordGauche()){tmp=tableau.GetBordGauche();}
    if(tmp+tige.GetLargeur()>=tableau.GetBordDroit()){tmp=tableau.GetBordDroit()-tige.GetLargeur();}
    Graphics g=getGraphics();
    tige.EnDessiner(g);
    tige.Givex(tmp);
    repaint();
    if(options.GetColler() && ToucheBarre){
    listeballe.EnDessiner(g);
    listeballe.getPremier().Move(tmp-ancvaleur,0);
    }
    }

    public void mouseClicked(MouseEvent e){
    Graphics g=getGraphics();
    if(options.GetColler()==true && ToucheBarre) options.DeColler();
    if(options.GetLaser()){laser=new Laser(tige);listelaser.insererEnTete(laser);}
    repaint();}


    }

}





    class ListeLaser{
     private Chainon premier;

    private class Chainon{
    private Laser data;
    private Chainon suivant;
    }

    public ListeLaser(){
    premier=null;}

    public boolean estVide(){
    return (premier==null);}

    public Laser getPremier(){
    if(estVide())
        throw new NoSuchElementException();
        return premier.data;
    }


    public void insererEnTete(Laser data){
    Chainon nvChn=new Chainon();
    nvChn.data=data;
    Chainon nvChn1=new Chainon();
    nvChn1.data=new Laser(data);
    nvChn1.suivant=premier;
    nvChn.suivant=nvChn1;
    premier=nvChn;}

    public void insererEnQueue(Laser data){
    Chainon curseur=new Chainon();
    Chainon nvChn=new Chainon();
    nvChn.data=data;
    curseur=premier;
    if(estVide()){this.insererEnTete(data);}
    else{
    while(curseur.suivant!=null){
    curseur=curseur.suivant;}
    curseur.suivant=nvChn;}
    }

    public void retrancherEnTete(){
    if(estVide())
       throw new NoSuchElementException();
    else{premier=premier.suivant;}}


    public void supprimerElt(Chainon laser){
    Chainon curseur=new Chainon();
    curseur=premier;
    if(curseur==null)
             throw new NoSuchElementException();

    if(curseur.data.Getx()==laser.data.Getx()){this.retrancherEnTete();}
    else{
    while(curseur.suivant.data.Getx()!=laser.data.Getx() && curseur.suivant.data.Gety()!=laser.data.Gety() && curseur.suivant!=null){
    curseur=curseur.suivant;}
    curseur.suivant=curseur.suivant.suivant;}
    }


    public void TestBrique(Level level,int score){
    Chainon curseur=new Chainon();
    curseur=premier;
    while(curseur!=null){
    if(curseur.data.TestBrique(level,score)){supprimerElt(curseur);}
    curseur=curseur.suivant;
    }
    }

    public void TestCadre(Cadre tableau){
    Chainon curseur=new Chainon();
    curseur=premier;
    while(curseur!=null){
    if(curseur.data.TestCadre(tableau)){supprimerElt(curseur);}
    curseur=curseur.suivant;
    }
    }


    public void Move(){
    Chainon curseur=new Chainon();
    curseur=premier;
     while(curseur!=null){
    curseur.data.Move();
    curseur=curseur.suivant;
    }
    }

    public void Dessiner(Graphics g){
    Chainon curseur=new Chainon();
    curseur=premier;
     while(curseur!=null){
    curseur.data.Dessiner(g);
    curseur=curseur.suivant;
    }
    }



    public void EnDessiner(Graphics g){
    Chainon curseur=new Chainon();
    curseur=premier;
     while(curseur!=null){
    curseur.data.EnDessiner(g);
    curseur=curseur.suivant;
    }
    }
}
    class Laser{
    private int x;
    private int y;
    private int largeur;
    private int hauteur;

    public Laser(int x,int y,int largeur,int hauteur){
    this.x=x;
    this.y=y;
    this.largeur=largeur;
    this.hauteur=hauteur;
    }

    public Laser(Barre tige){
    this.x=tige.Getx();
    this.y=tige.Gety();
    this.largeur=tige.GetLargeur()/20;
    this.hauteur=tige.GetHauteur();}

    public Laser(Laser laser){
    this.x=laser.Getx()+(19*laser.GetLargeur());
    this.y=laser.Gety();
    this.largeur=laser.GetLargeur();
    this.hauteur=laser.GetHauteur();}

    public int Getx(){
    return this.x;}

    public int Gety(){
    return this.y;}

    public int GetHauteur(){
    return this.hauteur;}

    public int GetLargeur(){
    return this.largeur;}

    public void Move(){
    this.y=this.y-2;}

    public void Move(int y){
    this.y=this.y-y;}

    public boolean TestBrique(Level level,int score){
    int i=0,j=0;
    if(this.Getx()+this.largeur>=level.GetBordGauche() && this.Getx()-this.largeur<=level.GetBordDroit() && this.Gety()-this.largeur<=level.GetBordBas() && this.Gety()+this.largeur>=level.GetBordHaut()){
    j= (this.Getx()-level.GetBordGauche())/(level.GetMatrice()[0][0].GetLargeur()+1);
    i= (this.Gety()-level.GetBordHaut())/(level.GetMatrice()[0][0].GetHauteur()+1);

    if(i<level.GetMatrice().length){
           if(j<level.GetMatrice()[i].length){

           if(level.GetMatrice()[i][j].GetExiste()){

           level.GetMatrice()[i][j].Casser();
           ++score;return true;}
           }
           }
    }
    return false;
    }

    public boolean TestCadre(Cadre tableau){
    if(this.Gety()<=tableau.GetBordHaut()){return true;}
    return false;}


    public void Dessiner(Graphics g){
    g.setColor(Color.red);
    g.fillRect(this.x,this.y,this.largeur,this.hauteur);}

    public void EnDessiner(Graphics g){
    g.setColor(Color.white);
    g.fillRect(this.x,this.y,this.largeur,this.hauteur);}

    }

    class ListeBoule {
    private Chainon premier;

    private class Chainon{
    private Boule data;
    private Chainon suivant;
    }

    public ListeBoule(){
    premier=null;}

    public boolean estVide(){
    return (premier==null);}

    public boolean ContientPlusDuneBoule(){
    if(estVide()){return false;}
    if(premier.suivant==null){return false;}
    return true;}


    public Boule getPremier(){
    if(estVide())
        throw new NoSuchElementException();
        return premier.data;
    }


    public void insererEnTete(Boule data){
    Chainon nvChn=new Chainon();
    nvChn.data=data;
    nvChn.suivant=premier;
    premier=nvChn;}

    public void insererEnQueue(Boule data){
    Chainon curseur=new Chainon();
    Chainon nvChn=new Chainon();
    nvChn.data=data;
    curseur=premier;
    if(estVide()){this.insererEnTete(data);}
    else{
    while(curseur.suivant!=null){
    curseur=curseur.suivant;}
    curseur.suivant=nvChn;}
    }

    public void retrancherEnTete(){
    if(estVide())
       throw new NoSuchElementException();
    else{premier=premier.suivant;}}

    public void supprimerElt(Chainon balle){
    Chainon curseur=new Chainon();
    curseur=premier;
    if(curseur==null)
             throw new NoSuchElementException();

    if(curseur.data.Getx()==balle.data.Getx()){this.retrancherEnTete();}
    else{
    while(curseur.suivant.data.Getx()!=balle.data.Getx() && curseur.suivant.data.Gety()!=balle.data.Gety() && curseur.suivant!=null){
    curseur=curseur.suivant;}
    curseur.suivant=curseur.suivant.suivant;}
    }

    public void TestFall(Barre tige){
    Chainon curseur=new Chainon();
    curseur=premier;
    while(curseur!=null){
    if(curseur.data.TestFall(tige)){this.supprimerElt(curseur);}
    curseur=curseur.suivant;
    }
    }

    public boolean TestBarre(Barre tige){
    boolean touche=false;
    Chainon curseur=new Chainon();
    curseur=premier;
    while(curseur!=null){
    if(curseur==premier){touche=curseur.data.TestBarre(tige);}
    else{curseur.data.TestBarre(tige);}
    curseur=curseur.suivant;

    }
    return touche;
    }

    public void TestBrique(Level level,int score){
    Chainon curseur=new Chainon();
    curseur=premier;
    while(curseur!=null){
    curseur.data.TestBrique(level,score);
    curseur=curseur.suivant;
    }
    }

    public void TestCadre(Cadre tableau){
    Chainon curseur=new Chainon();
    curseur=premier;
    while(curseur!=null){
    curseur.data.TestCadre(tableau);
    curseur=curseur.suivant;
    }
    }

    public void TestBriqueInvincible(Level level,int score){
    Chainon curseur=new Chainon();
    curseur=premier;
    while(curseur!=null){
    curseur.data.TestBriqueInvincible(level,score);
    curseur=curseur.suivant;
    }
    }

    public void Move(){
    Chainon curseur=new Chainon();
    curseur=premier;
     while(curseur!=null){
    curseur.data.Move();
    curseur=curseur.suivant;
    }
    }

    public void Dessiner(Graphics g){
    Chainon curseur=new Chainon();
    curseur=premier;
     while(curseur!=null){
    curseur.data.Dessiner(g);
    curseur=curseur.suivant;
    }
    }



    public void EnDessiner(Graphics g){
    Chainon curseur=new Chainon();
    curseur=premier;
     while(curseur!=null){
    curseur.data.EnDessiner(g);
    curseur=curseur.suivant;
    }
    }
}

    class Option{
   public static int RAYON=10;
   public static int RAPIDITE=5;
   public static int LARGEUR=500;
   public static int HAUTEUR=600;


    private boolean invincible;
    private boolean doublebarre;
    private boolean multiballe;
    private int vie;
    private boolean laser;
    private boolean coller;
    private int Score;
    private Cadre cadre;

    public Option(){
    this.cadre=new Cadre();
    this.invincible=false;
    this.doublebarre=false;
    this.multiballe=false;
    this.vie=3;
    this.laser=false;
    this.coller=false;
    this.Score=0;
    }

    public Option(int x,int y,int largeur,int hauteur){
    this.cadre=new Cadre(x,y,largeur,hauteur);
    this.invincible=false;
    this.doublebarre=false;
    this.multiballe=false;
    this.vie=3;
    this.laser=false;
    this.coller=false;
    this.Score=0;
    }

    public void Init(){
    this.invincible=false;
    this.doublebarre=false;
    this.multiballe=false;
    this.laser=false;
    this.coller=true;
    }

    public Cadre GetCadre(){
    return this.cadre;}

    public int GetVie(){
    return this.vie;}

    public int GetScore(){
    return this.Score;}

    public boolean GetMultiBalle(){
    return this.multiballe;}

    public boolean GetInvincible(){
    return this.invincible;}

    public boolean GetDoubleBarre(){
    return this.doublebarre;}

    public boolean GetLaser(){
    return this.laser;}

    public boolean GetColler(){
    return this.coller;}

    public void DeColler(){
    this.coller=false;}

    public void SetCadre(int x,int y,int largeur,int hauteur){
    this.cadre=new Cadre(x,y,largeur,hauteur);}

    public void SetVie(int x){
    this.vie=x;}

    public void addVie(){
    ++this.vie;}

    public void supVie(){
    --this.vie;}

    public void SetScore(int x){
    this.Score=x;}

    public void addScore(){
    ++this.Score;}

    public void addScore(int x){
    this.Score=this.Score+x;}

    public void SetMultiballe(){
    this.multiballe=true;}

    public void NoMultiballe(){
    this.multiballe=false;}

    public void SetInvincible(){
    this.invincible=true;}

    public void SetDoubleBarre(){
    this.doublebarre=true;}

    public void NoDoubleBarre(){
    this.doublebarre=false;}

    public void NoLaser(){
    this.laser=false;}

    public void SetLaser(){
    this.laser=true;}

    public void SetColler(){
    this.coller=true;}


    public void Bonus_to_Option(Bonus bonus){
    if(bonus.Getcoller()){this.SetColler();}
    if(bonus.Getmultiballe()){this.SetMultiballe();}
    if(bonus.Getlaser()){this.SetLaser();}
    if(bonus.Getvie()){this.addVie();}
    if(bonus.Getmort()){this.supVie();}
    if(bonus.Getinvincible()){this.SetInvincible();}
    if(bonus.Getdoublebarre()){this.SetDoubleBarre();}
    }

    public void Dessiner(Graphics g){
    g.setColor(Color.black);
    this.cadre.Dessiner(g);
    g.drawString("Score : "+this.Score*100,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/20));
    g.drawString("Vie : "+this.vie,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/10));
    g.drawString("Coller : "+this.coller,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/5));
    g.drawString("Invincible : "+this.invincible,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),20+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/5));
    g.drawString("Laser : "+this.laser,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),40+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/5));
    g.drawString("doubleBarre : "+this.doublebarre,this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/5),60+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/5));

    g.setColor(Color.magenta);
    g.drawString("Invincible  ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
    g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);

    g.setColor(Color.red);
    g.drawString("Laser  ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),20+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
    g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 20+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);

    g.setColor(Color.orange);
    g.drawString("Multiballe  ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),40+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
    g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 40+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);

    g.setColor(Color.pink);
    g.drawString("Vie  ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),60+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
    g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 60+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);

    g.setColor(Color.blue);
    g.drawString("BoubleBarre  ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),80+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
    g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 80+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);

    g.setColor(Color.green);
    g.drawString("Coller  ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),100+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
    g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 100+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);

    g.setColor(Color.black);
    g.drawString("Mort  ",this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/4),120+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2));
    g.fillOval(this.cadre.GetBordGauche()+(this.cadre.GetLargeur()/6), 120+this.cadre.GetBordHaut()+(this.cadre.GetHauteur()/2)-RAYON,RAYON,RAYON);


    }

    public void EnDessiner(Graphics g){
    g.setColor(Color.white);
    g.fillRect(this.cadre.GetBordGauche()+1,this.cadre.GetBordHaut()+1,this.cadre.GetLargeur()-2,this.cadre.GetHauteur()/3);

    }
    }

    class ListeBonus {
    private Chainon premier;

    private class Chainon{
    private Bonus data;
    private Chainon suivant;
    }

    public ListeBonus(){
    premier=null;}

    public boolean estVide(){
    return (premier==null);}

    public Bonus getPremier(){
    if(estVide())
        throw new NoSuchElementException();
        return premier.data;
    }


    public void insererEnTete(Bonus data){
    Chainon nvChn=new Chainon();
    nvChn.data=data;
    nvChn.suivant=premier;
    premier=nvChn;}

    public void insererEnQueue(Bonus data){
    Chainon curseur=new Chainon();
    Chainon nvChn=new Chainon();
    nvChn.data=data;
    curseur=premier;
    if(estVide()){this.insererEnTete(data);}
    else{
    while(curseur.suivant!=null){
    curseur=curseur.suivant;}
    curseur.suivant=nvChn;}
    }

    public void retrancherEnTete(){
    if(estVide())
       throw new NoSuchElementException();
    else{premier=premier.suivant;}}

    public void supprimerElt(Chainon bonus){
    Chainon curseur=new Chainon();
    curseur=premier;
    if(curseur==null)
             throw new NoSuchElementException();

    if(curseur.data.Getx()==bonus.data.Getx()){this.retrancherEnTete();}
    else{
    while(curseur.suivant.data.Getx()!=bonus.data.Getx() && curseur.suivant.data.Gety()!=bonus.data.Gety() && curseur.suivant!=null){
    curseur=curseur.suivant;}
    curseur.suivant=curseur.suivant.suivant;}
    }

    public void Fall(Barre tige){
    Chainon curseur=new Chainon();
    curseur=premier;
    while(curseur!=null){
    if(curseur.data.TestFall(tige)){this.supprimerElt(curseur);}
    curseur=curseur.suivant;
    }
    }

    public Bonus TestBarre(Barre tige){
    Bonus pasdebonus=new Bonus(0,0);
    Chainon curseur=new Chainon();
    curseur=premier;
    while(curseur!=null){
    if(curseur.data.TestBarre(tige)){this.supprimerElt(curseur);return curseur.data;}
    curseur=curseur.suivant;
    }
    return pasdebonus;
    }


    public void Move(){
    Chainon curseur=new Chainon();
    curseur=premier;
     while(curseur!=null){
    curseur.data.Move();
    curseur=curseur.suivant;
    }
    }

    public void Dessiner(Graphics g){
    Chainon curseur=new Chainon();
    curseur=premier;
     while(curseur!=null){
    curseur.data.Dessiner(g);
    curseur=curseur.suivant;
    }
    }



    public void EnDessiner(Graphics g){
    Chainon curseur=new Chainon();
    curseur=premier;
     while(curseur!=null){
    curseur.data.EnDessiner(g);
    curseur=curseur.suivant;
    }
    }





    }


    class Bonus{
    public static int RAYON=10;
    public static int RAPIDITE=5;
    public static int LARGEUR=500;
    public static int HAUTEUR=600;

    private int x;
    private int y;
    private int r;
    private boolean invincible;
    private boolean doublebarre;
    private boolean multiballe;
    private boolean vie;
    private boolean mort;
    private boolean laser;
    private boolean coller;


    public Bonus(int x,int y){
    this.x=x;
    this.y=y;
    this.r=RAYON;
    this.invincible=false;
    this.doublebarre=false;
    this.multiballe=false;
    this.vie=false;
    this.mort=false;
    this.laser=false;
    this.coller=false;
    }

    public Bonus(Brique brique){
    this.x=brique.Getx()+(brique.GetLargeur()/2);
    this.y=brique.Gety()+(brique.GetHauteur()/2);
    this.r=RAYON;
    this.invincible=false;
    this.doublebarre=false;
    this.multiballe=false;
    this.vie=false;
    this.mort=false;
    this.laser=false;
    this.coller=false;
    }

    public void Init(){
    this.invincible=false;
    this.doublebarre=false;
    this.multiballe=false;
    this.vie=false;
    this.mort=false;
    this.laser=false;
    this.coller=false;
    }

    public int Getx(){
    return this.x;}

    public int Gety(){
    return this.y;}

    public int GetRayon(){
    return this.r;}

    public boolean Getinvincible(){
    return this.invincible;}

    public boolean Getdoublebarre(){
    return this.doublebarre;}

    public boolean Getmultiballe(){
    return this.multiballe;}

    public boolean Getvie(){
    return this.vie;}

    public boolean Getmort(){
    return this.mort;}

    public boolean Getlaser(){
    return this.laser;}

    public boolean Getcoller(){
    return this.coller;}


    public void Setinvincible(){
    this.invincible=!this.invincible;}

    public void Setdoublebarre(){
    this.doublebarre=!this.doublebarre;}

    public void Setmultiballe(){
    this.multiballe=!this.multiballe;}

    public void Setvie(){
    this.vie=!this.vie;}

    public void Setlaser(){
    this.laser=!this.laser;}

    public void Setcoller(){
    this.coller=!this.coller;}

    public void Setx(int x){
    this.x=x;}

    public void Sety(int y){
    this.y=y;}

    public void Move(){
    this.y=this.y+(this.r/5);}

    public void Move(int y){
    this.y=this.y+y;}

    public void Move(int x,int y){
    this.x=this.x+x;
    this.y=this.y+y;}

    public boolean TestFall(Barre tige){
    if(this.Gety()>=tige.Gety()){return true;}
    return false;
    }

    public boolean TestBarre(Barre tige){
    if(this.Gety()+this.r>=tige.GetBordHaut() && this.Getx()+(this.r/2)>=(tige.GetBordGauche()) && this.Getx()+(this.r/2)<=(tige.GetBordDroit()))
    {return true;}
    return false;
    }

    public void Random(){
    int tmp;
    Random rnd = new Random( );
    tmp=rnd.nextInt()%7;

    switch (tmp){
    case 0:
         this.vie=true;
                break;
    case 1:
         this.invincible=true;
                break;
    case 2:
         this.doublebarre=true;
                break;
    case 3:
         this.multiballe=true;
                break;

    case 4:
         this.mort=true;
                break;
    case 5:
         this.coller=true;
                break;
    case 6:
         this.laser=true;
                break;

    default:;
    }
    }


    public void Dessiner(Graphics g){
    if(this.vie){g.setColor(Color.pink);}
    if(this.mort){g.setColor(Color.black);}
    if(this.multiballe){g.setColor(Color.orange);}
    if(this.coller){g.setColor(Color.green);}
    if(this.laser){g.setColor(Color.red);}
    if(this.doublebarre){g.setColor(Color.blue);}
    if(this.invincible){g.setColor(Color.magenta);}
    if(this.vie || this.mort || this.multiballe || this.coller || this.laser || this.doublebarre || this.invincible)
    {g.fillOval(this.x, this.y,this.r,this.r);}
    }

    public void EnDessiner(Graphics g){
    g.setColor(Color.white);
    if(this.vie || this.mort || this.multiballe || this.coller || this.laser || this.doublebarre || this.invincible){
    g.fillOval(this.x, this.y,this.r,this.r);}
    }
    }


    class Brique{
    public static int RAYON=10;
    public static int RAPIDITE=5;
    public static int LARGEUR=500;
    public static int HAUTEUR=600;

    private  int x;
    private  int y;
    private  boolean existe;
    private  int Largeur;
    private  int Hauteur;


    public Brique(int x,int y,int largeur,int hauteur,boolean bool){
           this.x=x;
           this.y=y;
           this.Largeur=largeur;
           this.Hauteur=hauteur;
           this.existe=bool;
           }

    public Brique(int x,int y,int largeur,int hauteur){
           this.x=x;
           this.y=y;
           this.Largeur=largeur;
           this.Hauteur=hauteur;
           this.existe=true;
           }

    public Brique(int x,int y){
           this.x=x;
           this.y=y;
           this.Largeur=(HAUTEUR/20)-1;
           this.Hauteur=(LARGEUR/20)-1;
           this.existe=true;
    }


    public Brique(int x,int y,Level level){
           this.x=x;
           this.y=y;
           this.Largeur=(LARGEUR/level.GetMatrice()[0].length)-1;
           this.Hauteur=(HAUTEUR/level.GetMatrice().length)-1;
           this.existe=true;
    }

    public void Casser(){
           this.existe=false;
    }

    public int Getx(){
    return this.x;}

    public int Gety(){
    return this.y;}

    public int GetLargeur(){
    return this.Largeur;}

    public int GetHauteur(){
    return this.Hauteur;}

    public boolean GetExiste(){
    return this.existe;}

    public int GetBordGauche(){
    return this.x;}

    public int GetBordDroit(){
    return this.x+this.Largeur;}

    public int GetBordHaut(){
    return this.y;}

    public int GetBordBas(){
    return this.y+this.Hauteur;
    }

    public void Dessiner(Graphics g){
    g.setColor(Color.red);
    g.fillRect(this.x,this.y,this.Largeur,this.Hauteur);}

    public void EnDessiner(Graphics g){
    g.setColor(Color.white);
    g.fillRect(this.x,this.y,this.Largeur,this.Hauteur);}

    }



    class Level{
    public static int RAYON=10;
    public static int RAPIDITE=5;
    public static int LARGEUR=500;
    public static int HAUTEUR=600;

    private Brique[][] matrice;
    private int x;
    private int y;

    public Level(int x,int y,int u,int v){
           this.matrice=new Brique[x][y];
           this.x=u;
           this.y=v;
           }

    public Level(int n,int x,int y){
           this.matrice=new Brique[n][n];
           this.x=x;
           this.y=y;
           }

    public Level(Brique[][] tableau,int x,int y){
           this.matrice=tableau;
           this.x=x;
           this.y=y;
           }

    public Level(int x,int y){
           this.matrice=new Brique[10][10];
           this.x=x;
           this.y=y;
           }

    public int Getx(){
    return this.x;}

    public int Gety(){
    return this.x;}

    public int GetBordGauche(){
    return this.x;}


    public int GetBordDroit(){
    return this.x+(this.matrice[0].length*this.matrice[0][0].GetLargeur());}

    public int GetBordBas(){
    return this.y+(this.matrice.length*this.matrice[0][0].GetHauteur());}

    public int GetBordHaut(){
    return this.y;}

    public boolean LevelFini(){
    boolean tmp=true;
    for(int i=0;i<this.matrice.length;i++){
        for(int j=0;j<this.matrice[i].length;j++){
    tmp=(tmp && !this.matrice[i][j].GetExiste());}}
    return tmp;
    }

    public Level Level1(Level level1){
    int x1,y1,nbrique;
    nbrique=(level1.matrice[0].length)*(level1.matrice.length);
    level1.matrice[0][0]=new Brique(level1.x,level1.y,level1);
    for(int i=0;i<level1.matrice.length;i++){
        for(int j=0;j<level1.matrice[i].length;j++){
    x1=(level1.matrice[0][0].GetLargeur()+1)*j;
    y1=(level1.matrice[0][0].GetHauteur()+1)*i;
    this.matrice[i][j]=new Brique(x1+level1.x,y1+level1.y,level1);
        }
    }
    return level1;
    }

    public void Level2(){
    int x1,y1,tmp,tmp1;
    this.matrice[0][0]=new Brique(this.x,this.y);
    tmp=this.matrice[0][0].GetLargeur();
    tmp1=this.matrice[0][0].GetHauteur();
    for(int i=0;i<this.matrice.length;i++){
        for(int j=0;j<this.matrice[i].length;j++){
    x1=(tmp+1)*j;
    y1=(tmp1+1)*i;
    this.matrice[i][j]=new Brique((this.x+x1),(this.y+y1));
        }
    }
    }

    public Brique[][] GetMatrice(){
    return this.matrice;
    }

    public boolean TestSiBrique(int x, int y){
    return this.matrice[x][y].GetExiste();
    }

    public void Dessiner(Graphics g){
    for(int i=0;i<this.matrice.length;i++){
        for(int j=0;j<this.matrice[i].length;j++){
    if(this.matrice[i][j].GetExiste()){this.matrice[i][j].Dessiner(g);} else{this.matrice[i][j].EnDessiner(g);}
        }
    }
    }


    }


    class Boule{

    public static int RAYON=10;
    public static int RAPIDITE=5;
    public static int LARGEUR=500;
    public static int HAUTEUR=600;

    private int x;
    private int y;
    private int r;
    private int dx;
    private int dy;



           public Boule(int x,int y){
           this.x=x;
           this.y=HAUTEUR-y;
           this.r=RAYON;
           this.dx=0;
           this.dy=0;
           }

           public Boule(Cadre tableau){
           this.x=(tableau.GetBordDroit()-tableau.GetBordGauche())/2;
           this.y=(tableau.GetBordBas());
           this.r=RAYON;
           this.dx=0;
           this.dy=0;
           }


           public Boule(int x,int y,int dx,int dy){
           this.x=x;
           this.y=HAUTEUR-y;
           this.r=RAYON;
           this.dx=dx;
           this.dy=-dy;
           }

           public Boule(Cadre tableau,int dx,int dy){
           this.x=(tableau.GetBordDroit()-tableau.GetBordGauche())/2;
           this.y=(tableau.GetBordHaut());
           this.r=RAYON;
           this.dx=dx;
           this.dy=-dy;
           }

           public Boule(Barre tige,int dx,int dy){
           this.x=tige.GetBordGauche()+(tige.GetBordDroit()-tige.GetBordGauche()-this.r)/2;
           this.r=RAYON;
           this.y=(tige.Gety()-(this.r+1));
           this.dx=dx;
           this.dy=-dy;
           }

           public int Getx(){
           return this.x;}

           public int Gety(){
           return this.y;}

           public int Getdx(){
           return this.dx;}

           public int Getdy(){
           return this.dy;}


           public void Setdx(int dx){
           this.dx=dx;}

           public void Setdy(int dy){
           this.dy=dy;}

           public int PrecedentGetx(){
           return this.x-this.dx;}

           public int PrecedentGety(){
           return this.y-this.dy;}

           public void Move(){
            this.x=this.x+this.dx;
            this.y=this.y+this.dy; }

           public void Move(int dx,int dy){
            this.x=this.x+dx;
            this.y=this.y+dy;
            }


           public void RebondCote(){
           this.dx=-this.dx;}

           public void RebondHauteur(){
           this.dy=-this.dy;}

           public void RebondBarre(int dx1,int dy1){
           this.dx=dx1;
           this.dy=-dy1;}


           public void Dessiner(Graphics g){
            g.setColor(Color.black);
            g.fillOval(this.x, this.y,this.r,this.r);}

           public void EnDessiner(Graphics g){
           g.setColor(Color.white);
           g.fillOval(this.x, this.y,this.r,this.r);}


           public Boule TestCadre(Cadre tableau){
             if(this.Getx()<=tableau.GetBordGauche())
           {this.Move(tableau.GetBordGauche()-this.x,this.dy*(tableau.GetBordGauche()-this.x)/this.dx);this.RebondCote();}
           if(this.Gety()<=tableau.GetBordHaut())
           {this.Move((tableau.GetBordHaut()-this.y)*this.dx/this.dy,tableau.GetBordHaut()-this.y); this.RebondHauteur();}
           if(this.Getx()+this.r>=tableau.GetBordDroit())
           {this.Move(tableau.GetBordDroit()-this.x-this.r,this.dy*(tableau.GetBordDroit()-this.x)/this.dx);this.RebondCote();}
           return this;
           }

           public boolean TestBarre(Barre tige){
           if(this.Gety()+this.r>=tige.GetBordHaut() && this.Getx()+(this.r/2)>=(tige.GetBordGauche()) && this.Getx()+(this.r/2)<=(tige.GetBordDroit()))
           {int tmp=tige.CoefficientRebond(this.Getx());this.RebondBarre(tmp*Math.abs(this.dx)/this.dx,this.dy);return true;}
           return false;
           }


           public Brique TestBriqueInvincible(Level level,int score){
           int j=0,i=0,k=0,l=0;
           Brique brique=null;
           boolean Casse=false;
           if(this.Getx()+this.r>=level.GetBordGauche() && this.Getx()-this.r<=level.GetBordDroit() && this.Gety()-this.r<=level.GetBordBas() && this.Gety()+this.r>=level.GetBordHaut()){
           j= (this.Getx()-level.GetBordGauche())/(level.GetMatrice()[0][0].GetLargeur()+1);
           i= (this.Gety()-level.GetBordHaut())/(level.GetMatrice()[0][0].GetHauteur()+1);
           k= (this.Getx()+this.dx-level.GetBordGauche())/(level.GetMatrice()[0][0].GetLargeur()+1);
           l= (this.Gety()+this.dy-level.GetBordHaut())/(level.GetMatrice()[0][0].GetHauteur()+1);


           if(i<level.GetMatrice().length){
           if(j<level.GetMatrice()[i].length){

           if(level.GetMatrice()[i][j].GetExiste()){

           level.GetMatrice()[i][j].Casser();
           ++score;
           Casse=true;
           brique=level.GetMatrice()[i][j];
            if(this.Gety()+this.r>level.GetMatrice()[i][j].GetBordHaut() && this.Gety()<level.GetMatrice()[i][j].GetBordBas()){

            }

            if(this.Getx()<level.GetMatrice()[i][j].GetBordDroit() && this.Getx()+this.r>level.GetMatrice()[i][j].GetBordGauche()){

            }

           }
            if(l<level.GetMatrice().length){
            if(level.GetMatrice()[l][j].GetExiste()){

            if(this.Getx()<level.GetMatrice()[l][j].GetBordDroit() && this.Getx()+this.r>level.GetMatrice()[l][j].GetBordGauche()){
            level.GetMatrice()[l][j].Casser();
            ++score;
            Casse=true;
            brique=level.GetMatrice()[l][j];
            }
            }

            }


           if(i<level.GetMatrice().length){
           if(k<level.GetMatrice()[i].length){
            if(level.GetMatrice()[i][k].GetExiste()){

            if(this.Gety()>=level.GetMatrice()[i][k].GetBordHaut() && this.Gety()+1<=level.GetMatrice()[i][k].GetBordBas()){
            level.GetMatrice()[i][k].Casser();
            ++score;
            Casse=true;
            brique=level.GetMatrice()[i][k];}
            }
           }
           }
           }
           }
           }
           return brique;
           }


           public Brique TestBrique(Level level,int score){
           int j=0,i=0,k=0,l=0;
           Brique brique=null;
           boolean Casse=false;
           if(this.Getx()+this.r>=level.GetBordGauche() && this.Getx()-this.r<=level.GetBordDroit() && this.Gety()-this.r<=level.GetBordBas() && this.Gety()+this.r>=level.GetBordHaut()){
           j= (this.Getx()-level.GetBordGauche())/(level.GetMatrice()[0][0].GetLargeur()+1);
           i= (this.Gety()-level.GetBordHaut())/(level.GetMatrice()[0][0].GetHauteur()+1);
           k= (this.Getx()+this.dx-level.GetBordGauche())/(level.GetMatrice()[0][0].GetLargeur()+1);
           l= (this.Gety()+this.dy-level.GetBordHaut())/(level.GetMatrice()[0][0].GetHauteur()+1);


           if(i<level.GetMatrice().length){
           if(j<level.GetMatrice()[i].length){

           if(level.GetMatrice()[i][j].GetExiste()){

           level.GetMatrice()[i][j].Casser();
           ++score;
           Casse=true;
           brique=level.GetMatrice()[i][j];
            if(this.Gety()+this.r>level.GetMatrice()[i][j].GetBordHaut() && this.Gety()<level.GetMatrice()[i][j].GetBordBas()){
            this.RebondCote();
            }

            if(this.Getx()<level.GetMatrice()[i][j].GetBordDroit() && this.Getx()+this.r>level.GetMatrice()[i][j].GetBordGauche()){
            this.RebondHauteur();
            }

           }
            if(l<level.GetMatrice().length){
            if(level.GetMatrice()[l][j].GetExiste()){

            if(this.Getx()<level.GetMatrice()[l][j].GetBordDroit() && this.Getx()+this.r>level.GetMatrice()[l][j].GetBordGauche()){
            level.GetMatrice()[l][j].Casser();
            ++score;
            Casse=true;
            brique=level.GetMatrice()[l][j];
            this.RebondHauteur();}
            }

            if(k<level.GetMatrice()[l].length){


            if(level.GetMatrice()[l][k].GetExiste()){


            if(this.Getx()<level.GetMatrice()[l][k].GetBordDroit() && this.Getx()>level.GetMatrice()[l][k].GetBordGauche()){
            level.GetMatrice()[l][k].Casser();++score;
            this.RebondHauteur();}


            if(this.Gety()>level.GetMatrice()[l][k].GetBordHaut() && this.Gety()<level.GetMatrice()[l][k].GetBordBas()){
            level.GetMatrice()[l][k].Casser();++score;
            this.RebondCote();}
            }

            }

            }
            

           if(i<level.GetMatrice().length){
           if(k<level.GetMatrice()[i].length){
            if(level.GetMatrice()[i][k].GetExiste()){

            if(this.Gety()>=level.GetMatrice()[i][k].GetBordHaut() && this.Gety()+1<=level.GetMatrice()[i][k].GetBordBas()){
            this.RebondCote();
            level.GetMatrice()[i][k].Casser();
            ++score;
            Casse=true;
            brique=level.GetMatrice()[i][k];}
            }
           }
           }
           }
           }
           }
           return brique;
           }

           public boolean TestFall(Barre tige){
           if(this.Gety()>=tige.Gety()){return true;}
           return false;
           }



   }

    class Cadre{
    public static int RAYON=10;
    public static int RAPIDITE=5;
    public static int LARGEUR=500;
    public static int HAUTEUR=600;


    private int largeur;
    private int hauteur;
    private int x;
    private int y;


           public Cadre(int x,int y,int largeur,int hauteur){
           this.largeur=largeur;
           this.hauteur=hauteur;
           this.x=x;
           this.y=y;
           }

           public Cadre(int x,int y){
           this.largeur=LARGEUR;
           this.hauteur=HAUTEUR;
           this.x=x;
           this.y=y;
           }

           public Cadre(){
           this.largeur=LARGEUR;
           this.hauteur=HAUTEUR;
           this.x=0;
           this.y=0;
           }

           public int Getx(){
           return this.x;
           }

           public int Gety(){
           return this.y;
           }

           public int GetBordGauche(){
           return this.x;
           }

           public int GetBordDroit(){
           return (this.x+this.largeur);
           }

           public int GetBordHaut(){
           return this.y;
           }

           public int GetBordBas(){
           return (this.y+this.hauteur);
           }

           public int GetHauteur(){
           return this.hauteur;}

           public int GetLargeur(){
           return this.largeur;}

           public void Dessiner(Graphics g){
           g.setColor(Color.black);
           g.drawLine(this.GetBordGauche(),this.GetBordHaut(),this.GetBordDroit(),this.GetBordHaut());
           g.drawLine(this.GetBordGauche(),this.GetBordBas(),this.GetBordGauche(),this.GetBordHaut());
           g.drawLine(this.GetBordDroit(),this.GetBordHaut(),this.GetBordDroit(),this.GetBordBas());
           }

   }


class Barre {
 public static int RAYON=10;
 public static int RAPIDITE=5;
 public static int LARGEUR=500;
 public static int HAUTEUR=600;


    private int Largeur;
    private int Hauteur;
    private int x;
    private int y;


    public Barre(int x,int y,int hauteur,int largeur){
    this.x=x;
    this.y=y;
    this.Hauteur=hauteur;
    this.Largeur=largeur;
    }

    public Barre(Cadre tab,int hauteur,int largeur){
    this.x=(tab.GetBordDroit()-tab.GetBordGauche()-largeur)/2;
    this.y=tab.GetBordBas()+(hauteur/2);
    this.Hauteur=hauteur;
    this.Largeur=largeur;
    }

    public Barre(Cadre tab,int hauteur){
    this.y=tab.GetBordBas()+(hauteur/2);
    this.Hauteur=hauteur;
    this.Largeur=(tab.GetBordDroit()-tab.GetBordGauche())/8;
    this.x=(tab.GetBordDroit()-tab.GetBordGauche()-this.Largeur)/2;
    }

    public Barre(Cadre tab){
    this.Hauteur=(tab.GetBordBas()-tab.GetBordHaut())/90;
    this.Largeur=(tab.GetBordDroit()-tab.GetBordGauche())/8;
    this.x=(tab.GetBordDroit()-tab.GetBordGauche()-this.Largeur)/2;
    this.y=tab.GetBordBas()+(this.Hauteur/2);
    }

    public Barre(int x,int y,Cadre tab){
    this.Hauteur=(tab.GetBordBas()-tab.GetBordHaut())/90;
    this.Largeur=(tab.GetBordDroit()-tab.GetBordGauche())/8;
    this.x=x-(this.Largeur/2);;
    this.y=y+(this.Hauteur/2);;
    }

    public Barre(int x,Cadre tab){
    this.Hauteur=(tab.GetBordBas()-tab.GetBordHaut())/90;
    this.Largeur=(tab.GetBordDroit()-tab.GetBordGauche())/8;
    this.x=x-(this.Largeur/2);
    this.y=tab.GetBordBas()+(this.Hauteur/2);
    }

    public Barre(){
    this.Hauteur=HAUTEUR/90;
    this.Largeur=LARGEUR/8;
    this.x=(LARGEUR-this.Largeur)/2;
    this.y=HAUTEUR+(this.Hauteur*2);
    }

    public void Givex(int x){
    this.x=x;
    }

    public int Getx(){
    return this.x;
    }

    public int GetLargeur(){
    return this.Largeur;}

    public int GetHauteur(){
    return this.Hauteur;}

    public int Gety(){
    return this.y;
    }

    public int GetBordGauche(){
    return this.x;
    }

    public int GetBordDroit(){
    return (this.x+this.Largeur);
    }

    public int GetBordHaut(){
    return this.y;
    }

    public int GetBordBas(){
    return (this.y+this.Hauteur);
    }

    public int CoefficientRebond(int x){
    int coefbord=((this.Largeur)/10);
    int coefdemibord=((this.Largeur)/5);
    if(x<=(this.Getx()+coefbord) || x>=((this.Getx()+(coefbord*9)))) {return -3;}
    if(x<=(this.Getx()+coefdemibord) || x>=(this.Getx()+(coefdemibord*4))) {return 2;}
    return 1;
    }


    public void EnDessiner(Graphics g){
    g.setColor(Color.white);
    g.fillRect(this.x,this.y,this.Largeur,this.Hauteur);
    }

    public void Dessiner(Graphics g){
    g.setColor(Color.black);
    g.fillRect(this.x,this.y,this.Largeur,this.Hauteur);
    }
}


 Conclusion

l algotythme pour tester si les briques sont touchés peut etre amélioré.

       Sinon je remercie ma mere pour m avoir mis au monde, ainsi que mon pere qui l as soutenus dans cette dur epreuve. Et Surtout merci a tous ces sites internets qui editent des tutoriaux gratuit complet et tres bien fait. Je remerci aussi l editeur du livre programmation Java, qui m as donné gout a ce language, il traitre tres bien du sujet avec humour et rentre suffisament ds les bases de java.

@+


 Sources du même auteur

Source avec Zip Source avec une capture TAQUIN MVC
Source avec Zip Source avec une capture CODAGE ET ARBRE DE HUFFMAN (COMPRESSION, AFFICHAGE DE L'ARBR...

 Sources de la même categorie

ENVOI D'UNE ARBORESSENCE EN JAVA VERS SERVEUR FTP par moumou95
ENREGISTRER L'ARBORESCENCE D'UN JTREE DANS UN XML AVEC JDOM par coltman
Source avec Zip WIZARD JAVA API par aissam36
JCONFIGURATIONMANAGER - GESTION DES CONFIGURATIONS par Francks11
Source avec Zip Source avec une capture FRAGMENTER, DÉFRAGMENTER UN FICHIER par Chatbour

 Sources en rapport avec celle ci

Source avec Zip CASSE BRIQUE EN J2ME par codefalse
Source avec Zip Source avec une capture CASSEBRIQUE par boutchito
Source avec Zip Source avec une capture UN CASSE BRIQUE SYMPA. par amauryxiv
Source avec Zip Source avec une capture BRICKOID (CASSE BRIQUE) par minimouk
Source avec Zip Source avec une capture RÉPLIQUE D'ARKANOID par SaintAkseror

Commentaires et avis

Commentaire de dragon le 22/06/2003 15:22:04

Ça aurait été plus simple de gérer la boule, le tableau et les barres avec des thread. Comme ça, tu aurais pus faire des annimations plus rapidement. sans compté que ton code aurait été beaucoup moins long

il aurait falus faire une class qui détecte les collion et après, un extend tableau ou boule ou barre de cette class qui gèrais la collions de différente façon. La boule, ferait toujours un calcul pour changer de direction, une barre explose toujours (dépendant sont type de barre) et un mur, fait rien à aprt déclencher un son.

pour finir une dernière classe qui serait mis dans une interface qui serait intégré à chaque barre qui permettrais de connaitre le nombre de barre restante et le tour est joué.

lors de la création de ton tableau, tu positionne tes threads de barre, donc pourrais avoir plusieurs configuration loader à partir d,un fichier XML et c'est tout.

Une bonne journée de pluie de fin  de semaine, je vais m'attaquer à ça.

Commentaire de spontex le 22/06/2003 16:47:43

         Je te remercie de cette critique constructive, et que tu es pris le temp de jeter un coup d oeil a mes sources.
Cependant ce programme est de niveau 1, comme mon niveau en java d ailleurs, (mon niveau en xml -1). je te fais donc confiance pour le remaniement de mon code le soir d une longue nuit d hiver sous la neige et le vent pour remanier mon code a ta guise.
Merci encore pour ta remarque

Commentaire de dragon le 23/06/2003 02:33:05

de rien. Ce que j'ai dit, c,est une autre façon de le faire. Je crois de la façon que j'ai dit, ça sera plus facile à faire des niveau de difficulté et des niveau avec les barres placer différament.

par contre, tu implément quand même un runnable et ma façon est un peu semblable, sauf avec beaucoup plus de runnable. Plus il y a de runnable, plus l'action peut-être géré rapidement, mais plus dur est la programmation (tant qu'on dépace pas la limite de nombre de processus du cpu)

ton niveau de XML est -1 ??? pourtant tu as poster plusieurs sources qui crée des fichier XML, donc je crois que c,est plus 2 que -1 ;-), puisque peut de monde utilise les fichier XML en java encore.

Je devrais downloader JBulder9 pour le faire (puisque j'adore utiliser les dernière technologie et vu que JBulder9 utilise la technologie .Net, ça pourrasi faire dequoi d'intéressant à plusieurs niveau.

donc va démarrer le téléchargement et vite une journée de pluie (ben qu'une journée ensoleiller je fais du bateau) Petit dilemme, bateau ou programation lol. En tout cas, va tenir au courant si je le commence, on pourrait peut-être le faire à 2 ... si ça te tente. Puisque tu es au courant des calcul mathématique et quand même de la structure et moi, ça fait un peu plus longtemps que je programme en java (en tout cas je crois)

Commentaire de dragon le 26/06/2003 01:36:56

pour ceux qui veulent me joindre dans la programmation d'un jeux d'akanoid, le plus avancer possible avec arme, multijoueur (jusqu'à 4), son et effect spéciaux

fait sous jbuilder8 ou 9

aller voir dans le labo

http://www.javafr.com/projetcommun.aspx?ID=463

Commentaire de spontex le 09/07/2003 11:01:06

Désolé de pas avoir repondu avant, mais j etais tres occupé.
je suis pas le spontex que tu crois a mon avis. c est la premiere source que j inscrit ici.
sinon je te souhaite bonne chance pour ton projet.

Commentaire de dragon le 09/07/2003 13:10:22

ah ok, j'ai du faire une erreur en regardant les sources lol
c'est pas grave, on est déjà 2 et le projet avance très bien, un petit bug sur les mathématique de la ball quand je fais un rebond, pour l'instant, masi ça avance bien

Commentaire de spontex le 10/07/2003 10:34:11

previens vois pour que je test les premieres beta ;)

Commentaire de dragon le 10/07/2003 13:08:36

ok, mais moi et Winnie, on programme à notre vitesse, puisqu'il faut profiter de l'été quoi et vu que notre projet, on veut faire un akanoid le plus avancer possible avec un multijoueur, du son, des effect spéciaux, des niveaux, .... ça risque d'être quand même pas mal long à 2

Commentaire de coucounet le 29/07/2003 17:47:52

Salut,

Au risque de paraitre ridicule, elle est ou la main?
Meme si je suis ridicule, je veux bien une reponse, car sinon je ne voit pas comment lancer l'appli

Merci

coucounet

Commentaire de dragon le 30/07/2003 03:39:07

faut que tu crée u main qui fait "new Javanoid();"

Commentaire de coucounet le 30/07/2003 10:01:35

Merci bcp pour ton aide, je devrais me debrouiller maintenant ...

coucounet

Commentaire de coucounet le 30/07/2003 13:21:49

Et bien non !!! ca ne marche pas !! Il n'y pas d'erreur mais le programme ne se lance pas. Y'aurait-il d'autres choses a ecrire.

Je te file ma main, que j'ai ecrit dans un autre fichier, et qui se trouve dans le package Internet.Javanoid.

package Internet.Javanoid;
public class launch {
    public static void main (String [] args) {
        try {
            Javanoid prenoid = new Javanoid();
        }
        catch (Exception e) { }
    }
}

voila merci. A plus

coucounet

Commentaire de spontex le 30/07/2003 21:05:50

a mon avis y a une chtite confusion, dans mon prog y a pas de main, c une applet java! ( les applets ne fonctionne pas comme les programme classique faut editer une page html comme donner en fichier joins avec mon prog) en gros le main c le tread + le paint.

Commentaire de coucounet le 30/07/2003 22:54:12

desole je n'avais pas telechargé le fichier zip car il etait endomagé (il l'est toujours pour info au webmaster). J'ai donc betement copier la source !!!!
En tout cas merci, je vais me creer une petite page web, pour y integrer cet applet. NORMALEMENT ca devrait bon, mais la derniere fois que j'ai dit ca je n'y suis pas arrivé !!! lol

A plus

coucounet

Commentaire de dragon le 30/07/2003 23:51:37

c'est un fais, j'ai même pas vérifier si c'était un jframe ou un japplet lol

Commentaire de coucounet le 31/07/2003 11:32:47

coucouuuuuuuuu
c encore moi, celui qui ne comprend rien !!! lol
Je viens juste de faire un petit fichier html pour lancer cet applet, MALHEUREUSEMENT j'ai du oublier d'initialiser une variable car l'applet ne se lance pas; enfin elle se lance mais il y a une croix rouge pour bien te faire comprendre que tu es nul !!! lol
Sinon je l'ai aussi lancée avec Textpad, et la il me dit :
load: class Javanoid.class not found.
J'ai aussi NetBeans, que je commence a utiliser depuis une semaine, mais je ne sais pas encore lancer les applets avec NetBeans.

Bon voila, si vous pouviez me dire ce qu'il ne va pas, ou bien regler le probleme du fichier zip qui est corrompu, ou m'envoyer le fichier zip directement par mail que je comprenne en lisant ce code ce qui ne va pas chez moi ...!!

Merci

coucounet

Commentaire de dragon le 31/07/2003 13:15:22

pour mettre du java dans une applet, il doit être compilé dans un .class

mais me souviens pus de la commande dos pour le faire, vu que j'utilise toujours jbuilder qui le fait automatiquement

Commentaire de spontex le 31/07/2003 20:26:50

faut que tu compile la source avec java, la commande c javac +nom du fichier.

Commentaire de dragon le 31/07/2003 20:46:26

c'est ça

Commentaire de pidjipi le 14/08/2003 10:43:12

dragon: je pense que tu devrait essayer Eclipse (3.0RC2), il est un peu spécial à prendre en main aprés JBuild, mais on ne s'en passe plus. surtou q'uil est libre, avec beaucoup de plugins (même un pour faire du design de forms)
je te conseille de l'essayer au moins, mais ne te rebutes pas d'entrée, comme beaucoup :p

Commentaire de dragon le 14/08/2003 13:26:47

non, je l'ai essayer, c'est juste que beaucoup de projet que j'ai fais c'est pour les cours que j'ai suivi, donc comme tu là dis, beaucoup de monde veuleent pas l'essayer, donc j'y peut rien si les prof veulenet avoir seulement en jbuilder ou blueJ (ce qui est 100 fois pire)

par contre, la version 9 de jbuilder est très suppérieur pour les entreprise à comparer eclipse, les 2 compilateur on leur avantage et leur inconvénient

Commentaire de omega2 le 21/08/2003 22:21:25

"java.lang.NoClassDefFoundError: Javanoid (wrong name: Javanoid/Javanoid)"
J'ai obtenu ça après la première compilation dans Netbeans.
En fait, il falait pas laisser de "package Javanoid;" (rajouté automatiquement par netbeans quand on modifie le nom du dossier dans lequel le source ce trouve.)

Pour le fichier html, il faut mettre
&lt;html&gt;
&lt;applet code="Javanoid.class" width=800 height=700&gt;
&lt;/applet&gt;
&lt;/html&gt;

un height de 600 est trop petit, alors j'ai pas regardé combien il faudrait exactement comme hauteur.  Pour la largeur, 800 permet de tout avoir d'affiché (mais on doit pouvoir réduire).
Pour la vitesse, c'est vrai que c'est pas un monstre de rapidité, mais pour un projet scolaire, je le trouve bien réalisé. (il plante pas et fonctionne bien)
Je m'y conais pas assez en java pour critiquer le code. Par contre, il me semblais que normalement, il faut mettre qu'une seule classe par fichier .java, du coup, a partir d'un seul fichier source, on optient une quirielle de fichier .class . Une organisation avec une classe par fichier source rendrait surement le code plus digeste.

Commentaire de dragon le 22/08/2003 00:36:28

il y a qu'une class par fichier .java
par contre, beaucoup implement ou extend d'autre class

sous jbuilder avec un ordi moyen (500 mhz) je voie pas le problème de vitesse. des petit lag au début pusique les images sont pas à 100% en mémoire, malgré le loading que j'ai fait pour éviter le problème, masik à par ça aucun problème de vitesse

le jeux pourrasi être de beaucoup plus rapide, masi rendu au niveau 15 ou 20, il y a trop d'astéroide et de personnage qui bouge en même temps, donc falais faire un compromis pour pas que ça ralentisse.

par contre, s'il manque de ram, c'est sur que ça va se mettre à laguer, pusiqu'il y a beaucoup de chose en mémoire

Commentaire de omega2 le 23/08/2003 00:43:31

Quand je regardes le source en haut de la page, je voit que tout est écrit dans le même fichier et qu'il y a plusieurs classes :
conclusion, on peut mettre plusieurs classes dans le même fichier .java même si normalement il faudrait pas faire comme ça.

Par contre a la compilation, on obtient bien un fichier .class par classe. ;)

Commentaire de poiriermaud le 27/02/2005 13:19:03

bonjour
Je ne comprends pas oû mettre le script ci dessus ??
Qui peut m'expliquer ! svp !

Commentaire de spontex le 27/02/2005 13:29:19

ben c pas un script c une applet java qu il faut appeler a partir d une page html

Commentaire de poiriermaud le 27/02/2005 13:39:13

Donc cet applet on doit le mettre dans quoi ?
Je n'est jamais compris les applets java, vous pouvez m'expliquer ou me donner un lien svp !

Commentaire de reveur02 le 29/05/2005 12:12:21

Bonjour a tous je confirme que le fichier ZIp en endomagé dommage merci si quelqu'un peu me dire ou je peux telecharger le code source

bonne prg a tous

Commentaire de muad-dib le 11/02/2006 17:28:30

le zip est vide

Commentaire de Umbre le 15/08/2006 14:01:37

Bonjour. Je suis en train d'analyser le code parce que je tente de développer un jeu en Java qui repose beaucoup sur le principe du casse brique.

Si j'ai bien compris, la liste de laser de la classe ListeLaser, tu la traites avec des listes chainées. Ce que je ne comprends pas c'est que ta void ajoutEnTête ajoute deux chainons à chaque fois. Ca n'aurait pas était plus simple de faire des chainons à 2 variables et un "pointeur" ? De plus, quand tu fais un ajoutEnQueue avec ta void, soit il en ajoute 2 (il fait un ajoutEnTete si la liste est vide), soit il en ajoute 1 si la liste est non vide.

Je n'ai pas encore tout regardé loin de là mais ça me semble un peu étrange comme procédé...

Si je vois d'autre chose bizarre que je ne comprends pas ou si je comprend justement je reposterai. @+

Commentaire de Umbre le 15/08/2006 15:33:41

Je pense avoir compris que c'était juste une histoire d'initialisation...

Par contre quelques petits trucs qui pouraient être amélioré :
- Quand il y a trop de lasers et qu'on bouge la barre, des lasers disparaissent.
- La vitesse des balles est réglée sur la hauteur. Résultat, les balles vont plus vitent suivant l'angle direction qu'elle prenne si il est plus proche de l'horizontal que de la verticale.
- La barre est attachée à la souris par son bord gauche et non par le centre comme d'habitude même si ce n'est pas trop génant.
- La balle sur la barre au lancement du jeu n'est pas au millieu. Son bord gauche est au millieu.
- Un bug apparait parfois quand la balle touche le mur et la barre en même temps.

Mis par ça, le travaille est assez pousser et il y pas mal de chose plutôt bien gérée comme les directions de la balle suivant le lieu de rebont sur la barre (qui pourrait être un peu plus poussé mais c'est du chipotage).

Bravo et bonne continuation.

Par contre, je ne m'inspirerais pas ce code pour deux raisons : La première, c'est que tout mettre en blouque rend le tout peu lisible, j'ai bien passer un peu de temps a séparer mais c'est la facon d'agencer les classe qui me perturbe ;). La seconde c'est que comme l'a remarquée Dragon, c'est plus simple d'utiliser des Thread (ce qui aurait au passage retirer le probleme sur les lasers) surtout pour ce que je veux faire qui ressemble à un mix entre galaxian et un casse brique (comprendre en gros qu'il y a des briques mobiles, des briques qu'on peut déplacer à coup de balle etc...)

Seulement je me demande si les Tread ne ralentirait pas un peu le jeu parce qu'il y en aurait beaucoup parfois pas loin d'une vaingtaine je pense : la barre, quelque tires, quelque briques mobiles, la ou les balles, les diférentes armes qu'on peu rajouter à la balles (explosion, tire de laser dans toutes les direction etc...)

@+

Commentaire de ChemicalWoRmS le 04/11/2006 14:12:21

alors tu es venu poster deux messages pour dire que tu te fichais de ce code xD lol

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Detection colision jeu casse brique [ par meudeuk ] Lu',je suis en train de faire un casse brique en java, mais je galere un peut sur la detection des colisions entre la balle et les briques.Je me demen casse brique en java [ par boblinux ] Bonjour,Pour commencer, je tiend a dire que je suis debuter en java. J'en fait pour mon plaisir chez moi. Donc voilà, j'essaye de faire un casse briqu JTable et CellEditor, le casse tete !!! [ par srx ] Bonjour,est ce que quelqu'un saurait s'il est possible dans une JTable de définir pour chaque case une CellEditor et un CellRenderer spécifique ?Je cr interface JAVA jeu de Dames [ par andyn_r ] Bonjour, je fé un jeu de dames en réseau en C, et pour l'interface en Java, j'aimerais savoir comment afficher l'image du damier sur ma fenetre de je Jeu de stratégie [ par killians ] BonjourJe suis en train de développer un jeu de stratégie en java pour un projet d'étude avec mon binôme.Le but du jeu est de poser un maximum de pièc Othello et fonction d'évaluation [ par gouigoui ] Salut à tousDans le cadre de mes études, je fais un peu mumuse avec le jeu othello. J'ai implémenté un joueur, avec un algorithme de recherche de type Page d'accueil dans une Jframe [ par nounouX ] Voila je suis tj sur mon projet de tetris (ça y est j'ai reussi a mettre du son... merci a celui qui a fait le jeu earthworm Jim en 3 parties ... dsl Affichage dans un jeu [ par nounouX ] Salut a tous voila, ma question concerne l'affichage graphique d'un jeu, j'aimerai que vous m'aiguilliez sur la meilleur façon d'afficher une image, p AWT vs SWING que choisir... [ par nounouX ] Bon je vais encore vous embeter :-DVoila plus je fouille sur le web, moins je comprend ... hehe voila , j'aimerai savoir (du point de vu graphique, po Java pour un Jeu Online ? [ par Sissmic ] Bonjour a tous.Voila, un ami et moi meme somme entrain de faire un jeu en php/html, c'est un jeu tour par tour qui est un mélange de RPG/Lycos Fight/C


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales