Aquarium 2d avec double-buffering et en utilisant uniquement les methodes du contexte graphique paint() et update() d'un jpa

Soyez le premier à donner votre avis sur cette source.

Vue 6 387 fois - Téléchargée 649 fois

Description

L'application ne comporte que 4 classes.
Les poissons nagent horizontalement et verticalement. Leur vitesse est definie par le sleeptime du Thread qui se chargent de dessiner les poissons. On peut modifier le nombre de poissons qui nagent dans l'aquarium ainsi que leur vitesse.

Conclusion :


Merci, de me rapporter d'eventuelles idees afin d'ameliorer ce petit aquarium.
Je n'ai pas voulu employer de sprites et de BufferStrategy parce que j'avais deja commence l'application sans Sprite.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Cornellus1985
Messages postés
22
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
7 juillet 2009
-
Un petit commentaire ?
J'ai un soucis, a chaque fois que l'utilisateur definit le nombre de poissons, on arrete le thread avec :

public void stop() {
thread.interrupt();
runOK = false;
}

puis on vide le vecteur "fishes", et on le reremplit avec le vecteur avec le nombre de poissons desires.

Le probleme est qu'a chaque fois que redemarre le thread avec:

public void start() {
thread = new Thread(this);
thread.start();
runOK = true;
System.out.println("nombre de thread : " + Thread.activeCount());
}

A chaque fois le nombre de thread augmente et la vitesse des poissons augmente, je suis oblige de multiplier le "sleeptime", qui definit le temps d'attente en milliseconde du thread, par le nombre de nouveaux thread. Comment faire pour tuer un thread ou tout simplement ne pas en creer de nouveaux ?
Merci d'avance
uhrand
Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
9 -
Si "fish" hérite de "JLabel", nous pouvons le déplacer le poisson avec setLocation et adapter l'image par setIcon. Pas besoin alors de paintComponent, sauf pour l'image de fond. Nous pouvons démarrer un javax.swing.Timer pour chaque poisson, comme ça chacun peut nager à une vitesse différente.
Cornellus1985
Messages postés
22
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
7 juillet 2009
-
Merci bien pour tes lumieres UHRAND. Je vais essayer ta solution des que j'aurais un peu de temps. Mais juste une petite precision, si on utilise un Timer pour chaque poisson, ce n'est plus la peine d'utiliser une classe qui herite de Thread ou de classe implementant l'interface Runnable. Est ce que je me trompe ?
Par ailleurs, si chaque poisson a sa propre vitesse (eventuellement un random) sera t'il possible pour l'utilisateur final de modifier la vitesse de chaque poisson ? Je ne vois pas trop comment faire...
uhrand
Messages postés
491
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
15 juillet 2012
9 -
Effectivement, si on utilise un Timer pour chaque poisson, ce n'est plus la peine d'utiliser une classe qui hérite de Thread ou de classe implémentant l'interface Runnable.
Aussi, si chaque poisson a sa propre vitesse, il sera en effet possible pour l'utilisateur final de modifier la vitesse de chaque poisson. Il peut par exemple indiquer le numéro du poisson et le "delay" a appliquer à son Timer (Timer#setDelay);
Cornellus1985
Messages postés
22
Date d'inscription
dimanche 26 avril 2009
Statut
Membre
Dernière intervention
7 juillet 2009
-
Merci bien de ton aide et de tes conseils UHRAND, j'y vois plus clair a present. Je me remet au travail le plus vite possible afin d'offrir a JavaFr ces sources au plus vite.
Cordialement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.