Projet JAVA - Tétris En Réseau.


 


Sommaire :

        La Version du Jeu.
        Les Auteurs du Jeu.
       Objectif Anoncé de ce projet.
       Outils utilisés.
       Comment Jouer.
       Description détaillée du Jeu.
       Comment ça marche ?
       Télécharger le jeu.
        Versions ultérieures et modifications envisagées.
        Signaler des problèmes.


Version :

        Tetris 1.0 : version de base mais alors de base....
        Application Java.
        Pas encore disponible en Applet.


Auteurs :

      Alamargot François & Buiguez Arnaud.


Objectif Anoncé :

        Le but de notre projet Java était de refabriquer en Java le fameux jeu Tétris. Afin d'en faire un programme convivial et facile d'utilisation, nous avons essayé de soigner au maximum la présentation et d'adjoindre au programme un grand nombre d'options et de possibilités de sorte à en faire un jeu simple d'utilisation et attractif.
        Notre Tétris propose donc un certain nombre d'options :
            - Jeu en Solitaire (1 Joueur).
            - Jeu à deux via le réseau.
            - Choix du Niveau de difficulté (niveau de départ et vitesse).
            - Ajout d'un handicap de lignes initiales.
            - Insertion de pièces créées personnellement.
            - Aide en ligne.
            - Gestion des meilleurs scores.

        Ce Tétris a été placé sous la direction des Guignols de l'Info (Canal +).


Outils Utilisés :

        Le logiciel a été réalisé à l'aide :
                - Du JDK de Java 1.1.6.
                - De la bibliothèque graphique Swing JFC 1.02
                - De VisualAge, le très efficace produit d'IBM pour programmer en Java.


Comment Jouer :

       1. Le Jeu en Solitaire :
          Inutile de rappeler le but du jeu Tétris... On effectue des rotations et des translations horizontales sur des pièces qui descendent progressivement et de plus en plus rapidement. Le but est de les entasser de telle sorte à essayer de former des lignes qui disparaitront si elles sont complètes ... et ce, jusqu'à ce que cela aille trop vite !...
            Il est donc possible de déplacer les pièces vers la gauche et vers la droite (via les flêches gauche et droite) ainsi que de les tourner dans le sens inverse des aiguilles d'une montre grâce à la flêche du haut. La flêche du bas, quant à elle, permet d'accélérer la vitesse de descente de la pièce en cours.
            La vitesse accélère à chaque niveau ; on accède au niveau supérieur chaque fois que 10 lignes pleines ont été effectuées...
          Avis aux amateurs : Le fond d'écran change également à chaque niveau...

      2. Le Jeu en Réseau :
            Le jeu en réseau ne change pas fondamentalement le but du jeu. Sauf que maintenant l'adversaire n'est plus seulement le temps mais aussi un autre joueur. Le but du jeu est de jouer plus longtemps que son adversaire. Pour corser l'affaire, plus on complète de lignes avec une seule pièce (c'est-à-dire du premier coup) et plus on envoie un handicap important à son adversaire :
            Deux lignes pleines créent deux lignes de trous chez l'adversaires, trois lignes créent trois lignes de handicap et quatre lignes pleines en créent... eh oui, quatre...
            Il faut non seulement créer des lignes pleines (pour qu'elles disparaissent), mais en plus en créer beaucoup en une seule fois (pour gêner l'adversaire)...

            Pour lancer le jeu réseau, il faut que les deux joueurs se placent en configuration "2 Joueurs", que l'un des deux se mette en serveur et que l'autre se mette en client en précisant le nom de la machine serveur avec laquelle il souhaite se connecter.


Description détaillée du Jeu.

   1. Les Pièces du Jeu :

            Comme dans tous les Tétris qui se respectent, on retrouve les mêmes pièces.

            Ce sont ces pièces que l'on peut translater, tourner et emboîter. Leur couleur est choisie aléatoirement au fil du jeu. Il est également possible de créer ses propres briques grâce à l'éditeur de pièces. Ces dernières ont, par contre, une ou des couleurs prédéfinies par le créateur.

      2. Le Menu Jeu :

            Dans le menu Jeu, il est possible de mettre le jeu en position Pause et de le faire redémarrer. On peut également exécuter une nouvelle partie, ce qui a pour effet de remettre tous les scores à 0 et d'effacer la partie en cours. Il y enfin la possibilité de quitter le jeu.
            Un menu de Jeu plus que classique en fin de compte...
 



 


        3. Le Menu Options :

            Le menu Options offre plusieurs possibiltés :
 



 


        - Son : Possibilté de couper le son. Etant donné que le son n'a pas été implémenté dans cette version, ce menu est caduc !!!
        - Aperçu de la pièce : Quand la case est cochée, il y a possibilité de voir la pièce suivante qui aparaîtra dans le jeu. Si la case n'est pas cochée, on ne la voit évidemment pas.
        - Niveau : Losqu'une partie est terminée, on a la possibilté de définir le niveau à partir duquel la partie suivante démarrera. C'est plutôt pratique pour les joueur chevronnés qui souhaitent s'entraîner à une niveau rapide. Echelle de 1 à 10.
        - Handicap : Losqu'une partie est terminée, on peut également corser le jeu en fabriquant artificiellement des lignes difficilement remplissables. On peut créer ainsi entre 0 et 7 lignes.
        - 1 ou 2 joueurs : On sélectionne un jeu solitaire en local ou un jeu à deux en réseau.
        - Meilleurs Scores : On peut visualiser les meilleurs scores réalisés sur ce jeu.
 



 


        4. Le Menu Personnaliser :
 



 


            Le menu Personnaliser permet de créer ses propres pièces grâce à un éditeur approprié.
 



 


            L'éditeur permet à la fois de choisir les dimensions de la pièce que l'on va créer (entre 1x1 et 5x5). On peut également choisir la couleur des blocs qui composeront cette pièce. Contrairement aux pièces par défaut qui peuvent prendre n'importe quelles couleurs, cette pièce gardera les couleurs que l'on lui donne dans cette éditeur.
            On peut soit sauvegarder cette pièce en vue d'une partie ultérieure, soit charger une pièce que l'on avait créé au préalable. On peut enfin ajouter directement cette pièce au jeu. Elle sera integrée immédiatement à la partie en cours, même si la partie n'avait pas été interrompue pendant la création ou le chargement de cette pièce.
            Il est possible d'ajouter au jeu autant de pièces qu'on le souhaite. Il est bien entendu que le libre choix donné à l'utilsateur quant à la géométrie de la pièce peut lui permettre de faciliter le remplissage des lignes ou, au contraire, rendre quasi impossible le bon déroulement du jeu (cas de pièces creuses fermées, etc...).

        5. Le Menu d'Aide :
 



 


            Le Menu d'aide a pour ambition de répondre à la norme concernant la création d'interfaces graphiques, c'est-à-dire proposer à la fois une fenêtre "A Propos" précisant la version et les auteurs du logiciel, et une aide en ligne conviviale permettant de se retrouver dans le jeu en cas de problème. A l'heure actuelle, cette aide en ligne n'a été tapée que très partiellement mais sera probablement disponible à la rentrée 1999.
 



 







Comment Ca Marche ?

      1. Le Noyau du Tétris :

            Le jeu Tétris est modélisé par une matrice de 12 colonnes et de 20 lignes. Chaque élément de cette matrice correspond à une brique. Si une brique existe dans le jeu, on conservera dans la matrice la couleur de la brique ; si aucune brique n'existe, la matrice aura pour élément -1. Et ce pour chaque case de la matrice...
            Chacune des pièces en cours d'évolution est également définie avec une matrice selon le même principe que celle du jeu. La pièce en cours d'évolution est 'calquée' lors de chacun de ses déplacements. Mais cette dernière reste indépendante c'est-à-dire qu'elle n'est intégrée dans la matrice du jeu que lorsqu'elle ne peut plus évoluer (elle perd alors son identité et s'assemble aux autres blocs déja présents dans la matrice du jeu).
            Toute la difficulté du jeu consiste donc à gérer les différentes pièces au sein de cette matrice. Il faut gérer la collision entre la pièce en évolution et les blocs des autres pièces déja entassés dans le jeu mais également éviter la sortie de la pièce de la matrice du jeu, les rotations possibles, et enfin vérifier losqu'une ou plusieurs lignes doivent être supprimées. Il est alors possible de calculer le score et le nombre de lignes effectuées et d'opérer ainsi aux changements de niveau éventuels.

       2. Le Réseau :

            Pour gérer la connexion entre deux personnes, il faut que l'on ait un client et un serveur. A priori, il n'y a aucune raison de choisir une machine particulière pour jouer le rôle de serveur. C'est donc aux utilisateurs de choisir lequel des deux se mettra en attente de connexion, et celui qui effectuera une demande auprès de ce serveur.

            Une fois le jeu mis en place, il faut envoyer des informations à l'autre machine. Cette communication se fait bien sûr par le biais d'un socket. Chaque machine est en attente d'information. Lorsque plusieurs lignes sont remplies d'un même trait, on envoie sur le socket un entier correspondant au nombre de lignes qui devront être créées sur le jeu de l'adversaire. La création de pièce se fait alors en local.

            Dès qu'une personne à perdu sa partie ou s'est déconnectée, on envoie un message de telle sorte que le jeu s'arrête en contexte réseau et prévienne l'autre joueur. Ce dernier peut cependant continuer sa partie et espérer battre les meilleurs scores...

      3. L'interface graphique :

            Toute l'interface graphique a été réalisée avec la bibliothèque graphique 'Swing'. Toutes les fenêtres ont été conçues par nous-même, à l'exception de l'A Propos qui a été réalisé avec les Java Beans (ce qui explique le code un peu moins propre....), ce qui nous a permis de réaliser une interface conforme à ce que nous désirions.


Téléchargement :

        Vous pouvez consulter :

            - La JavaDoc du programme.
      Attention : L'arbre principal ne tient pas compte de toutes les classes qui derivent d'une classe appartenant à la bibliothèque Swing.
                        Peut-être javadoc saura-t-il le gérer avec le JDK 1.2 !?!

        Vous pouvez télécharger :

            - Les sources du logiciel (tous les fichiers: les .java et les .class) : Zip de 95 Ko.
            - Un .jar du programme : Jar de 98 Ko.
            - La JavaDoc : Zip de 82 Ko.
            - La totale : (.jar + JavaDoc + photos...) : Zip de ? Ko.


Modifications Envisagées :

        Dans une version ultérieure, il est envisagé de créer le même programme en Applet, de sorte à ce que le jeu soit "testable" sur le Web, et d'y ajouter un certain nombre d'effets sonores, en particulier des voix des Guignols correpondants aux différents événements qui ont lieu pendant une partie, histoire de rendre le jeu plus convivial.


Dernière Note :

      Si vous avez testé ce jeu sur votre ordinateur, que vous constatez des problèmes particuliers ou que vous avez des idées d'évolution, n'hésitez pas à nous prevenir ; il sera toujours possible de modifier le source...