Jeu Java-Moyen le plus simple de dessiner des bâtiments


C'est la première fois que je fais des trucs Java GUI, et j'ai quelques questions. Je fais un simple jeu à défilement latéral-en le planifiant, en particulier. La fenêtre va être 800x800.

Il y aura des bâtiments dessinés au fur et à mesure que le jeu défile (tous les 40 px environ). Je pense que je vais faire un rectangle noir de 900 pixels, puis en définir des copies à différentes hauteurs de pixels (pour faire varier les hauteurs des nouveaux bâtiments). Ensuite la partie inférieure du rectangle sera automatiquement coupée.

(1) Ça marcherait?

Dans le ciel au-dessus des toits, je vais faire voler des cibles qui peuvent être cliquées et abattues pour des points. Je pensais faire un ImageIcon de la cible, puis le dessiner en se déplaçant à travers l'écran. Mais je pense qu'il serait difficile de suivre les coordonnées cibles, puis d'obtenir les coordonnées d'un clic de souris, puis de vérifier si elles correspondent.

(2) Est-il un moyen facile de savoir si la cible est frappée avec un clic (sans beaucoup de coordonnées et mathématiques)?

Il y a aussi des skateurs qui patinent sur les toits de gauche à droite. Je pensais mettre un rectangle caché derrière lui et voir ensuite s'il croise un toit rectangle donné pour dire quand il atterrit. Mais le problème est qu'ils ne se croisent pas tant qu'il n'est pas À L'INTÉRIEUR du toit. Et je veux qu'il soit juste au-dessus du toit.

Comment puis-je savoir quand le skateur est juste au-dessus du toit (sans tonnes de calculs de coordonnées)?

Author: Marcelo Cantos, 2010-09-24

1 answers

Il y aura des bâtiments dessinés au fur et à mesure que le jeu défile (tous les 40 px environ). Je pense que je vais faire un rectangle noir de 900 pixels, puis en définir des copies à différentes hauteurs de pixels (pour faire varier les hauteurs des nouveaux bâtiments). Ensuite la partie inférieure du rectangle sera automatiquement coupée.

Ce serait bien - la partie inférieure serait coupée.

Dans le ciel au-dessus des toits, je vais faire voler des cibles cela peut être cliqué sur et abattu pour les points. Je pensais faire un ImageIcon de la cible, puis le dessiner en se déplaçant à travers l'écran. Mais je pense qu'il serait difficile de suivre les coordonnées cibles, puis d'obtenir les coordonnées d'un clic de souris, puis de vérifier si elles correspondent.

Je ne peux pas penser à un moyen plus simple de le faire. Vérifier une zone rectangulaire pour un coup n'est pas trop difficile:

if(mouseX >= targetX && mouseX < targetX+targetWidth &&
        mouseY >= targetY && mouseY < targetY+targetHeight){
    // is a hit
}

Pour une meilleure détection de collision, vous pouvez avoir une couleur de masque sur votre cible sprite, qui est masqué (ou vérifiez si l'alpha est 0 si vous n'utilisez pas de masque). Si la souris est cliquée sur un pixel non masqué dans la zone d'image des cibles, vous avez un hit. Pour vérifier les événements de la souris recherche MouseListener ou MouseAdapter.

Il y a aussi des skateurs qui patinent sur les toits de gauche à droite. Je pensais mettre un rectangle caché derrière lui et voir ensuite s'il croise un toit rectangle donné pour dire quand il atterrit. Mais le problème est qu'ils ne se croisent pas tant qu'il n'est pas SUR le toit. Et je veux qu'il soit juste au-dessus du toit.

Vous ne devriez pas avoir besoin d'un rect invisible. L'image du skateur doit avoir une largeur et une hauteur, que vous devriez avoir à disposition. Les images sont dessinées en haut à gauche, de sorte que la base de votre skateur est la position Y à laquelle il est dessiné plus la hauteur de l'image. Vous voulez empêcher cette valeur de dépasser la limite du toit.

 1
Author: Ultimate Gobblement, 2010-09-25 12:15:50