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 :

[Debutant] Probleme de gestion des joueurs pour un jeu


Sujet :

Langage Java

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut [Debutant] Probleme de gestion des joueurs pour un jeu
    Bonjour a tous,
    je suis nouveau, je suis en DUT informatique. Je suis actuellement en train de coder le jeu du yams, un jeu de dés. Je rencontre quelques difficultés a gerer deux joueurs, enfin au niveau de l'attribution des points. J'arrive a changer de joueur, mais ma methode d'attribution des points ne marchent pu a 2 joueurs ...

    Elements : Classes, tableaux

    voici un morceaux de mon main()
    si vous le souhaiter je peux mettre la methode, mais elle est tres grosse ... enfin je me debrouillerais pour la mettre si vousl voulez
    D'avance merci, et ce forum est vraiment bien, mais un peu incomprehensible pour un debutant comme moi ^^' ( ca viendra ^^)

    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
    30
    31
    32
    33
    if(gestion.getNumeroJoueur() == 1)
    {
        while(tabContratsRealiseJ1[relancer-1] == true)
        {
            System.out.println("Contrat deja realise, saisissez en un autre");
    	relancer = Clavier.lire_int();
     
    	if(relancer !=0) // le 0 sert a consulter les contrats
    	    tabContratsRealiseJ1[relancer-1] = true; //Le contrat est fait, meme si il est faux, il est considéré comme fait
    	gestion.tableauxScore(relancer,tabContratsRealiseJ1[0],tabContratsRealiseJ1[1],tabContratsRealiseJ1[2],tabContratsRealiseJ1[3],tabContratsRealiseJ1[4],tabContratsRealiseJ1[5]);
        }
    }
     
    if(gestion.getNumeroJoueur() == 2)
    {
    	while(tabContratsRealiseJ2[relancer-1] == true)
    	{
    		System.out.println("Contrat deja realise, saisissez en un autre");
    		relancer = Clavier.lire_int();
     
    		if(relancer !=0) // le 0 sert a consulter les contrats
        		    tabContratsRealiseJ2[relancer-1] = true; //Le contrat est fait, meme si il est faux, il est considéré comme fait
                   gestion.tableauxScore(relancer,tabContratsRealiseJ2[0],tabContratsRealiseJ2[1],tabContratsRealiseJ2[2],tabContratsRealiseJ2[3],tabContratsRealiseJ2[4],tabContratsRealiseJ2[5]);
    	}
    }
     
     
     
    if(gestion.getNumeroJoueur() == 1)
    	System.out.println("Vous avez obtenu : "+gestion.getResultatJ1()+ " points\n");
     
    if(gestion.getNumeroJoueur() == 2)
    	System.out.println("Vous avez obtenu : "+gestion.getResultatJ2()+ " points\n");

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    Pas facile de deviner ce qui ne va pas si tu ne donnes pas plus de précisions !
    tu reçois un message d'erreur, ou bien c'est simplement que ton code ne produit pas l'effet escompté ?

    Si l'erreur te paraît venir de la méthode d'attribution des points, ce serait mieux qu'on puisse la voir, ou voir le message d'erreur lors de la compilation ou de l'éxécution...

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Ca compile parfaitement, ca s'execute aussi, mais mal

    voila un bout de ma methode :

    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
    30
    31
    32
    33
    34
    35
    36
    public void tableauxScore(int indice, boolean indice1,boolean indice2,boolean indice3,boolean indice4,boolean indice5,boolean indice6)
    {
    	int sommeChiffresEgaux;
    	int nombrePlusRepresente;
     
    	if(numeroJoueur == 1)
    	{
    		//Remplissage tabResultatsJ1
    		for(int i = 0; i<5; i++)
    		{
    			tabResultatsJ1[i] = 0;
    		}
     
    		//Somme des memes numeros dans la case choisie
    		//6 premieres cases du tableaux gérées
    		if(indice < 6)
    		{
    			for(int i = 0; i<5;i++)
    			{
    				if(tabDes[i] ==indice)
    				{
    					tabResultatsJ1[indice] ++;
    				}
    			}
    			tabResultatsJ1[indice] = tabResultatsJ1[indice]*indice;
    		}
     
    		//Somme des 6 premiers contrats
    		if(indice1 == true && indice2== true && indice3 == true && indice4== true && indice5 == true && indice6== true)
    		{
    			for(int i = 0; i < 6; i ++)
    			{
    				tabResultatsJ1[6] = tabResultatsJ1[6]+tabResultatsJ1[i];
    			}
    		}
    }
    Voila il n'y en a qu'un petit bout, car comme je vous l'ai deja dit, ma methode est assez longue ...
    Ca marche moins bien depuis que j'ai rajouté le numerojoueur==1, il y a le meme pour le 2e joueur, la varialbe ne prend que 2 valeurs, je lai testé, et de toute facon, il n'y a aucune attribution de points ...

    Merci d'avance pour vos réponses

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    Quelle fonction met à jour la variable numéroJoueur ?
    Tu devrais vérifier en début de ta fonction quelle est la valeur prise par cette variable numéroJoueur (en ajoutant un System.out.println(numéroJoueur) par exemple).
    Pourquoi ne la passes-tu pas simplement en paramètre de ta fonction d'attribution de points ?

    autre remarque :
    tu n'as pas besoin d'écrire des if(booleen==true) ou if(booleen==false) pour les booléens. Fais plutôt des if(booleen) ou if (!booleen).

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    une idée :
    Si comme tu le constates il n'y a pas d'attribution de points, c'est que ta variable numéroJoueur ne prend ni la valeur 1, ni la valeur 2 (le programme ne passe donc pas dans les boucles correspondantes).

    Va voir du côté de la fonction qui change la valeur de numéroJoueur... C'est là que ça doit coincer...

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Je vous remercie de vos réponses, mais le probleme ne vient pas de la,
    en fait numeroJoueur me permet de changer de joueur, et dans mon main, lorsque je fais if(gestion.getNumeroJoueur()==1) System.out.println(joueur1)
    j'ai bien joueur qui saffiche, de meme pour joueur2.
    J'avais un probleme avec ca aussi pendant un moment, mais ca s'est resolu.

    Encore merci, d'autres idées ? vous voulez d'autres precisions ?

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    si ton code source est trop volumineux pour être collé, mets le en pièce attachée, car c'est difficile de débugger à l'aveugle.
    Si on peut tester le code on a plus de chance de régler ton problème rapidement... (enfin j'espère !)

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Tout d'abord, bonne année a tous ^^


    Tiens voila pour le code : http://www.developpez.net/forums/att...1&d=1199210861

    Le code, c'est du niveau debutant ^^' pis c'est pas facilement comprehensible de l'exterieur je pense.

    Enfin bon je te laisse juger par toi meme
    Fichiers attachés Fichiers attachés

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    Deux problèmes décelés déjà :

    1] Dans le main de ta classe YamV8 :

    aux lignes 184 et 200, les appels à la fonction tableauxScores() est mis dans la boucle while qui vérifie si un contrat est déjà réalisé.

    Je te conseille de le sortir de la boucle, car si le contrat demandé n'est pas réalisé, on ne rentre pas dans cette boucle et le score n'est jamais mis à jour.

    2] Dans la fonction tableauxScore :
    tu devrais, en première ligne de la fonction, ajouter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    this.indice = indice ;
    car tu ne mémorises pas cette variable indice, et du coup lorsque plus tard tu fais appel à la fonction getRésultatJ1(), il utilise la valeur par défaut (0 car c'est un int)

    Corrige ça et dis-moi si il y a d'autres bugs...

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup, deja il compte les points, mais je vais juste devoir corriger un petit truc, mais bon ca j'en suis capable ^^
    juste un détail, je n'ai pas compris le this.indice = indice;
    ca corrsepond a quoi ici ?

    Encore merci

  11. #11
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Je viens d'essayer sans, c'est vrai que ca ne marche pas, mais je ne vois pas pourquoi.
    Je nai jamais utilisé le this. auparavent et ca a toujours marché.
    Pouvez vous m'en dire plus svp ?

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 132
    Points : 170
    Points
    170
    Par défaut
    Je pense que tu fais une confusion car tu as un attribut de ta classe qui se nome "indice"

    Dans ta methode tableauxScore qui a un paramètre qui se nome indice il faut que tu affectes la valeur du paramètre à la l'attribut de ta classe.

    Hors si tu fais , ca ne fait rien.
    Donc pour indiquer que tu veux affecter l'attribut de ta classe tu es obligé de faire
    this veut dire l'instance de la classe (object actuel quoi )

    Car ensuite dans la methode getResultatJ1()

    tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return tabResultatsJ1[indice];
    ici indice est l'attribut de ton object c'est la même chose que si tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return tabResultatsJ1[this.indice];
    J'espère que c'est clair

  13. #13
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Je pense avoir compris un peu mieux merci beaucoup, je vais essayer de finir mon jeu maintenant

  14. #14
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Désolé de remettre le sujet sur le tapis,
    mais j'ai un autre probleme qui doit découler de ce qui y sont deja.
    J'ai l'impression que le this.indice = indice, ne marche que pour les premiers if, je m'explique, lorsque je choisit un contrat compris entre 1 et 6 ca fonctionne parfaitement ( grace a vous d'ailleurs ) mais si je tape 13 je ne rentre pas le if, enfin du moins je crois, j'ai vérifié ma methode, et je ne vois pas ce qui cloche.
    J'espere m'etre bien fait comprendre,
    D'avance merci

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    Je viens de tester sur la version que tu avais envoyée et que j'ai modifiée, j'ai un peu truqué ton lancer de dé pour qu'il sorte un carré, et ça marche, le comptage de points marche à merveille. Par contre, il me semble que la règle de comptage de points pour le carré, c'est 40 points + la somme des 4 dés du carré...

    enfin bref dis moi si tu es sûr que ça ne marche pas chez toi je t'enverrai ma version modifiée.

    Par contre, si tu rencontres d'autres problèmes ce serait cool que tu envoies le code de la classe clavier que tu importes, ce serait plus pratique...
    merci

  16. #16
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    :S désolé pour la classe clavier, je n'y avais meme pas pensé ...
    voici la classe Clavier
    sinon quand je trouve un carré par exemple, ca me fait 0 points, je prends un screen shot :



    Merci de t'interesser autant a mon sujet
    Cordialement

    EDIT : j'ai rajouté les nouveaux fichiers.java, car il ne restait que les versions sans modification
    Fichiers attachés Fichiers attachés

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    je n'ai pas récupéré tes fichiers, mais au vu de ceux que j'ai n'y aurait-t-il pas un décalage dans les indices ?

    le 8 correspond au bonus dans l'affichage des contrats (d'ailleurs ce n'en est pas un ), alors que si je vais voir dans le code, le 8 correspond au contrat Mini. Du coup ça décale tout ! Du coup tu croyais demander un carré mais tu demandais un yams, ce qui te fait zéro points !!

    Essaye de vérifier ça.

  18. #18
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Je viens d'essayer de faire un décalage d'indice :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    gestion.tableauxScore((relancer-1),tabContratsRealiseJ2[0],tabContratsRe
    aliseJ2[1],tabContratsRealiseJ2[2],tabContratsRealiseJ2[3],tabContratsRealiseJ2[4],tabContratsRealiseJ2[5]);
    qui apparement ne marche pas
    , et dans ce cas, pourquoi les 6 premiers contrats marchent ils normalement ?

    Merci d'avance

  19. #19
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 68
    Points : 58
    Points
    58
    Par défaut
    Bon, des remarques pêle-mêle :

    - classe GestionV8, fonction tableauxScore :
    --> il faut rajouter un '=' dans le if, car sinon on ne peut pas choisir le contrat des 6.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Somme des memes numeros dans la case choisie
             //6 premieres cases du tableaux gérées
                if(indice <= 6)
                {//...etc
    - classe YamV8, affichage des contrats :
    --> tu ne devrais pas afficher les contrats "somme des 6 premiers contrats" et "prime", car on ne peut pas les choisir. En plus c'est eux qui te créent le décalage dont je te parlais...
    Je te propose donc de les virer, et d'obtenir :
    Voici les differents contrats a realiser dans le jeu du Yams
    1. Somme des 1
    2. Somme des 2
    3. Somme des 3
    4. Somme des 4
    5. Somme des 5
    6. Somme des 6
    7. Mini
    8. Maxi
    9. Brelan
    10. Suite
    11. Full
    12. Carre
    13. Yam

    alors il faut régler le décalage dans la fonction tableauxScore :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    
             
             //Mini
                if(indice ==7)
                {
                   //...
                }
             
             //Maxi
                if(indice==8)
                {
                   //...
                }
             
             //...
             
             
             //Brelan
                if(indice == 9)
                {
                   //...
                }
             
             //Suite
                if(indice ==10)
                {
                   //...
                }
             
             
             //Full
                if(indice == 11)
                {
                   //...
                }
             
             //Carré
                if(indice == 12)
                {
                   //...
                }
             
             
             //Yam
                if(indice==13)
                {
                   //...
                }
             }
    Et là ça devrait mieux marcher...

  20. #20
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    23
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 23
    Points : 15
    Points
    15
    Par défaut
    Merci beaucoup, ce soir c'est un peu dur pour coder ( pas beaucoup dormi cette nuit ) mais demain j'essaye, et je te dis si ca marche

Discussions similaires

  1. Gestion des sprites pour un jeu xna
    Par Toin3 dans le forum Windows Phone
    Réponses: 0
    Dernier message: 08/03/2012, 01h08
  2. [Oracle]probleme de gestion des utilisateurs
    Par gentarik dans le forum Oracle
    Réponses: 5
    Dernier message: 09/03/2005, 12h58
  3. Question des gestions des genres pour livre, BD...
    Par Oberown dans le forum Schéma
    Réponses: 3
    Dernier message: 16/09/2004, 16h58
  4. Gestion des modifications pour un enregistrement
    Par Pascal Jankowski dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/03/2004, 14h09

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