TWiki home XP > XP > ClasseBaralhoSegundaIteracao ( vs. r1.1) XP webs:
Main | TWiki | Sandbox | Portugues
XP . { Bugzilla Últimas atualizações Busca Registro Sobre o TWiki }
 <<O>>  Difference Topic ClasseBaralhoSegundaIteracao (r1.1 - 06 Jul 2005 - AndreGermanoRegert)
Line: 1 to 1
Added:
>
>
META TOPICPARENT TestesParaOJogoDoMeio
-- AndreGermanoRegert - 06 Jul 2005

Classe ClasseBaralhoSegundaIteracao


/*
 * Criado em 01/07/2005
 */
package jogoDoMeio;

import java.util.Random;

/**
 * @author André Germano Regert
 *          Jader Wallauer
 */
public class Baralho {
   
   final int maximoDeCartas;
   final int numeroDeNaipes;
   final int cartasPorNaipe;
   protected boolean embaralhado;
   int[] monte;
   int totalDeCartas;
   
   public Baralho(int naipes, int cartas){
      assert naipes == 4 : "O baralho precisa ter 4 naipes";
      numeroDeNaipes = naipes;

      assert cartas == 52 : "O baralho precisa ter 52 cartas";
      maximoDeCartas = cartas;
      totalDeCartas = maximoDeCartas;
      cartasPorNaipe = maximoDeCartas/numeroDeNaipes;
      
      this.MontarMonte();
   }
   
   public boolean MonteEstaCompleto(){
      return totalDeCartas == 52;
   }
   
   private int TotalDeNaipes(){
      return numeroDeNaipes;
   }
   
   private void MontarMonte(){
      monte = new int[maximoDeCartas];
      for (int carta = 0; carta < maximoDeCartas; carta++) {
         monte[carta] = carta + 1;
      }
      embaralhado = false;
      totalDeCartas = 52;
   }
   
   public void Embaralha(){
      if (this.MonteEstaCompleto()) {
         Random proxima = new Random();
         for (int i = 0; i < 2000; i++) {
            int umaCarta = proxima.nextInt(maximoDeCartas);
            int outraCarta = proxima.nextInt(maximoDeCartas);
            int carta = monte[umaCarta];
            monte[umaCarta] = monte[outraCarta];
            monte[outraCarta] = carta;
         }
         embaralhado = true;
      }
   }
   
   public boolean EstaEmbaralhado(){
      return embaralhado;
   }
   
   public int TiraCarta(){
      assert (totalDeCartas > 0) : "O baralho acabou!"; 
      return monte[--totalDeCartas];
   }
   
   public String QualEACarta(int carta){
      assert (1 <= carta) && (carta <= maximoDeCartas): "Esta carta não existe"; 
      String nomeDaCarta = new String();
      nomeDaCarta = this.IdentificaValor(carta);
      nomeDaCarta = nomeDaCarta + " de ";
      nomeDaCarta = nomeDaCarta + this.IdentificaNaipe(carta);
      return nomeDaCarta.toString();
   }
   
   private String IdentificaValor(int carta){
      int aCarta = carta % cartasPorNaipe;
      String valor = new String();
      switch (aCarta) {
         case 1: valor = "Ás"; break;
         case 2: valor = "Dois"; break;
         case 3: valor = "Três"; break;
         case 4: valor = "Quatro"; break;
         case 5: valor = "Cinco"; break;
         case 6: valor = "Seis"; break;
         case 7: valor = "Sete"; break;
         case 8: valor = "Oito"; break;
         case 9: valor = "Nove"; break;
         case 10: valor = "Dez"; break;
         case 11: valor = "Valete"; break;
         case 12: valor = "Dama"; break;
         case 0: valor = "Rei"; break;
      default: 
         break;
      }
      return valor;
   }

   private String IdentificaNaipe(int carta){
      int naipe = carta / cartasPorNaipe;
      if ((carta % cartasPorNaipe) == 0){
         naipe--;
      }
      String valor = new String();
      switch (naipe) {
         case 0: valor = "Ouro"; break;
         case 1: valor = "Espada"; break;
         case 2: valor = "Copas"; break;
         case 3: valor = "Paus"; break;
      default: 
         break;
      }
      return valor;
   }
}



Topic ClasseBaralhoSegundaIteracao . { View | Diffs | r1.1 | More }
Revision -
Revision r1.1 - 06 Jul 2005 - 04:38 - AndreGermanoRegert
Copyright © 1999-2003 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding XP? Send feedback.