Soyez le premier à donner votre avis sur cette source.
Vue 8 735 fois - Téléchargée 541 fois
import java.applet.*; import java.awt.*; import java.applet.Applet; import java.awt.Color; import java.awt.Graphics; import java.awt.Event; import java.lang.Math; import java.awt.Point; import java.util.*; import java.io.*; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; ; // réalisé par fats public class jeujeu extends Applet implements Runnable { public Raquette raquette; public Balle boule; public Menu menu; public static boolean casse = false; public Brique tableau [][] = new Brique [4][6]; // tableau d'objet de type Brique int pt =0; int largeur; int hauteur; public static int nbbrique = 24; public static int direction =1; // indique le sens de deplacement de la boule ici (vers la droite : 1 / vers la gauche : -1) public static int directionNS = 1; // vers le bas public static boolean premierefois = true; public static boolean perdu = false ; public static boolean demarrage = true; private Thread th; Graphics g; Graphics d; // servira au double buffer private static int point ; private Image Image; public void init() { setBackground (Color.black); boule = new Balle (); raquette = new Raquette(50,165,35,6); // creation d'objets : raquette et balle menu = new Menu(); int x =0; int y=0; for (int L= 0; L < 4;L++){ //ligne for( int C = 0 ; C< 6 ; C++){ // colonne tableau[L][C] = new Brique (x,y,25,15); if (C==5){x=0;} else {x=x+35;}} y = y+25; } } public void start () { th = new Thread (this); th.start(); } public void stop() { } public void destroy() { } public void run () { Thread.currentThread().setPriority(Thread.MIN_PRIORITY); while (!(perdu) && !demarrage){ boule.move(); // appel de methode de deplacement raquette.collisionboule(boule); // appel de methode de controle collision raquette repaint(); try { Thread.sleep (15); } catch (InterruptedException ex) { } Thread.currentThread().setPriority(Thread.MAX_PRIORITY); } } public void paint (Graphics g) { if(premierefois){ menu.presentation (g); } if(perdu){ menu.perdu(g); } raquette.dessiner(g); boule.dessiner(g); menu.score(g); if (nbbrique >0){ // on vérifie que toutes les briques ne sont pas cassées int L=0; int C=0; for ( int i= 0; i<6;i++){ // je commence par la premiere ligne dans le jeu en partant du bas for (L=0; L<4;L++){ if (tableau[L][i].getcasse()==false){ tableau[L][i].collision(boule); tableau[L][i].dessiner(g); } } } } else { jeujeu.perdu= true; } } public void update (Graphics g) { Image = createImage (this.getSize().width, this.getSize().height); d = Image.getGraphics (); d.setColor (getBackground ()); d.fillRect (0, 0, this.getSize().width, this.getSize().height); d.setColor (getForeground()); paint (d); g.drawImage (Image, 0, 0, this); } public class Balle { // creation de la classe Balle private int radius ; private int posx ; private int posy; public int posx2; public int posy2; public int posx3; public int posy3; public int posx4; public int posy4; private int outdroit = 188; // delimitation de la zone de jeu private int outgauche = 5; private int outhaut = 5; private int outbas = 178; private int centrex, centrey; public int dx=2,dy=2; // vitesse public Balle (){ radius = 8; // rayon du cercle posx=50; posy = 150; posx2 = posx + (radius*2) ; posy2 = posy ; posx3 = posx ; posy3 = posy+ (radius*2); // posx4 = posx3 + (radius*2); // x ------------------x2 posy4 = posy2 + (radius*2); // | | // x3------------------ x4 } public int getradius(){ return this.radius; } public int getX2 (){ return this.posx2; } public int getX3 (){ posx3 = posx ; return this.posx3; } public int getX4 (){ posx4 = posx3 + (radius*2); return this.posx4; } public int getY2 (){ return this.posy2; } public int getY3 (){ posy3 = posy+ (radius*2); return this.posy3; } public int getY4 (){ posy4 = posy2 + (radius*2); return this.posy4; } public int getcentrex () { centrex = (posx + (radius/2)); return this.centrex; } public int getcentrey () { centrey = (posy + ( radius/2)); return this.centrey; } public int getX (){ return this.posx; } public int getY(){ return this.posy; } public void setX(int x){ this.posx = x; } public void setY (int y){ this.posy = y; } public void move (int dx , int dy){ this.dx = dx; this.dy = dy; collision(); } public void move (){ posx += dx; posy += dy; collision(); } public void collision(){ if (posx < outgauche ){ dx = -dx; // repart vers la droite direction = 1; } if (posx > outdroit ){ dx=-dx; // repart vers la gauche direction =-1; } if(posy < outhaut ){ directionNS=-1; dy =-dy; } if(posy >= outbas ){ directionNS = 1 ; perdu = true; } } public void dessiner( Graphics g){ g.setColor (Color.green); g.fillOval(this.posx,this.posy, 2*radius, 2*radius); // la balle g.setColor (Color.yellow); g.fillOval(centrex, centrey, 5, 5); // le centre du cercle } } // fin classe Balle public class Raquette { // creation de la classe raquette protected int largeur; protected int hauteur; protected int posx ; protected int posy; private int posx2; private int posy2; private int posx3; private int posy3; private int posx4; private int posy4; private int dx,dy; protected int centrex; protected int centrey; public Raquette(int x, int y, int largeur, int hauteur) { this.largeur = largeur; this.hauteur = hauteur; point = 0; this.posx = x; this.posy = y; posx2 = posx + largeur ; posy2 = posy ; posx3 = posx ; posy3 = posy+ hauteur; // posx4 = posx3 + largeur; // x ------------------x2 posy4 = posy2 + hauteur; // x3------------------x4 } public int getcentrex () { // on calcul le centre de l'objet centrex = (posx + (largeur/2)); return this.centrex; } public int getcentrey () { centrey = (posy + (hauteur/2)); return this.centrey; } public int getX (){ return this.posx; } public int getX2 (){ posx2 = posx + largeur ; return this.posx2; } public int getX3 (){ posx3 = posx ; return this.posx3; } public int getX4 (){ posx4 = posx3 + largeur; return this.posx4; } public int getY (){ return this.posy; } public int getY2 (){ posy2 = posy ; return this.posy2; }public int getY3 (){ posy3 = posy+ hauteur; return this.posy3; }public int getY4 (){ posy4 = posy2 + hauteur; return this.posy4; } public void setX(int x){ this.posx = x; } public void setY(int y){ this.posy = y; } public void collisionboule (Balle balle){ this.dx = balle.dx ; this.dy = balle.dy ; if (balle.getX()>=this.posx+2 && balle.getX()<= this.posx + largeur-1){ // milieu raquette if(balle.getY()>= this.posy-1){ balle.setY(this.posy-3); point+=15; directionNS = -directionNS; balle.move(dx,-dy); } } if (balle.getX()>this.posx+largeur-1 && balle.getX()<= this.posx + largeur+3){ // coin droit de la raquette if (balle.getY()+4>= this.posy && balle.getY()+4<=this.posy+2){ balle.setY(this.posy-3); point+=15; if (direction == -1){ // sens negatif (mouvement de la balle vers la gauche) balle.move(-dx,-dy); // La balle repart dans l'autre sens directionNS = -directionNS; direction = -direction;} else{ balle.move(dx,-dy); // sinon elle conserve son sens de deplacement sur x directionNS = -directionNS; } } } if (balle.getX()>= this.posx-3 && balle.getX()<=this.posx){ // coin gauche de la raquette if (balle.getY()+2>= this.posy && balle.getY()+2<=this.posy+2){ balle.setY(this.posy-3); point+=15; if (direction ==1){ // sens positif (vers la droite) balle.move(-dx,-dy); // La balle repart dans l'autre sens directionNS = -directionNS; direction = -direction;} else{ balle.move(dx,-dy); directionNS = -directionNS; } }} repaint(); } public void dessiner (Graphics g){ // dessine la raquette g.setColor(Color.red); g.fillRect(this.posx-3,this.posy,largeur+3,hauteur); repaint(); } } // fin classe Raquette public class Brique extends Raquette { // on herite de raquette et de ses fonctionnalités private boolean casseb ; private double u , v; private double distance = 0; double chevx, chevy; public Brique(int x, int y, int largeur, int hauteur) { super(x,y,largeur,hauteur); u = 0; v = 0; chevx=0; chevy=0; casseb= false; } public boolean distance (Balle balle){ // méthode permettant de calculer la distance des objets et de voir s'il y a collision u = balle.getcentrex() - this.getcentrex(); v = balle.getcentrey() -this.getcentrey(); double distance = Math.sqrt((u*u)+(v*v)); // on calcul la distance if (distance <= 2*balle.getradius()+1 ){ if (balle.getY()<= this.getY3() && balle.getY() >= this.getY()){ if (balle.getX()>=this.getX() && balle.getX()<=this.getX2()); return true; } } //if (balle.getY()<this.getY3() && balle.getY() > this.getY()){ // //if(balle.getX()> this.getX() && balle.getX()< this.getX2()){ // return true;}} //if (balle.getY2()< this.getY3() && balle.getY3() > this.getY()){ // if(balle.getX2()> this.getX3() && balle.getX2()< this.getX4()){ return true;}} return false; } public void collision (Balle balle) { // on redefinit la methode collision if (distance(balle) && casseb==false){ balle.move(-balle.dx, -balle.dy); direction = -direction; directionNS = -directionNS; casseb=true; nbbrique--; point = point + 3; } } public boolean getcasse(){ return this.casseb; } public void dessiner (Graphics g){ if (casseb==false){ g.setColor(Color.blue); g.fillRect(this.posx+25,this.posy,largeur,hauteur); g.setColor (Color.yellow); g.fillOval(this.getcentrex()+25, this.getcentrey(), 5, 5); // pt jaune permettant de reperer le centre de l'objet repaint();} } } public class Menu { private int dx,dy; public Menu(){ this.dx = boule.dx; this.dy = boule.dy; } public void presentation (Graphics g){ g.setFont(new Font("Arial",Font.BOLD,14)); g.setColor(Color.green); g.drawString("SQUASH GAME",50,110); g.drawString("START -> ENTER",50,130); if (!demarrage && !perdu){ premierefois = false; g.setColor(Color.black); g.fillRect(0,0,size().width, size().height); } } public void perdu (Graphics g){ g.setFont(new Font("Arial",Font.BOLD,14)); g.setColor(Color.green); g.drawString("GAME OVER",60,80); g.drawString("SCORE : "+ point, 60, 130); } public void score (Graphics g ){ g.setFont(new Font("Arial",Font.BOLD,13)); g.setColor (Color.yellow); g.drawString("Score : "+ point, 20, 190); } } // fin classe Menu public boolean mouseMove(Event evt, int x, int y) // methode de pingpong { raquette.setX(x); repaint(); return true;} public boolean keyDown(Event evt, int key) { if(key == Event.ENTER) { if(demarrage && !(perdu)){ // test récupere l'entrée et verifie si le programme a demarrer jeujeu.demarrage= false; jeujeu.perdu = false; start(); // si c'est pas le cas on le demarre } } return true; } } // fin classe pingpong
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.