2010-04-03 3 views
2

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?

+0

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

+0

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

Répondre

3

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.

2

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!