Jeu Java programmation tutoriel - Flappy oiseaux Redux (8 / 12 étapes)

Étape 8: Étoffer le jeu : II

Maintenant il est temps de créer le mouvement de fond que l'on voit sur l’écran de démarrage. Cela nécessite l’ajout de la méthode gameScreen à TopClass, ainsi que plusieurs méthodes setter dans PlayGameScreen.

Nous commençons par discuter de l’ajout de la méthode gameScreen dans TopClass - c’est là que réside l’horloge de jeu. Commencez par créer deux instances de BottomPipe et TopPipe. Dès qu’un ensemble de tuyaux pour quitter l’écran, ils vont être repositionnés afin qu’ils viennent de revenir à l’écran. Vous pouvez définir le tuyau largeur et hauteur variables à ce que vous voulez, mais j’ai eux basé sur la taille de l’écran afin d’optimiser le jeu pour différentes tailles d’écran.

Le xLoc1, xLoc2, yLoc1 et yLoc2 variables de référence les coordonnées des deux objets BottomPipe ; emplacements des objets TopPipe seront relatives à l’emplacement BottomPipe. J’ai créé une méthode d’assistance appelée bottomPipeLoc() qui génère un entier aléatoire qui sera utilisé pour la coordonnée y de BottomPipe. Ce nombre doit permettre les TopPipe BottomPipe objets et rester à l’écran.

Sur la ligne suivante du code, nous créons une variable de type long à tenir l’heure système actuelle - cela nous donne une valeur pour le temps que le jeu commence. Cette variable est mise à jour à la fin de chaque itération de la pendule dans l’instruction IF pour stocker les démarrages ultérieurs de chaque itération de l’horloge de jeu. Le principe de l’horloge de jeu est de garder une itération à travers le tout en boucle jusqu'à ce que la différence entre l’heure système actuelle et l’itération l’heure de début est supérieur à une valeur prédéterminée (en millisecondes). L’horloge de jeu va garder une itération aussi longtemps que loopVar a la valeur true ; ce sera seulement changé à false lorsqu’une forme quelconque de collision est détectée.

Le code de l’horloge de jeu inclut des commentaires pour expliquer ce qui se passe là-bas. L’ordre est : mettre à jour les emplacements de l’élément, puis analysent ces éléments mis à jour à la classe qui attire et enfin réellement mise à jour le panneau pour afficher les modifications.

java.awt.Dimension d’importation ; import java.awt.Font ; import java.awt.Image ; import java.awt.Color ; importation impossible ; java.awt.Toolkit importation ; import java.awt.event.ActionEvent ; java.awt.event.ActionListener d’importation ; Import javax.swing.* ; TopClass/public class implements ActionListener {//global variables constantes privé public static final int SCREEN_WIDTH = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth() ; privé public static final int SCREEN_HEIGHT = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() ; privé public static final int PIPE_GAP = SCREEN_HEIGHT/5 ; //distance en pixels entre les tuyaux privé public static final int PIPE_WIDTH = SCREEN_WIDTH/8, PIPE_HEIGHT = 4 * PIPE_WIDTH ; privé public static final int UPDATE_DIFFERENCE = 25 ; //time en ms entre les mises à jour privé public static final int X_MOVEMENT_DIFFERENCE = 5; //distance déplacent les tuyaux chaque mise à jour privé public static final int SCREEN_DELAY = 300 ; requis en raison de temps forçant les tuyaux de chargement long à apparaître //global Mid-écran variables privées booléenne loopVar = true ; faux -> ne pas exécuter la boucle ; vrai -> exécution boucle pour tuyaux //global swing objets privés JFrame f = new JFrame ("Flappy oiseau Redux") ; Private JButton startGame ; privé JPanel Top ; déclarés globalement pour accueillir l’opération repeints et permettre removeAll(), etc. //other global objets privés statique TopClass tc = new TopClass() ; private static PlayGameScreen pgs ; panneau qui possède l’expérience mobile au début du jeu / ** * constructeur par défaut * / public TopClass() {} / ** * méthode exécutable principal invoqué lorsque vous exécutez le fichier .jar * args * / public public static void main (String [] args) {//build le GUI sur un nouveau javax.swing.SwingUtilities.invokeLater de fil (nouvelle Runnable() {public void run() {tc.buildFrame() ; //create un nouveau thread pour garder l’interface graphique sensible tandis que le jeu déroule Thread t = new Thread() {public void run() {tc.gameScreen(true);}}; t.start();}});} / ** * méthode pour construire la JFrame et ajouter le contenu du programme * / private Sub buildFrame() {Image icône = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("resources/blue_bird.png")) ; f.setContentPane(createContentPane()) ; f.setResizable(true) ; f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ; f.setAlwaysOnTop(false) ; f.setVisible(true) ; f.setMinimumSize (Nouvelle Dimension (SCREEN_WIDTH * SCREEN_HEIGHT 1/4, * 1/4)); f.setExtendedState(JFrame.MAXIMIZED_BOTH) ; f.setIconImage(icon) ; f.addKeyListener(this);} privé JPanel createContentPane() {Top = new JPanel() ; //top-most JPanel dans la layout hiérarchie topPanel.setBackground(Color.BLACK) ; //allow nous les panneaux LayoutManager superposition de couche = new OverlayLayout(topPanel) ; topPanel.setLayout(overlay) ; //Start jeu JButton startGame = new JButton ("Start Playing
!"); startGame.setBackground(Color.BLUE) ; startGame.setForeground(Color.WHITE) ; startGame.setFocusable(false) ; plutôt que de simplement setFocusabled(false) startGame.setFont (new Font ("Calibri", Font.BOLD, 42)) ; startGame.setAlignmentX(0.5f) ; Centrer horizontalement sur l’écran startGame.setAlignmentY(0.5f) ; centrer verticalement sur l’écran startGame.addActionListener(this) ; topPanel.add(startGame) ; Ajouter en dernier afin d’assurer des pgs de visibilité du bouton = new PlayGameScreen (vrai SCREEN_WIDTH, SCREEN_HEIGHT,) ; vrai--> nous voulons pgs pour le splash screen topPanel.add(pgs) ; retour Top ; } / ** * Mise en œuvre des événements d’action * / public void actionPerformed (ActionEvent e) {if(e.getSource() == startGame) {//do quelque chose}} / ** * méthode qui exécute les mouvements graphiques de splash screen * / private void gameScreen (boolean isSplash) {BottomPipe bp1 = new BottomPipe (PIPE_WIDTH, PIPE_HEIGHT) ; Bp2 BottomPipe = new BottomPipe (PIPE_WIDTH, PIPE_HEIGHT) ; Tp1 TopPipe = new TopPipe (PIPE_WIDTH, PIPE_HEIGHT) ; TopPipe tp2 = new TopPipe (PIPE_WIDTH, PIPE_HEIGHT) ; variables pour suivre les x et y image emplacements pour le bas tube int xLoc1 = SCREEN_WIDTH + SCREEN_DELAY, xLoc2 = (int) ((double) 3.0/2.0*SCREEN_WIDTH+PIPE_WIDTH/2.0)+SCREEN_DELAY ; int yLoc1 = bottomPipeLoc(), yLoc2 = bottomPipeLoc() ; variable destinée à contenir le début de la boucle du temps long startTime = System.currentTimeMillis() ; while(loopVar) {if((System.currentTimeMillis() - startTime) > UPDATE_DIFFERENCE) {//check si un ensemble de tuyaux a laissé l’écran //if, réinitialiser le tuyau X emplacement et assigner un nouvel emplacement Y si (xLoc1 < (0-PIPE_WIDTH)) {xLoc1 = SCREEN_WIDTH ; yLoc1 = bottomPipeLoc();} ElseIf (xLoc2 < (0-PIPE_WIDTH)) {xLoc2 = SCREEN_WIDTH ; yLoc2 = bottomPipeLoc();} //decrement xLoc2-= X_MOVEMENT_DIFFERENCE ; //update le bp1.setX(xLoc1) de sites BottomPipe et TopPipe, les emplacements de tuyau par le montant prédéterminé xLoc1-= X_MOVEMENT_DIFFERENCE ; bp1.setY(yLoc1) ; BP2.setX(xLoc2) ; BP2.Sety(yLoc2) ; TP1.setX(xLoc1) ; TP1.Sety(yLoc1-PIPE_GAP-PIPE_HEIGHT) ; assurer le tp1 placé au bon endroit tp2.setX(xLoc2) ; TP2.Sety(yLoc2-PIPE_GAP-PIPE_HEIGHT) ; s’assurer que tp2 placée au bon endroit //set les variables locales, BottomPipe et TopPipe, en PlayGameScreen en analysant les pgs.setBottomPipe de variables locales (bp1, bp2) ; pgs.setTopPipe (tp1, tp2) ; mise à jour JPanel topPanel.revalidate() de pgs ; topPanel.repaint() ; mettre à jour la variable suivi du temps après toutes les opérations terminées startTime = System.currentTimeMillis() ; {}}} / ** * Calcule un int aléatoire pour le placement de la pipe bas * int * / private int bottomPipeLoc() {int temp = 0; //iterate jusqu'à ce que le temp est une valeur qui autorise les deux tuyaux être à l’écran tout en (temp < = PIPE_GAP + 50 || temp > = SCREEN_HEIGHT-PIPE_GAP) {temp = (int) ((double) Math.random()*((double)SCREEN_HEIGHT));} return temp;}}

Ci-dessous, vous pourrez voir la classe de PlayGameScreen mise à jour qui tient compte de l’ajout des méthodes d’accesseur Set utilisé ci-dessus. Nous allons ajouter un peu de code pour étoffer la méthode paintComponent ainsi. Tout d’abord nous séquentiellement définir la couleur des graphiques pour créer le rectangle pour le ciel et la terre, puis tracer la ligne noire entre eux. Ensuite, nous attirons les éléments BottomPipe et TopPipe. Ces éléments ne doivent pas être null (c'est-à-dire qu’ils doivent avoir été créées) afin de les dessiner.

Suite à cela, nous voulons attirer « Flappy l’oiseau » en grosses lettres près du haut de l’écran. Tout d’abord nous avons mis en place une instruction try-catch pour essayer de définir la police. La première police peut ne pas exister sur les ordinateurs, et si ce n’est pas, nous avançons à l’instruction catch où la police obtient mis à une police plus universelle. Nous voulons aussi assurez-vous que le texte du message est centré sur l’écran, ainsi nous obtenons la largeur du message que nous allons dessiner en utilisant la ligne de FontMetrics. Enfin, nous attirons le message sur l’écran après le bloc try-catch.

La prochaine modification apportée a été l’ajout de quelques méthodes d’accesseur Set simple. Ceux-ci devraient être explicites. Le dernier changement est l’ajout de la méthode de sendText. Nous utiliserons ce lorsque la partie est terminée pour envoyer « Game Over » à tirer. Ce texte remplacera le texte de la variable message existant.

			
          

Articles Liés

Arduino Bi-color LED Matrix Flappy oiseau jeu basé

Arduino Bi-color LED Matrix Flappy oiseau jeu basé

Nous avons construit un certain projets en utilisant les kits Bi-color (rouge et vert) LED Matrix Module pilote de jolliFactory et ont publié leur comme instructables ici. Chacun de ces modules utilise deux MAX7219 Display Driver ICs pour piloter une
Flappy oiseau Hat

Flappy oiseau Hat

Flappy est un mobile jeu (développé en 2013) dont le but est d'avoir l'utilisateur de naviguer dans un animation oiseau à voler entre tubes verts sans frapper. Plus le score et les tuyaux plus que l'oiseau a traversé le « mieux » le joueur a fait.Cap
Flappy oiseau Valentin Pop Up Card comment (Valentin Flappy) Kirigami 3D !

Flappy oiseau Valentin Pop Up Card comment (Valentin Flappy) Kirigami 3D !

Une carte de Saint Valentin rapide j'ai fait basé sur le populaire jeu Flappy oiseau.Partager sur FACEBOOK : http://on.fb.me/15TrVYfTWEET : http://bit.ly/15Ts5P6REDDIT : http://bit.ly/16qHt5LTUMBLR : http://bit.ly/10K8fhzTélécharger le modèle gratuit
Comment faire pour installer sur Android, flappy oiseau sans jamais avoir il initialement

Comment faire pour installer sur Android, flappy oiseau sans jamais avoir il initialement

maintenant qu'il n'ya pas de nombreux oiseaux flappy instructables déployés j'ai décidé de poster comment obtenir Flappy oiseau sans jamais le télécharger avant qu'elle a été prise vers le bas.Étape 1: Choses nécessaires Un ordinateur, une prise de U
KeyChainino - le premier jeu trousseau Programmable avec Arduino

KeyChainino - le premier jeu trousseau Programmable avec Arduino

KeyChainino est un porte-clef jeu vintage programmable avec Arduino , où n'importe qui peut télécharger son propre jeu juste avec l'IDE Arduino.Si vous aimez vraiment le jeu d'Arcade, KeyChainino est fait pour vous !Il ne dispose pas des écrans LCD,
Java programmation Part2(Text and running)

Java programmation Part2(Text and running)

Dans votre java.java, vous devriez avoir le code-public class java {}Public Shared Sub main (String args[]) {}}}Donc si nous voulons rendre les programmes java, nous devons le texte et le code pour une simple ligne de texte est-System.out.println ("B
Flappy oiseau plume

Flappy oiseau plume

oiseaux Flappy est devenu un jeu célèbre dans le monde entier. Bien qu'il soit hors de l'app store (déchirure), j'ai toujours voulu faire ce tutoriel pour les gens qui ont cette et stipl plaira beaucoup ! J'espère que vous apprécierez !Une fille dans
Unity 3D jeu vidéo tutoriel

Unity 3D jeu vidéo tutoriel

Comme la plupart des joueurs, nous avons toujours rêvé de faire un jeu vidéo, mais nous avons supposé qu'il serait une tâche extrêmement difficile à accomplir. De nos jours, cependant, avec des programmes comme l'unité et la puissance de l'Internet,
Créer des GPA Calculator dans Application Java programme

Créer des GPA Calculator dans Application Java programme

créer GPA Calculator dans le programme d'Application JavaLe but de ce jeu d'instructions est comment calculer votre GPA au cours du semestre. Votre GPA (Grade Point Average) le calcul est simple et essentiel. Il est important pour évaluer votre améli
Flappy oiseau en ligne!!!

Flappy oiseau en ligne!!!

oiseaux flappy est probablement le meilleur jeu de mondes que tout a été supprimé sur l'App Store. Si vous n ' t Télécharger le jeu dans le temps ou accidentellement supprimé il utiliser ce quik et facile trick à donload il gratuite. Il fonctionne mê
Comment gagner Flappy oiseaux chaque fois

Comment gagner Flappy oiseaux chaque fois

oiseaux Flappy, un jeu populaire inexplicablement, est bien que par beaucoup d'être aussi incroyablement dur. Mais, ils sont tout faux. Avec ce guide vos jours de cotation moins 100 puis sont plus. Une médaille de platine sera que rien comparé aux sc
Java programmation - intérêts composés

Java programmation - intérêts composés

Bonjour dans ce Instructable je va vous montrer comment créer un programme Java qui calcule l'intérêt appliqué au principal déposé au cours du temps.  Avant de commencer ce Instructable vous aurez besoin des choses :1. un ordinateur de bureau/portabl
Java programmation 2 | Comment travailler avec Eclipse (Java)

Java programmation 2 | Comment travailler avec Eclipse (Java)

Aujourd'hui, nous allons apprendre comment faire un projet dans Eclipse et comment utiliser Java ! Vous devez télécharger Eclipse (https://eclipse.org/downloads/) et Java (https://www.java.com/download/).Étape 1: Faire un dossier !La première étape c
Java programmation Part1 (configuration Eclipse)

Java programmation Part1 (configuration Eclipse)

Avant de commencer programmation java nous devons mettre en place un ide java. Il s'appelle eclipse, vous pouvez le télécharger ici.Étape 1: Création d'un projetMaintenant que vous avez téléchargé d'éclipse, il faut créer un projet java. Nommez-le ja