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

Aller en bas

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
avatar
Mejdi1503
Candidat au titre membre du club

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

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
avatar
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

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;
    }
}
avatar
Mejdi1503
Candidat au titre membre du club

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

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
avatar
RBS_admin
Mas2oul
Mas2oul

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

Feuille de personnage
choix:

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

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
avatar
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

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
avatar
Mejdi1503
Candidat au titre membre du club

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

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

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 !
avatar
Mejdi1503
Candidat au titre membre du club

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

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