J'étais inactif pendant les vacances, alors j'ai passé plus d'une semaine à regarder une vidéo publiée par un maître alwing du Baidu Java Bar. J'ai appris à écrire un Tetris à Java. Ici, je voudrais le remercier pour son aide sous la forme de publication du code source et des explications nécessaires. Bien sûr, j'ai également apporté quelques modifications ici, et l'interface du programme et les fonctions que j'ai faites ne sont pas exactement les mêmes que les siennes.
L'interface pour l'exécution de l'ensemble du programme est la suivante:
Les fonctions incluses dans le programme sont:
un,
La conception de l'ensemble du programme est illustrée dans la figure ci-dessous, avec un total de sept packages. Étant donné que la conception d'origine du programme devait se connecter à la base de données pour enregistrer les noms d'utilisateurs et les scores, et que mon ordinateur n'a pas réussi à installer le logiciel de base de données, j'ai fait des ajustements aux fonctions. Par conséquent, certains noms de packages et noms de classe ne correspondront pas à leurs propres fonctions.
deux,
La programmation d'interface la plus importante dans l'ensemble du programme est établie par la classe de couche dans le package d'interface utilisateur. Il définit une méthode pour faire une image d'image de 64 par 64 pixels et l'étirer en largeur et hauteur prédéterminées en utilisant la fonction DrawImage, et l'afficher dans les coordonnées spécifiées, devenant ainsi une fenêtre. Chaque calque ***. La classe Java dans le package d'interface utilisateur hérite de la classe de couche et est utilisée pour implémenter chaque interface de fenêtre, telle que la fenêtre principale du jeu (Layergame), la fenêtre de niveau (couchel), la fenêtre de score (couche de couche), etc. En outre, j'ai également couvert la surface de la fenêtre avec une couche d'images translucides, réalisant ainsi une "brume".
trois,
La classe IMG est utilisée pour déclarer tous les objets d'image. Lorsque je déclare la fenêtre de l'image de bordure, j'ai délibérément écrit le mauvais chemin, réalisant ainsi l'effet sans bordure.
Quatre,
Le dessin des carrés qui tombent se fait également par coupe d'image.
Chaque bloc de couleurs différentes est de la même taille, et chaque fois que vous utilisez la fonction de dessin pour couper des blocs de différentes couleurs. Tout d'abord, vous devez considérer la fenêtre de jeu principale comme un système de coordonnées avec le coin supérieur gauche comme l'origine. La fenêtre du jeu principal a une largeur de 9 et une hauteur de 16, de sorte que les coordonnées du coin inférieur droit devraient être (15, 8), afin que vous puissiez définir les coordonnées du carré qui tombe. Utilisez ensuite List <Point []> pour enregistrer les coordonnées de chaque petit carré dans le bloc de chute.
Le carré qui tombe doit être dans les sept formes suivantes:
Ensuite, les coordonnées initiales lorsque les blocs 0 à 6 tombent librement doivent être:
Type_config = new ArrayList <Point []> (7); type_config.add (new Point [] {new Point (4,0), nouveau point (3,0), nouveau point (5,0), nouveau point (6,0)}); type_config.add (nouveau point [] {new Point (4,0), new Point (3,0), nouveau point (5,0), new) Point (4,1)}); type_config.add (nouveau point [] {nouveau point (4,0), nouveau point (3,0), nouveau point (4,1)}); type_config.add (nouveau point [] {nouveau point (4,0), nouveau point (3,0), nouveau point (5,0), nouveau point (3,1)}); Point (4,0), nouveau point (5,0), nouveau point (3,1), nouveau point (4,1)}); type_config.add (nouveau point [] {nouveau point (4,0), nouveau point (5,0), nouveau point (4,1), nouveau point (5,1)}); type_config.add (new Point [] {new Point (4,0), new (3,0), new Point [] {new Point (4,0), new Point (3,0), New Point [] {New Point (4,0), New Point (3,) Point (5,0), nouveau point (5,1)}); type_config.add (nouveau point [] {new Point (4,0), nouveau point (3,0), nouveau point (4,1), nouveau point (5,1)});Chaque carré a un point central. Lorsque le carré tourne, le carré tourne à 90 ° au centre du cercle à ce point central. La méthode de rotation est la suivante:
cinq,
Le contrôle logique du jeu est principalement dans la classe GameService, ce qui réalise la détermination de savoir si la ligne peut être éliminée, le fonctionnement de la ligne, le fonctionnement correspondant au clavier, etc.
six,
Le programme utilise deux packages JAR supplémentaires, DOM4J-1.6.1.jar et JL1.0.1.jar. Dom4j-1.6.1.jar est utilisé pour lire les fichiers XML. Il existe un fichier CFG.xml dans le dossier de configuration, qui définit la taille et l'emplacement de chaque fenêtre. Utilisez DOM4J-1.6.1.jar dans le programme pour lire les données XML, puis configurez l'interface du programme en fonction de ces données. Par conséquent, tant que la valeur en XML est modifiée, la taille et les coordonnées de la fenêtre peuvent être modifiées.
JL1.0.1.jar est utilisé pour jouer de la musique de fond. C'est une fonction que j'ai ajoutée moi-même. Grâce à la méthode fournie par ce fichier JAR, la fonction de lecture de la musique peut être simplement implémentée. Dans la classe Mp3Player et la classe principale, un nouveau fil doit être créé dans la classe principale. Méthode de référence spécifique: musique de lecture de fond de Javaswing
Sept,
Téléchargement du programme de code source: code source
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.