IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Modifier un vectors sans redondance


Sujet :

Langage Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 343
    Points : 124
    Points
    124
    Par défaut Modifier un vectors sans redondance
    Bonjour,

    J'ai un gros problème avec les vectors.
    Voici l'énoncé simplifié:
    J'ai un Vector "Exercices" contenant des objets "Exercice", chaque "Exercice" possède un Vector "Cartes" possédant des objets "Carte".Chaque "Carte" possède un booleen pour indiqué si la carte à était trouver ou pas.(par défaut certaines sont à false et d'autre à true)

    Code simplifié :
    Au lancement de ma class, je faire un getExercice() vers une autre class pour récupérer l'objet Exercice. Le jeu commence.... si le joueur trouve une carte, je met le boolean de la carte à true.
    Si il les a toute trouver le jeu recommence (aucune sauvegarde est faite)

    Problème:
    Quand le jeu relance, je refait un getExercice() pour recharger exactement le meme jeu.
    Je dois donc avoir les meme cartes à False et à true. Or j'ai toute les cartes à true. En gros, il a conservé les donné de la partie précédente. le jeu est donc tout de suite fini !!

    jai essayer de faire un exercice.clear; et exercice.removeALLElement() avant de faire le second getExercice. Mais celà n'a rien changé.

    Après étude :
    Il semblerait que les Vector ne fasse pas une copie mais est un "pointeur" vers l'objet. Donc si meme temporairement, je modifie une carte, celà remonte, jusqu'a autre class utilisant le vector Exercice. Et donc après si je fais un getExercice(), j'ai mon Vector Exercice mais modifier.

    Comment retrouver donc mon Exercice du début ? Comment je peux modifier une carte temporairement sans que 'linfo remonte dans tout mes class ?

    Merci davance









    problème technique : Il semblerait que les Vectors ne fasse pas une copie de l'objet. Du coup si on modifier un objet du vector

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Salut !

    J'ai pas tout bien compris à ce que tu fais, mais je pense qu'une de tes classes (Exercice, ou Carte) n'est pas copiable, car un vector fait une copie de ton objet à l'insertion (si si)...

    donc si tu pouvais expliquer un peu mieux ton problème, avec éventuellement, quelques bouts de code, merci

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 343
    Points : 124
    Points
    124
    Par défaut
    Oki, je rappel le but du jeu, afficher toute les cartes !
    AU lancement je fais un Vector VtrCarte= exercice.getCartes();

    Quand l'utilisateur choisit une carte, j'utilise la méthode valider().
    Si une carte est bonne (correspond) elle s'affiche. Si toute les cartes sont affiches, le jeu est fini... il redémarre ! On refait donc un Vector VtrCarte= exercice.getCartes(); mais là VtrCarte possede toute c'est cartes à true.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    	public void valider(String arg) {
    		String lettreLue = arg;
    		boolean valide = false;
    		int nbCarteCache = 0;
    		Carte carte = new Carte();
     
    			for(int i =0;i<VtrCarte.size();i++){
    				carte = (Carte)VtrCarte.elementAt(i);
     
    				if(carte.getCache() && (carte.getLettre().equalsIgnoreCase(lettreLue))){
    					carte.setCache(false);
    					VtrCarte.setElementAt(carte,i);
    					valide = true;
    					window.afficherCarte(i,carte);
    				}
    				if(carte.getCache())
    					nbCarteCache++;
     
    			}
    		// Si mauvaise Carte
    		if(valide != true){
    			this.sonPerdu();
    			Musique sonLettre.start();
    		} else if (nbCarteCache==0){
    			this.gagner();	 //Fin du jeu
    		}else{
    			this.sonReussir();//Une carte trouvé
    		}
    PS: Mes class Exercice et Carte sont rien de plus simple avec des méthode get et set... je sais pas pourquoi elle ne pourrai pas etre copiable

Discussions similaires

  1. [C# 2.0] Modifier un dessin sans tout redessiner
    Par falcon dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/10/2006, 16h48
  2. [html] Modifier du texte (sans afficher les balises)
    Par Alexino2 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 25/07/2006, 16h43
  3. Modifier des labels sans le code source
    Par Popof dans le forum WinDev
    Réponses: 2
    Dernier message: 12/07/2006, 11h21
  4. Une classe vector sans STD?
    Par dedesite dans le forum C++
    Réponses: 7
    Dernier message: 31/05/2006, 17h04
  5. Modifier une page sans la recharger...
    Par Ylias dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 10/05/2006, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo