Algun forero de buena fe que me lo pueda pasar a python3

Iniciado por Weng Weng, 3 Diciembre 2018, 20:28 PM

0 Miembros y 1 Visitante están viendo este tema.

Weng Weng

public class SieteyMedia {
public static void main(String[] args) {
 //Se crean el mazo, el jugador y la banca
 Mazo mazo = new Mazo();
 ManoSieteyMedia jugador = new ManoSieteyMedia();
 ManoSieteyMedia banca = new ManoSieteyMedia();
 
 //Se reparten las cartas iniciales:
               //Una al jugador y una a la banca
 jugador.agnadeCarta(mazo.daCarta());
 banca.agnadeCarta(mazo.daCarta());
 
 //El jugador pide cartas mientras según su estrategia
 while(jugador.cuentaPuntos()<=5){
  System.out.println(
                             "El jugador pide una carta extra");
  jugador.agnadeCarta(mazo.daCarta());
 }
 
 //La banca se planta si el jugador se ha pasado.
               //En caso contrario pide cartas
 if(jugador.cuentaPuntos()<=7.5){
                 //el jugador no se ha pasado
  while(banca.cuentaPuntos()<7.5 &&
                           banca.cuentaPuntos()<jugador.cuentaPuntos()){
   System.out.println(
                                      "La banca pide una carta extra");
   banca.agnadeCarta(mazo.daCarta());
  }
 }
 //Se cuentan los puntos obtenidos y se decide el ganador
 double puntosJ = jugador.cuentaPuntos();
 double puntosB = banca.cuentaPuntos();
 
 if(puntosJ<=7.5 && (puntosB>7.5 || puntosJ>puntosB)){

  System.out.println("Gana el jugador con "+jugador
                           +" ("+ puntosJ+" puntos) frente a "+ banca+
                           " ("+puntosB+" puntos) de la banca");
 }else if (puntosB<=7.5){
  System.out.println("Gana la banca con "
                           +banca+" ("+ puntosB+
                           " puntos) frente a "+ jugador+" ("+
                           puntosJ+" puntos) del jugador");
 }else{
  System.out.println("No hay ganador: Jugador "+
                           jugador+" ("+puntosJ+" puntos) y banca "
                           + banca +" ("+
                           puntosB+" puntos) se han pasado");
 }
}
}
Ahora procedo a poneros las soluciones ;)

Primero la clase abstracta Mano.

public abstract class Mano{
protected Carta[] cartas;
protected int numCartas;
static final int TOPE = 20;
public Mano() {
 numCartas = 0;
 cartas = new Carta[TOPE];
}

public Mano(int num) {
 cartas = new Carta[num];
 numCartas = 0;
}

public void descartaTodas() {
 numCartas = 0;
}

public void agnadeCarta(Carta c) {
 if(numCartas >= TOPE)
              throw new RuntimeException("No puedes añadir mas cartas");
 cartas[numCartas] = c;
 numCartas ++;
}

public int numeroDeCartas() {
 return numCartas;
}

public abstract double cuentaPuntos();

public String toString() {
 String std = "";
 for(int i = 0; i < numCartas; i++) {
  std = std + " "+ cartas;
 }
 return std;
}
}

Ahora os pondré la clase Carta: Nota: Fijaos que el enum de los palos va dentro de ésta ;)
public class Carta {
public static enum Palo { PICA, TREBOL, DIAMANTE, CORAZON};
private static String[] nombreCarta = {"AS", "2", "3", "4",
                                              "5", "6", "7", "8",
                                              "9", "10", "J", "Q",
                                              "K"};

private int valor;
private Palo palo;

public Carta(int v, Palo p){
 valor = v;
 palo = p;
}
public int valor() {return valor;}
public Palo palo() {return palo;}
public String toString() {
 return nombreCarta[valor-1] + " de " + palo;
}

}
Vamos ahora con la clase Mazo ;)
import java.util.Random;
public class Mazo {
private static Random alea = new Random();
private Carta[] mazo;
private int numCartas;

public Mazo() {
 mazo = new Carta[52]; //Creo el array de cartas.
 for(int n = 1; n < 13; n++) {
  for(Carta.Palo p: Carta.Palo.values()) {
   mazo[numCartas] = new Carta(n, p);
   numCartas++;
  }
 }
}

public void baraja() {
 for(int i = 0; i< numCartas; i++) {
  int r = alea.nextInt(numCartas);
  Carta c = mazo;
  mazo = mazo[r];
  mazo[r] = c;
 }
}

public int numeroDeCartas() {
 return numCartas;
}

public Carta daCarta(){
 if (this.numeroDeCartas()==0)
                  throw new RuntimeException("No quedan cartas.");
 numCartas--;
 return mazo[this.numeroDeCartas()];
}
}

Y ya por último con la clase ManoSieteYMedia:
public class ManoSieteyMedia extends Mano{
public double cuentaPuntos() {
 double puntos = 0;
 for(int i = 0; i<numCartas; i++) {
  puntos += cartas.valor();
 }
 return puntos;
}
}

Machacador

#1
-------E R R O R ------
"Solo tu perro puede admirarte mas de lo que tu te admiras a ti mismo"

z3nth10n


Interesados hablad por Discord.