Javabreak game

Soyez le premier à donner votre avis sur cette source.

Vue 9 331 fois - Téléchargée 1 223 fois

Description

C'est un petit casse brique (applet) rien de révolutionnaire qui prend sa source dans les précédents codes, aujourd'hui il a bien évolué.
Les évolutions :
-approche orienté objet
-utilisation d'un pattern Strategy
-un nouvel algorithme de collisions plus efficace sur certains points
-des bonus à récupérer
-Lecture/Ecriture du score et du niveau (utilisable hors IDE après avoir signé l'applet)
-Tableau de levels facilement éditable
Il est fonctionnel et sous licence Gnu/Gpl.

Source / Exemple :


/*
    <JAVABREAK GAME (version 1.0) is a Java applet of the classic breakout game>
    Copyright (C) 2011 BENMAMMAR FAHEM <fate12346@gmail.com>
  *
    With thanks to Legrand Benoit <www.trivialpourgeek.com> for his participation
    in the first phase of the adaptation of this program in OOP.
  *
    JAVABREAK GAME is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    JAVABREAK GAME is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with JAVABREAK GAME.  If not, see <http://www.gnu.org/licenses/>.

  • /
import java.applet.*; import java.awt.*; import java.awt.Event; public class JavaBreakGame extends Applet implements Runnable { private static Jeu jeu; public static boolean encour = true; public static boolean perdu = false; public static boolean pause = false; public static boolean etat ; public static int referentiel; public static boolean tetebrule = false; public static boolean changer; public int levelActuel; public static Fichier fichier; public static AudioClip S0,S1, S2, S3,S4,S5; Image Image; Graphics d; Graphics g; public void init(){ fichier = new Fichier("test.txt"); levelActuel = fichier.chargerFichier(); //levelActuel=0; //Bonus.scoreDuJeu=0; changer = true; etat = true; referentiel = 0; this.setSize(440, 300); S0=getAudioClip(getCodeBase(), "ennemi.wav"); S1=getAudioClip(getCodeBase(), "level+1.wav"); S2=getAudioClip(getCodeBase(), "bonus.wav"); S3=getAudioClip(getCodeBase(), "retrorebond.wav"); S4=getAudioClip(getCodeBase(), "riregrave.wav"); S5=getAudioClip(getCodeBase(), "skywalker.wav"); setBackground (Color.black); jeu = new Jeu(levelActuel); } public void start (){ Thread th = new Thread (this); th.start (); } public void run (){ while (!(perdu)&& !(encour)) { if (!pause) { levelActuel = jeu.getLevelActuel(); // on met a jour la variable if(jeu.outLife()){ stopMove(); } jeu.mouvementEtCollisionDuJeu(); if (jeu.plusDeBrique()){ if (jeu.getLevelActuel() <= 10){ fichier.enregistrerFichier(jeu.getLevelActuel(),Bonus.scoreDuJeu); S1.play(); changer = true; encour = true; } } if (jeu.finDuJeu()){ fichier.enregistrerFichier(0,0); // on revient au debut perdu =true; } repaint(); try { Thread.sleep (8); } catch (InterruptedException ex) { } Thread.currentThread().setPriority(Thread.MAX_PRIORITY); } } } public void paint (Graphics g){ jeu.affichageJeu(g); levelActuel = jeu.getLevelActuel(); // on met à jour la valeur de la variable if (levelActuel<=9){ // On affiche le menu de presentation if(encour==true){ g.setColor (Color.WHITE); g.setFont(new Font("Arial",Font.BOLD,14)); g.drawString("JAVABREAK GAME",80,140); g.drawString("START -> ENTER",310,140); g.drawString("PAUSE -> BAS",310,155); if (changer==true) // A chaque changement de niveau on affiche le nouveau niveau { g.setFont(new Font("Arial",Font.BOLD,13)); g.drawString("NIVEAU " + ((levelActuel+1)),110,157); } } } if (pause && !(perdu)) // si le jeu est en pause mais n'est pas termine { g.setFont(new Font("Arial",Font.BOLD,14)); g.setColor (Color.white); g.drawString("REJOUER !", 85, 145); } if((perdu)){ g.setFont(new Font("Arial",Font.BOLD,14)); g.setColor (Color.WHITE); g.drawString("GAME OVER",85,140); g.drawString("SCORE : "+ Bonus.scoreDuJeu, 85, 157); g.setFont(new Font("Arial",Font.BOLD,10)); } g.setColor(Color.red); } public void update (Graphics g) { Image = createImage (this.getSize().width, this.getSize().height); d = Image.getGraphics (); paint (d); g.drawImage (Image, 0, 0, this); } public boolean mouseMove(Event evt, int x, int y) { jeu.getListeLevels().get(levelActuel).getBarre().setPositionBarreX(x); int positionXbarre = jeu.getListeLevels().get(levelActuel).getBarre().getPositionBarreX(); if(etat){ // etat du clic cela permet de differer et conserver le traitement des informations etat = false; reference (etat,positionXbarre); } if (!(etat)){ etat = true; reference (etat,positionXbarre); } repaint(); return true; } public void reference (boolean etat, int position){ // on prend l'ancienne position de la raquette // on regarde le mouvement de la raquette par rapport à son ancienne position if (etat){ referentiel = position; } else{ if (position > referentiel){ jeu.getListeLevels().get(levelActuel).getBarre().setDirectionBarre(1); } else{ jeu.getListeLevels().get(levelActuel).getBarre().setDirectionBarre(-1); } } } public boolean keyDown(Event evt, int key) { // recupere une valeur pour afficher le titre du jeu if( key ==Event.ENTER) { if (!perdu && encour ) { encour= false; perdu = false; changer=false; start(); } pause = false; return true; } if( key ==Event.DOWN){ pause=true; return true; } return false; } public void stopMove(){ // on arrete le jeu lorsqu'il n'a plus de balle if (Bonus.vie>=0) { // quand la balle est out on en met une nouvelle en place pause = true; int positionBarreX = jeu.getListeLevels().get(levelActuel).getBarre().getPositionBarreX(); int positionBarreY = jeu.getListeLevels().get(levelActuel).getBarre().getPositionBarreY(); jeu.getListeLevels().get(levelActuel).getListeBalles().add(new Balle(positionBarreX, positionBarreY-5, 5,45, 1, -1, 3)); } else{ fichier.enregistrerFichier(jeu.getLevelActuel(),Bonus.scoreDuJeu); jeu.setFinDuJeu(true); } } }

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020
302
Bonjour,

C'est mieux que la première version, c'est certain. Par contre, tu peux ne poster que le dossier src, les .class sont inutiles et perturbent même l'affichage de l'arborescence.
>
Messages postés
6414
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
29 juillet 2020

OK mec

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.