2017-03-23 9 views
0

私は大学のプロジェクトを行っています。私はAPIのドキュメントで私の希望を見つけることができないので、あなたの助けが必要です。助けが必要な場合:ベクターで埋め込む

私はBelote.java(カードゲームをシミュレートする)というクラスを持っています。私はなぜ知っていると思うが、私、

実行しないそれらの2つの方式のセット:

私の教授は(/別のクラス申し訳ありませんを使用することはできません)ベクトルでクラススタックを使用するために私たちを強制したいですこれだけでは解決できません。

this.mainsJoueurs.set(numjoueur, this.mainsJoueurs.get(numjoueur).push(carte)); 

this.mainsJoueurs.set(numjoueur, this.mainsJoueurs.get(numjoueur).pop()); 

メソッドバグのどこにコメントを書きますか?

package TP.TP5.Exercice2.Question2; 

import java.util.Random; 
import java.util.Vector; 
import java.util.Stack; 

import TP.TP5.Exercice1.Question4.Carte; 

public class Belote { 
    private Stack<Carte> tasDistibution; 
    private Vector<Stack<Carte>> mainsJoueurs; 
    private Vector<Stack<Carte>> plisJoueurs; 

    public Belote() { 
     this.tasDistibution = new Stack<Carte>(); 
     this.mainsJoueurs = new Vector<Stack<Carte>>(4); 
     this.plisJoueurs = new Vector<Stack<Carte>>(4); 

     for (int i = 0; i < 4; i++) { 
      this.mainsJoueurs.add(i, new Stack<Carte>()); 
      this.plisJoueurs.add(i, new Stack<Carte>()); 
     } 

    } 

    private void initialiserTasDistribution() { 
     for (int i = 1; i <= 4; i++) { 
      for (int j = 1; j <= 13; j++) { 
       if (j == 1 || (j >= 7 && j <= 13)) { 
        this.tasDistibution.push(new Carte(i, j)); 
       } 
      } 
     } 
    } 

    private void couper() { 
     Stack<Carte> tas1 = new Stack<Carte>(); 
     Stack<Carte> tas2 = new Stack<Carte>(); 

     Random r = new Random(); 
     int coupe = 1 + r.nextInt(33 - 1); 

     for (int i = 0; i < coupe; i++) { 
      Carte carte = this.tasDistibution.peek(); 
      this.tasDistibution.pop(); 
      tas1.push(carte); 
     } 

     while (tasDistibution.isEmpty() == false) { 
      Carte carte = this.tasDistibution.peek(); 
      this.tasDistibution.pop(); 
      tas2.push(carte); 
     } 

     while (tas1.isEmpty() == false) { 
      Carte carte = tas1.peek(); 
      tas1.pop(); 
      this.tasDistibution.push(carte); 
     } 

     while (tas2.isEmpty() == false) { 
      Carte carte = tas2.peek(); 
      tas2.pop(); 
      this.tasDistibution.push(carte); 
     } 
    } 

    private void melanger(int nbMelange) { 
     Carte tabcarte[] = new Carte[32]; 

     for (int i = 0; i < tabcarte.length; i++) { 
      Carte cartesommet = this.tasDistibution.peek(); 
      this.tasDistibution.pop(); 
      tabcarte[i] = cartesommet; 
     } 

     for (int i = 0; i < nbMelange; i++) { 
      Random r = new Random(); 
      int pos1 = 1 + r.nextInt(32 - 1); 
      int pos2 = 1 + r.nextInt(32 - 1); 

      if (pos1 == pos2) { 
       System.out.println("Pas de chance"); 
      } else { 
       Carte temp; 
       temp = tabcarte[pos1]; 
       tabcarte[pos1] = tabcarte[pos2]; 
       tabcarte[pos2] = temp; 
      } 
     } 

     for (int i = 0; i < tabcarte.length; i++) { 
      Carte carte = tabcarte[i]; 
      this.tasDistibution.push(carte); 
     } 
    } 

    private void donnerCartesAJoueur(int nbcartedonnes, int numjoueur) { 
     for (int i = 0; i < nbcartedonnes; i++) { 
      Carte carte = this.tasDistibution.peek(); 
      this.tasDistibution.pop(); 

      //My problem is right here, the method set doesn't work, because the method push return a "Carte" and not a "Stack<Carte>" 
      //The compilateur says : The method set(int, Stack<Carte>) in the type Vector<Stack<Carte>> is not applicable for the arguments (int, Carte) 

      this.mainsJoueurs.set(numjoueur, this.mainsJoueurs.get(numjoueur).push(carte)); 
     } 
    } 

    private void distribuer() { 
     for (int i = 0; i < 4; i++) { 
      this.donnerCartesAJoueur(3, i); 
     } 

     for (int i = 0; i < 4; i++) { 
      this.donnerCartesAJoueur(2, i); 
     } 

     for (int i = 0; i < 4; i++) { 
      this.donnerCartesAJoueur(3, i); 
     } 

     for (int i = 0; i < 4; i++) { 
      System.out.println("\n\nDistribution pour joueur : " + (i + 1) + " \n\nMain du joueur : " + (i + 1)); 
      this.mainsJoueurs.get(i).toString(); 
     } 
    } 

    private void assemblerPlisJoueur() { 
     for (int i = 0; i < 4; i++) { 
      while (this.plisJoueurs.get(i).isEmpty() == false) { 
       Carte carte = this.plisJoueurs.get(i).peek(); 

       //Same problem here 

       this.plisJoueurs.set(i, this.plisJoueurs.get(i).pop()); 
       this.tasDistibution.push(carte); 
      } 
     } 
    } 

    private void preparerPremiereManche() { 
     this.initialiserTasDistribution(); 
     this.melanger(32); 
     this.couper(); 
     this.distribuer(); 
    } 

    private void preparerMancheSuivante() { 
     this.assemblerPlisJoueur(); 
     this.couper(); 
     this.distribuer(); 
    } 

    private void jouerPli() { 
     Stack <Carte> tasIntermediaire = new Stack<Carte>(); 

     for (int i = 0; i < 4; i++) { 
      Carte carte = this.mainsJoueurs.get(i).peek(); 

      //Same problem here 

      this.mainsJoueurs.set(i, this.mainsJoueurs.get(i).pop()); 
      tasIntermediaire.push(carte); 
     } 

     Random r = new Random(); 
     int gagnant = 0 + r.nextInt(4 - 0); 
     System.out.println("Le joueur " + (gagnant + 1) + " a gagné ce pli"); 

     for (int i = 0; i < 4; i++) { 
      Carte carte = tasIntermediaire.peek(); 
      tasIntermediaire.pop(); 

      //Same problem here 

      this.plisJoueurs.set(gagnant, this.plisJoueurs.get(gagnant).push(carte)); 
     } 
     System.out.println("Pli du joueur " + (gagnant + 1)); 
     this.plisJoueurs.get(gagnant).toString(); 
    } 

    private void jouerManche(int nbPlis) { 
     for (int i = 1; i <= nbPlis; i++) { 
      System.out.println("\n\nPli numéro : " + i); 
      this.jouerPli(); 
     } 
     this.preparerMancheSuivante(); 
    } 

    public void jouerPartie(int nbManches) { 
     this.preparerPremiereManche(); 
     for (int i = 1; i <= nbManches; i++) { 
      System.out.println("\n\nManche numéro : " + i); 
      this.jouerManche(8); 
     } 
     System.out.println("Jeu terminé"); 
    } 
} 

クラススタックのみを使用してこの問題を解決する方法がわかりません。アイデアを持っている

誰もが:)

(私の悪い英語のため申し訳ありませんが)本当に素晴らしいことができ

+2

エラーが言うまさに:あなたの方法は 'int'と'スタック 'を望んでいる場合、それはあなたが、それを与えない' int'と 'Carte'を持っているものです。 – azurefrog

+0

あなたの教授はなぜあなたにベクトルを使用させるのですか?19年後に廃止されたタイプのものですか? –

+0

私は初心者なので多分私が思う基礎を学ぶために私は知らないでしょう。しかし、ええ、私は分かりません。 – Rouliente

答えて

0

問題は、結果を渡すことですStack<Carte>ないpush方法、のしかし、Carte

Stack<Carte> stack = this.mainsJoueurs.get(numjoueur); 
stack.push(carte); // this returns the added element 
this.mainsJoueurs.set(numjoueur, stack); 
関連する問題