un semblant de casse brique (mais sans les briques!!)

Aller en bas

un semblant de casse brique (mais sans les briques!!) Empty un semblant de casse brique (mais sans les briques!!)

Message par Mejdi1503 le Mar 20 Mai 2008 - 19:54

Il n'y a pas encore les briques, pcq c'est pas encore terminer
je compte sur vous pour des bonnes idées!!

et comme promis Sidi El Heni ...

Code:
import java.awt.*;
import java.awt.event.*;

[/font][font=Verdana]//j'oublie pas mes amis[/font]
[font=Verdana]//voila sidi el heni, comme promis, c toi le boss ici
public class SidiElHeni extends java.applet.Applet
//On doit d'abord donner a sidi el heni un look d'Applet, pour que ca marche
{
    //Pour ne pas avoir des flashs de dessin du graphique
    //Utiliser un graphics temporaire pour dessiner le graphique
    //est une bonne idée
    Image ITmp;//Image temporaire pour dessiner le graphique
      Graphics GTmp;//Graphics temporaire associer a l'Image
     
     
    Point B1 = new Point(0,50);
    int BordWidth = 400;
    int BordHeight = 300;
   
    public Point BarPos = new Point(0,0);
    public int BarLength = 100;
   
    public boolean BallAttached = true;//true Si la boule est attaché a la barre
   
    public Point pos = new Point(0,0);
    int vitesse = 50;//[0..100]
    int dir = 120;//degrée de la direction de mouvement de la boule
    int pat = 10;//coeficient d'incrimentation de la position
    double XInc = pat*Math.cos(Math.toRadians(dir));
    double YInc = -pat*Math.sin(Math.toRadians(dir));
    double posx = 0;
    double posy = 0;
    int BallsLeft = 4;//nombre de boules restantes
   
    Thread BallMoveTh = null;
   
    public void init()
    {
        this.setSize(BordWidth,BordHeight+100);
        Dimension dim = getSize();
        ITmp = createImage(dim.width, dim.height);
        GTmp = ITmp.getGraphics();
    }
   
    //Redemarrer le jeu
    public void initGame()
    {
        BallsLeft = 4;
        initBall();
    }
   
    //Restaurer la boule
    public void initBall()
    {
        if(--BallsLeft>-1)
        {
            BallAttached = true;
            BarPos.x = BordWidth/2;
            BarPos.y = BordHeight+30;
            pos.x = BordWidth/2;
            pos.y = BordHeight-30;
            posx = pos.x;
            posy = pos.y;
        }
        repaint();

    }
   
    public void start()
    {
        //Thread de deplacement de la boule
        BallMoveTh = new Thread()
        {
            public void run()
            {
                while(true)
                {
                    posx = posx+XInc;
                    posy = posy+YInc;
                   
                    //Colision avec le bord horizal
                    if(posy<=60)
                    {
                        posy = 60;
                        deviation(1,0);
                    }
                   
                    //Colision a vec les bords vertical
                    if(posx<=10)
                    {
                        posx = 10;
                        deviation(0,1);
                    }
                    else
                    if(posx>=BordWidth-10)
                    {
                        posx = BordWidth-10;
                        deviation(0,1);
                    }
                       
                    //Colision avec la barre
                    if(((posy>=BarPos.y)&&(posy<=BarPos.y+15))&&((posx>=BarPos.x-BarLength/2)&&(posx<=BarPos.x+BarLength/2)))
                    {
                        posy = BarPos.y;
                        deviationBar();
                    }
                       
                    //Sortie de la boule par le bord horizontal bas
                    if(posy>=BordHeight+70)
                    {
                        initBall();
                        BallMoveTh.suspend();
                        deviation(1,0);
                    }
                   
                    repaint();
                    try
                    {
                        sleep(30);
                    }
                    catch(InterruptedException ex)
                    {
                        System.out.println(ex.getMessage());
                    }
                }
            }
        };
        BallMoveTh.start();
        BallMoveTh.suspend();
        initGame();
    }
   
    public void update(Graphics g)
    {
        paint(g);
    }
   
    public void paint(Graphics g)
    {   
        if(BallsLeft>-1)
        {
            GTmp.setPaintMode();
            GTmp.setColor(Color.black);
            GTmp.fillRect(0,0,BordWidth,BordHeight+100);
           
            //Dessin de la barre
            GTmp.setColor(Color.blue);
            GTmp.fillOval(BarPos.x-BarLength/2,BarPos.y+8,BarLength,20);
           
            //Dessin des bord h
            GTmp.setColor(Color.red);
            GTmp.drawRect(B1.x,B1.y,BordWidth,BordHeight);
            GTmp.fillRect(0,0,BordWidth,50);
            GTmp.fillRect(0,BordHeight+50,BordWidth,50);
           
            //Dessin de la boule
            if(BallAttached)
            {
                posx = BarPos.x;
                posy = BarPos.y;
            }
            pos.x = (int)(posx);
            pos.y = (int)(posy);
            GTmp.setColor(Color.white);
            GTmp.fillOval(pos.x-10,pos.y-10,20,20);
           
            //Dessin des boules restantes
            for(int i=0;i
                GTmp.fillOval(20+i*25,BordHeight+70,20,20);
           
            g.drawImage(ITmp,0,0,this);
        }
        else
        {
            //Game Over
            g.setColor(Color.black);
            g.fillRect(0,0,BordWidth,BordHeight+100);
            g.setColor(Color.red);
            g.drawString("GAME OVER",(BordWidth/2)-40,BordHeight/2);
            g.drawString("Replay",(BordWidth/2)-30,(BordHeight/2)+30);
        }
    }
   
    public void deviation(int v, int h)
    {
        //inverser la direction vertical
        if(v==1)
            dir*=-1;
       
        //inverser la direction horizontal
        if(h==1)
            dir=180-dir;
           
        //minimisation de l'angle de direction
        if(dir>360)
            dir=360-dir;
        if(dir<0)
            dir=360+dir;
           
        XInc = pat*Math.cos(Math.toRadians(dir));
        YInc = -pat*Math.sin(Math.toRadians(dir));
    }
   
    public void deviationBar()
    {
        //deviation de la boule selon l'angle de colision avec la barre
       
        dir+=pos.x-BarPos.x;
        dir*=-1;
       
        if(dir>360)
            dir=360-dir;
        if(dir<0)
            dir=360+dir;
           
        if(dir>160)dir=160;
        if(dir<20)dir=20;
       
        XInc = pat*Math.cos(Math.toRadians(dir));
        YInc = -pat*Math.sin(Math.toRadians(dir));
       
    }
   
    public boolean mouseMove(Event e, int x, int y )
    {
        //Deplacement de la barre
        if(BallsLeft>-1)
        {
            BarPos.x = x;
            repaint();
        }
        return true;
    }
   
    public boolean mouseUp(Event e, int x, int y )
    {
        if(BallsLeft<0)
        {
            initGame();
        }
        else
        if(BallAttached)
        {
            BallAttached = false;
            BallMoveTh.resume();
            repaint();
        }
        return true;
    }
}

c'est vrai, c'est un peut long
drunken
mais j'ai mis des //commentaires geek
Mejdi1503
Mejdi1503
Candidat au titre membre du club

Masculin
Nombre de messages : 37
Age : 36
Location : MI4-G?
Date d'inscription : 24/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

un semblant de casse brique (mais sans les briques!!) Empty Re: un semblant de casse brique (mais sans les briques!!)

Message par Admin le Mar 20 Mai 2008 - 20:21

j'executer le code je pense qu'il faut controller la vitesse de la balle avec l'utilsateur et pour es briques j'espére que sa marche

_________________
Le Paradis est sous les pieds des mères
Admin
Admin
Mas2oul
Mas2oul

Masculin
Nombre de messages : 106
Age : 32
Location : Sousse
Date d'inscription : 03/11/2007

Feuille de personnage
choix:

Voir le profil de l'utilisateur http://issatso.forumactif.com

Revenir en haut Aller en bas

un semblant de casse brique (mais sans les briques!!) Empty Re: un semblant de casse brique (mais sans les briques!!)

Message par Mejdi1503 le Jeu 22 Mai 2008 - 12:45

enfin!!
les briques sont la!! cheers

Code:

import java.awt.*;
import java.awt.event.*;


//Etant un peut rebel, le projet sidi el heni a été abondonner
//quel dommage!
public class Ball extends java.applet.Applet
{
    //Pour ne pas avoir des flashs de dessin du graphique
    //Utiliser un graphics temporaire pour dessiner le graphique
    //est une bonne idée
    Image ITmp;//Image temporaire pour dessiner le graphique
      Graphics GTmp;//Graphics temporaire associer a l'Image
     
     
    Point B1 = new Point(0,50);
    int BordWidth = 400;
    int BordHeight = 300;
   
    public Point BarPos = new Point(0,0);
    public int BarLength = 100;
   
    public boolean BallAttached = true;//true Si la boule est attaché a la barre
   
    public Point pos = new Point(0,0);
    int vitesse = 50;//[0..100]
    int dir = 120;//degrée de la direction de mouvement de la boule
    int pat = 5;//coeficient d'incrimentation de la position(max = min(longBrique,largBrique)/2 = 5)
    double XInc = pat*Math.cos(Math.toRadians(dir));
    double YInc = -pat*Math.sin(Math.toRadians(dir));
    double posx = 0;
    double posy = 0;
    int BallsLeft = 4;//nombre de boules restantes
    boolean Gagne = false;
   
    Brique briques[][];
   
    Thread BallMoveTh = null;
   
    public void init()
    {
        this.setSize(BordWidth,BordHeight+100);
        Dimension dim = getSize();
        ITmp = createImage(dim.width, dim.height);
        GTmp = ITmp.getGraphics();
    }
   
    //creations des briques
    public void initBriques()
    {
        briques = new Brique[10][5];
        for(int i=0;i<10;i++)
            for(int j=0;j<5;j++)
            {
                briques[i][j] = new Brique(i,j,Color.green,1);
            }
    }
   
    //Redemarrer le jeu
    public void initGame()
    {
        initBriques();
        BallsLeft = 4;
        initBall();
    }
   
    //Restaurer la boule
    public void initBall()
    {
        if(--BallsLeft>-1)
        {
            BallAttached = true;
            BarPos.x = BordWidth/2;
            BarPos.y = BordHeight+30;
            pos.x = BordWidth/2;
            pos.y = BordHeight-30;
            posx = pos.x;
            posy = pos.y;
        }
        repaint();
    }
   
    public void start()
    {
        //Thread de deplacement de la boule
        BallMoveTh = new Thread()
        {
            public void run()
            {
                while(true)
                {
                    posx = posx+XInc;
                    posy = posy+YInc;
                   
                    //Colision avec le bord horizal
                    if(posy<=60)
                    {
                        posy = 60;
                        deviation(1,0);
                    }
                   
                    //Colision a vec les bords vertical
                    if(posx<=10)
                    {
                        posx = 10;
                        deviation(0,1);
                    }
                    else
                    if(posx>=BordWidth-10)
                    {
                        posx = BordWidth-10;
                        deviation(0,1);
                    }
                       
                    //Colision avec la barre
                    if(((posy>=BarPos.y)&&(posy<=BarPos.y+15))&&((posx>=BarPos.x-BarLength/2)&&(posx<=BarPos.x+BarLength/2)))
                    {
                        posy = BarPos.y;
                        deviationBar();
                    }
                   
                    //Colision avec les briques
                    //!!!!!!!!!!!!!! a refaire !!!!!!!!!!!!!!
                    //!!ca marche pas bien si la resistance!!
                    //!!        de la brique est > 1      !!
                    //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                    Gagne = true;
                    for(int i=0;i<10;i++)
                        for(int j=0;j<5;j++)
                            if(briques[i][j].existe())
                            {
                                Gagne = false;
                                int y = briques[i][j].getPos().y;
                                int x = briques[i][j].getPos().x;
                                    if((pos.y>=y)&&(pos.y<=y+20)&&(pos.x+10>=x)&&(pos.x-10<=x+40))
                                    {                                       
                                        //Colision avec la cote vertical
                                        if(pos.y<y+20)pos.y = y-9;//si le coefficient d'incrimentation > 1 la boule peut penetrer la brique
                                        else pos.y = y+51;          //il faut donc corriger ca position
                                        briques[i][j].decResistance();
                                        deviation(0,1);//invertion du deplacement horizontal
                                       
                                    }
                                    else
                                    if((pos.x<=x+40)&&(pos.x>=x)&&((pos.y-10<=y+20)&&(pos.y+10>=y)))
                                    {
                                        //Colision la cote horizontal
                                        if(pos.x<x+5)pos.x = x-9;//si le coefficient d'incrimentation > 1 la boule peut penetrer la brique
                                        else pos.x = x+31;        //il faut donc corriger ca position
                                        briques[i][j].decResistance();
                                        deviation(1,0);//invertion du deplacement vertical
                                       
                                    }       
                            }
                       
                    //Sortie de la boule par le bord horizontal bas
                    if(posy>=BordHeight+70)
                    {
                        initBall();
                        BallMoveTh.suspend();
                        deviation(1,0);
                    }
                   
                    repaint();
                    try
                    {
                        sleep(10);
                    }
                    catch(InterruptedException ex)
                    {
                        System.out.println(ex.getMessage());
                    }
                }
            }
        };
   
        BallMoveTh.start();
        BallMoveTh.suspend();
        initGame();
       
    }
   
    public void update(Graphics g)
    {
        paint(g);
    }
   
    public void paint(Graphics g)
    {   
        if(BallsLeft>-1&&!Gagne)
        {
            GTmp.setPaintMode();
            GTmp.setColor(Color.black);
            GTmp.fillRect(0,0,BordWidth,BordHeight+100);
           
            //Dessin de la barre
            GTmp.setColor(Color.blue);
            GTmp.fillOval(BarPos.x-BarLength/2,BarPos.y+8,BarLength,20);
           
            //Dessin des bord h
            GTmp.setColor(Color.red);
            GTmp.drawRect(B1.x,B1.y,BordWidth,BordHeight);
            GTmp.fillRect(0,0,BordWidth,50);
            GTmp.fillRect(0,BordHeight+50,BordWidth,50);
           
            //Dessin des briques
            for(int i=0;i<10;i++)
                for(int j=0;j<5;j++)
                    {
                        if(briques[i][j].existe())
                        {
                            GTmp.setColor(briques[i][j].getColor());
                            GTmp.fillRect(briques[i][j].getPos().x,briques[i][j].getPos().y,39,20);
                        }
                    }
           
            //Dessin de la boule
            if(BallAttached)
            {
                posx = BarPos.x;
                posy = BarPos.y;
            }
            pos.x = (int)(posx);
            pos.y = (int)(posy);
            GTmp.setColor(Color.white);
            GTmp.fillOval(pos.x-10,pos.y-10,20,20);
           
            //Dessin des boules restantes
            for(int i=0;i<BallsLeft;i++)
                GTmp.fillOval(20+i*25,BordHeight+70,20,20);
           
            g.drawImage(ITmp,0,0,this);
        }
        else
        if(Gagne)
        {
            //Gagné
            g.setColor(Color.black);
            g.fillRect(0,0,BordWidth,BordHeight+100);
            g.setColor(Color.green);
            g.drawString("YOU WIN",(BordWidth/2)-40,BordHeight/2);
            g.drawString("Replay",(BordWidth/2)-30,(BordHeight/2)+20);
        }
        else
        {
            //Game Over
            g.setColor(Color.black);
            g.fillRect(0,0,BordWidth,BordHeight+100);
            g.setColor(Color.red);
            g.drawString("GAME OVER",(BordWidth/2)-40,BordHeight/2);
            g.drawString("Replay",(BordWidth/2)-30,(BordHeight/2)+30);
        }
    }
   
    public void deviation(int v, int h)
    {
        //inverser la direction vertical
        if(v==1)
            dir*=-1;
       
        //inverser la direction horizontal
        if(h==1)
            dir=180-dir;
           
        //minimisation de l'angle de direction
        if(dir>360)
            dir=360-dir;
        if(dir<0)
            dir=360+dir;
           
        XInc = pat*Math.cos(Math.toRadians(dir));
        YInc = -pat*Math.sin(Math.toRadians(dir));
    }
   
    public void deviationBar()
    {
        //deviation de la boule selon l'angle de colision avec la barre
       
        dir+=pos.x-BarPos.x;
        dir*=-1;
       
        if(dir>360)
            dir=360-dir;
        if(dir<0)
            dir=360+dir;
           
        if(dir>160)dir=160;
        if(dir<20)dir=20;
       
        XInc = pat*Math.cos(Math.toRadians(dir));
        YInc = -pat*Math.sin(Math.toRadians(dir));
       
    }
   
    public boolean mouseMove(Event e, int x, int y )
    {
        //Deplacement de la barre
        if(BallsLeft>-1)
        {
            BarPos.x = x;
            repaint();
        }
        return true;
    }
   
    public boolean mouseUp(Event e, int x, int y )
    {
        if(BallsLeft<0||Gagne)
        {
            initGame();
        }
        else
        if(BallAttached)
        {
            BallAttached = false;
            BallMoveTh.resume();
            repaint();
        }
        return true;
    }
   
}

class Brique
{
    Point position = new Point();
    Color couleur;
    int resistance;//nombre de colision avec la boule pour que ca se casse
   
    Brique(int i, int j, Color couleur,int resistance)
    {
        position.x = i*40;
        position.y = j*40+50;
        this.couleur = couleur;
        this.resistance = resistance;
    }
   
    Point getPos()
    {
        return position;
    }
   
    Color getColor()
    {
        return couleur;
    }
   
    void decResistance()
    {
        resistance--;
    }
   
    boolean existe()
    {
        if(resistance>0)
            return true;
        else
            return false;
    }
}
Mejdi1503
Mejdi1503
Candidat au titre membre du club

Masculin
Nombre de messages : 37
Age : 36
Location : MI4-G?
Date d'inscription : 24/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

un semblant de casse brique (mais sans les briques!!) Empty Re: un semblant de casse brique (mais sans les briques!!)

Message par RBS_admin le Jeu 29 Mai 2008 - 11:39

walah ya3tik él sa7a ya Mejdi,bravooooooooooooo
continue

_________________
dima m3ak ya l'etoile
RBS_admin
RBS_admin
Mas2oul
Mas2oul

Masculin
Nombre de messages : 197
Age : 32
Location : sousse
Date d'inscription : 05/11/2007

Feuille de personnage
choix:

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

un semblant de casse brique (mais sans les briques!!) Empty Re: un semblant de casse brique (mais sans les briques!!)

Message par Admin le Sam 31 Mai 2008 - 22:22

No pour qoui tu a éliminné Sidi el henii No

_________________
Le Paradis est sous les pieds des mères
Admin
Admin
Mas2oul
Mas2oul

Masculin
Nombre de messages : 106
Age : 32
Location : Sousse
Date d'inscription : 03/11/2007

Feuille de personnage
choix:

Voir le profil de l'utilisateur http://issatso.forumactif.com

Revenir en haut Aller en bas

un semblant de casse brique (mais sans les briques!!) Empty Re: un semblant de casse brique (mais sans les briques!!)

Message par Mejdi1503 le Ven 6 Juin 2008 - 0:48


Désole pour les fan de sidi el heni, mais c comme ca, la vie est si cruelle !!! No


Dernière édition par Mejdi1503 le Mar 17 Juin 2008 - 15:48, édité 1 fois
Mejdi1503
Mejdi1503
Candidat au titre membre du club

Masculin
Nombre de messages : 37
Age : 36
Location : MI4-G?
Date d'inscription : 24/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

un semblant de casse brique (mais sans les briques!!) Empty Re: un semblant de casse brique (mais sans les briques!!)

Message par pc_DKN le Ven 6 Juin 2008 - 16:39

bravo mejdi, good work Smile , mais il manque le 'replay' si on veut commencer une nouvelle partie.

pc_DKN
Membre régulier

Nombre de messages : 59
Age : 32
Location : system32
Date d'inscription : 02/06/2008

Feuille de personnage
choix:

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

un semblant de casse brique (mais sans les briques!!) Empty Re: un semblant de casse brique (mais sans les briques!!)

Message par Mejdi1503 le Mar 17 Juin 2008 - 15:52

ca sera dans la prochaine version Wink
merci !
Mejdi1503
Mejdi1503
Candidat au titre membre du club

Masculin
Nombre de messages : 37
Age : 36
Location : MI4-G?
Date d'inscription : 24/02/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

un semblant de casse brique (mais sans les briques!!) Empty Re: un semblant de casse brique (mais sans les briques!!)

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum