begin process at 2010 03 21 02:26:38
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Jeux

 > DÉMINEUR COMPLET AVEC GESTION DES MEILLEURS TEMPS

DÉMINEUR COMPLET AVEC GESTION DES MEILLEURS TEMPS




 Description

Cliquez pour voir la capture en taille normale
Voici le jeu de Démineur que mon collègue et moi avons créé pour un travail de cégep.

Fonctionnalités :
- Niveaux de difficulté : Facile, Intermédiaire, Difficile et Personnalisé.
- Enregistrements des meilleurs scores dans les Préférences de Java
- Les mines ne sont générés qu'après le premier clique de la souris (comme dans le vrai démineur) afin de ne pas tomber sur une mine du premier coup et de crever en partant, ce qui serait chiant. Je sais que c'est normal, mais j'ai cru bon de le dire car pour mon prof c'était une fonctionnalité supplémentaire.
- Le jeu est le plus fidèle au Démineur de Windows (apparence, interface, etc.)
- Possibilité de tricher pour dévoiler les mines (il est impossible d'enregistrer de score dans ce cas, logique):

Pour activer le mode triche, il faut naturellement entrer un mot de passe. Le bout de code qui génère un mot de passe compliqué est volontairement non commenté et exagérémment compliqué (ne notez pas là-dessus). C'est un petit défi que je vous offre (pas bien difficile mais bon). Ce sera enlevé et le mot de passe sera mis en constante dans les prochaines versions. (je n'ai évidemment pas donné ça au prof, je l'ai rajouté juste pour vous)

Ceux qui ont le sens de l'observation remarqueront que j'ai utilisé ma classe LCDPanel pour afficher les mines et le temps.

Le seul bogue connu est lorsqu'on clique sur Annuler pour créer une grille personnalisée, puis qu'on joue et ensuite on recommence, il garde les settings personnalisés même si c'est débutant (donc ça foire)

c'est aussi très lent au niveau de la création d'une nouvelle grille (changement de taille) pour le reste c'est fluide.


Donc amusez-vous !


 Conclusion

Je vous fournit le projet Eclipse réalisé avec Java 1.5 ainsi qu'un jar de test. Comme c'était un projet d'évaluation pas besoin de vous dire que ça a été rigoureusement testé, mais il peut quand même rester des bogues.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture PANNEAU À AFFICHAGE NUMÉRIQUE LCD

 Sources de la même categorie

Source avec Zip Source avec une capture JEU DE MASTERMIND EN JAVA par hysteria
Source avec Zip Source avec une capture DÉMARRAGE DE JEUX DE CARTES par mercierdes
Source avec Zip Source avec une capture OUTPOST (PAS FINIT) par Pratana
Source avec Zip CITY, C'EST UN JEU DE VILLE par edouard333
Source avec Zip Source avec une capture PETIT JEU AVEC JAVAFX par puccino1er

 Sources en rapport avec celle ci

Source avec Zip CHRONOMETRE par didoux95
Source avec Zip Source avec une capture SUDOQU, UN SUDOKU EN RESEAU par PierreLaurent
Source avec Zip DÉMINEUR HEXAGONAL par pabbati
GRILLE HEXAGONALE par krissssss
TEMPS ACTUEL AMÉLIORÉ par shadosan

Commentaires et avis

Commentaire de uhrand le 18/12/2007 10:08:40

Bravo, cela a l'air de bien fonctionner.
Ce qu'on pourrait faire encore:
Dans le démineur de Windows on peut cliquer sur un carré simultanément avec les boutons gauche et droit de la souris
pour avoir une fonction spéciale (voir "Stratégies et astuces" dans l'aide du démineur de Windows).

Commentaire de damned3 le 18/12/2007 22:18:11

En effet, il y a bel et bien une fonction spéciale.

Je suis surpris, je ne la connaissais pas et mon collègue "démineur-freak" ne la connaissais pas non-plus.

J'avoue que c'est utile, mais je ne sais pas comment je pourrais détecter un clic simultané des deux boutons en Java.

Commentaire de uhrand le 20/12/2007 17:23:16

J'avoue que ce n'est pas très facile. Mais avec un Thread ça devrait marcher. Voici mon premier essai d'implémentation:
http://www.java-forum.org/de/userfiles/user3690/LeftRightClickDemo.java

Commentaire de uhrand le 20/12/2007 18:57:23

Je viens d'optimiser un peu. Dans la première version, le Thread tournait tout le temps.
Maintenant, il est démarré seulement quand on enfonce un bouton de la souris.
Si aucun bouton n'est enfoncé, le Thread est interrompu.

Commentaire de uhrand le 29/12/2007 10:33:28

Et voici un essai d'intégration dans Minesweeper:
public class GameGrid extends JPanel implements MouseListener, SquareButtonListener {
...
    private boolean left;
    private boolean right;
    private boolean none;
    private boolean leftRight;
    private boolean leftNotright;
    private boolean rightNotleft;
    private MouseEvent evt;
    private Thread buttonThread;
...
...
    private void squareButton_leftrightClick(SquareButton square) {
        System.out.println(square.getXSquare() + "," + square.getYSquare() + " leftRight");
    }
...
    public void mousePressed(MouseEvent e) {
        if (buttonThread == null || !buttonThread.isAlive()) {
            buttonThread = new Thread(new RunButton());
            buttonThread.start();
        }
        setKey(e, true);

        if (AppFrame.getInstance().getGameBoard().isInGame()) {
            AppFrame.getInstance().getGameBoard().indicateMousePressed();
        }
    }

    public void mouseReleased(MouseEvent e) {
        if (leftNotright) {
            leftAction(e);
        }
        setKey(e, false);

        if (AppFrame.getInstance().getGameBoard().isInGame()) {
            AppFrame.getInstance().getGameBoard().indicateMouseReleased();
        }
    }
...
    public void leftAction(MouseEvent evt) {
        SquareButton square = (SquareButton) evt.getSource();
        if (AppFrame.getInstance().getGameBoard().isInGame()) {
            this.squareButton_leftClick(square);
        }
    }

    public void rightAction(MouseEvent evt) {
        SquareButton square = (SquareButton) evt.getSource();
        if (AppFrame.getInstance().getGameBoard().isInGame()) {
            this.squareButton_rightClick(square);
        }
    }

    public void leftRightAction(MouseEvent evt) {
        SquareButton square = (SquareButton) evt.getSource();
        if (AppFrame.getInstance().getGameBoard().isInGame()) {
            this.squareButton_leftrightClick(square);
        }
    }

    public void noneAction(MouseEvent evt) {
        if (buttonThread != null && buttonThread.isAlive()) {
            buttonThread.interrupt();
        }
    }

    private void setKey(final MouseEvent e, final boolean b) {
        evt = e;
        if (SwingUtilities.isLeftMouseButton(e)) {
            left = b;
        }
        if (SwingUtilities.isRightMouseButton(e)) {
            right = b;
        }
    }

    class RunButton implements Runnable {

        public void run() {
            while (true) {
                try {
                    Thread.sleep(50);
                } catch (InterruptedException e) {
                    break;
                }
                if (left && right && !leftRight) {
                    leftRight = true;
                    none = false;
                    leftNotright = false;
                    rightNotleft = false;
                    leftRightAction(evt);
                } else if (!left && !right && !none) {
                    leftRight = false;
                    none = true;
                    leftNotright = false;
                    rightNotleft = false;
                    noneAction(evt);
                } else if (left && !right && !leftNotright && !leftRight) {
                    none = false;
                    leftNotright = true;
                    rightNotleft = false;
                } else if (!left && right && !rightNotleft && !leftRight) {
                    none = false;
                    leftNotright = false;
                    rightNotleft = true;
                    rightAction(evt);
                }
            }
        }
    }
}

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Génération de PDF et Temps d'exécution [ par stevenleferran ] Bonjour à tous,je souhaiterai savoir s'il est possble de générer un fichier PDF via une servlet mais, le temps d'exécution de cette servletpourra pren Presentation [ par minosubb ] Bonjour,Je me presente, Minos.Je suis programmeur Coboliste sur gros system IBMJe suis un nouveau venu sur JAVA codes sources. et sur JAVA tout court. Petit problème simple [ par wamdeus ] Bonjour tout le monde, en cette belle journée de 1er Mai (fête du travail ne l'oublions pas) j'ai une bonne question à vous poser.Petit résumé de mon fonction de test impossible avec if et switch [ par wamdeus ] Re tout le monde me voici avec un nouveau problème ; je suis toujours avec mon problème de grille;j'aimerai créer une fonction de remplissage pour met probleme avec for+while [ par wamdeus ] bon bah c'est très simple mon but est de créer un mot mêlés, j'ai donc fait des méthodes d'alignement comme ci dessous : // public void Diag6_1(String ecrire dans un fenetre [ par wamdeus ] Salut salut, alors voila je suis toujours avec mon jeu de mots mêlés et j'aimerai afficher ma grille dans ma fenetre sachant que j'affiche ma grille a Player vidéo [ par girl777 ] Bonjour tout le monde !J'ai réalisé un player vidéo fonctionnel. Il possède un bouton play, pause, stop ainsi qu'une barre de progression pour le temp Grille dans un Jpanel [ par ABF ] >Slt, > >J'ai un soucis en Java avec Netbeans, > >Je veux réaliser un grille sur un Jpanel avec des images MAIS c'est pas concluant synchronisation souris [ par artichaud ] Hello, j'ai un problème de synchronisation entre une animation (qui suit les mouvements de la souris) et les mouvements de la souris via un drag. Lors ProgressBar ? [ par merioma ] salut;j'ai une fonction qui fait une certaine traitement d'analyse  , dans l'interface de mon programme j'ai ajouté ProgressBar je veux  le relié  ave


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales