Je crée un jeu de labyrinthe simple avec Java + Swing. Le jeu dessine un labyrinthe aléatoire sur l'écran, place une figure au milieu, et le joueur est alors supposé trouver la sortie en déplaçant la figurine avec les touches fléchées. Pour l'instant, j'utilise un fond uni et dessine les murs du labyrinthe avec Graphics.drawLine(). J'ai une image personnalisée de la figure dans un fichier .gif, que je charge en tant qu'objet BufferedImage. Cependant, je veux que le joueur ne voit qu'une partie du labyrinthe à la fois, et que l'écran suive la figure du jeu, au fur et à mesure que le joueur se déplace. Je prévois de le faire en créant un objet Image de tout le labyrinthe quand il est créé, puis en "découpant" un carré autour de la position actuelle de la figure et en l'affichant avec Graphics.drawImage(). Je suis nouveau avec Swing, et je n'arrive pas à comprendre comment dessiner le personnage à différentes positions "au-dessus" du labyrinthe sans redessiner le tout. Quel conteneur/composant devrais-je utiliser pour le labyrinthe et ensuite pour que le personnage puisse y parvenir?Quels conteneurs/composants graphiques utiliser dans un simple jeu Java Swing?
Répondre
et je ne peux pas comprendre comment dessiner la figure à des positions différentes « au-dessus » le labyrinthe sans redessiner la chose .
Utilisez un JLabel contenant une icône. Ensuite, vous utilisez juste label.setLocation() pour déplacer l'image. Swing est assez intelligent pour repeindre l'ancienne zone (où se trouvait l'image) et ensuite peindre l'image à son nouvel emplacement.
Vous devriez être en mesure de le faire avec un seul JPanel. Votre peinture personnalisée du panneau peindra le labyrinthe. L'étiquette qui est ajoutée en tant que composant enfant sera peinte sur le labyrinthe.
Vérifiez la dernière entrée de ce posting qui contient une approche intéressante pour la construction du labyrinthe et il prend également en charge le défilement du labyrinthe lorsque le joueur se déplace.
Vous pouvez regarder JLayeredPane
, discuté dans How to Use Layered Panes et dans ce question.
Je pense que la vitre est l'élément que vous recherchez: c'est une sorte de verre placé sur le cadre. Tout ce que vous dessinez couvrira ce qui est derrière. Ainsi, vous pouvez obtenir facilement l'effet sans vous soucier d'écrêter l'image originale. Voir here!
- 1. java swing graphiques couleur mélange
- 2. Comment utiliser BigDecimal dans les interfaces graphiques swing?
- 3. Bibliothèque de graphiques Java la plus simple?
- 4. Jeu d'icônes graphiques vectoriels Android
- 5. GoogleEarth dans Java Swing
- 6. PropertyGrid dans Java Swing
- 7. JFreeChart pour les graphiques xy dynamiques dans l'application java swing gui
- 8. Rectangles graphiques Java 2D
- 9. Affichage d'emails dans un JTable (Java Swing)
- 10. Java Swing - Problème dans JSpinner
- 11. Java Swing Threading
- 12. multithread avec java swing pour une animation 2d simple
- 13. Un classique StackOverflow: Java Swing
- 14. Java Swing design
- 15. Java: Afficher un corps Email Swing
- 16. Existe-t-il un équivalent "Group Box" dans Java Swing?
- 17. Java: Concurrence pour un jeu
- 18. Java Swing JTree Expansion
- 19. Java Swing: plusieurs fenêtres
- 20. Utilisation d'effets sonores dans un jeu java
- 21. Java Swing: Différent TableCellRenderers
- 22. Java swing "enfants" windows
- 23. Java Swing Font Chooser
- 24. Comment utiliser BuffereImage pour un jeu d'échecs
- 25. java timer pour le jeu
- 26. Java faisant un 'point/pixel' Dans swing/awt
- 27. Conseils pour créer un jeu simple .net
- 28. Graphiques créatifs commons pour le jeu vidéo
- 29. Java/Swing: Comment dessiner un graphique à barres simple dans un moteur de rendu personnalisé pour un JLabel
- 30. Java Swing: recalculer des valeurs dans un JTable, utiliser TableModel ou écrire un éditeur personnalisé?
Lorsque vous dites «l'écran devrait suivre la figure», voulez-vous dire que le joueur est toujours centré? Le joueur peut-il voir seulement la section du labyrinthe dans lequel il se trouve ou peut-il voir les zones qu'il a déjà explorées? – Nate
Je veux dire que le joueur est toujours centré. Le joueur peut voir un carré de certaine taille autour d'eux, c'est-à-dire qu'il y a un carré de zone visible, qui se concentre toujours sur le joueur. – rize