Javanoid casse brique en java programmation orienté objet

Soyez le premier à donner votre avis sur cette source.

Vue 28 618 fois - Téléchargée 2 399 fois

Description

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 / Exemple :


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.

@+

Codes Sources

Ajouter un commentaire Commentaires
Messages postés
14
Date d'inscription
dimanche 22 octobre 2006
Statut
Membre
Dernière intervention
11 novembre 2006

alors tu es venu poster deux messages pour dire que tu te fichais de ce code xD lol
Messages postés
105
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
17 août 2006

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...)

@+
Messages postés
105
Date d'inscription
jeudi 29 mai 2003
Statut
Membre
Dernière intervention
17 août 2006

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. @+
Messages postés
103
Date d'inscription
lundi 9 avril 2001
Statut
Membre
Dernière intervention
16 juillet 2008

le zip est vide
Messages postés
5
Date d'inscription
dimanche 1 mai 2005
Statut
Membre
Dernière intervention
9 juillet 2009

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
Afficher les 32 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.