Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Weng Weng

#1
Hola foro!!
Alguien tiene algún juego de hundir la flota en Python 3.

Si lo teneis jugador vs maquina seria la hostia!!!!

Gracias gente.
#2
Gente alguien tiene el código de Python 3 del juego hundir la flota?
Este me da fallo:

import numpy as np

from collections import Counter





def iguales(diccionario_1, diccionario_2):

    return diccionario_1.__eq__(diccionario_2)





def comprobar_barcos(oceano, cuenta_barcos):

    barcos_oceano = {}

    tamaño = 0

    for fila in range(oceano.shape[0]):

        for casilla in oceano[fila, :]:

            if casilla == 0:

                if tamaño > 1:

                    if tamaño in barcos_oceano:

                        barcos_oceano[tamaño] += 1

                    else:

                        barcos_oceano[tamaño] = 1

                tamaño = 0

            else:

                tamaño += 1

    for columna in range(oceano.shape[1]):

        for casilla in oceano[:, columna]:

            if casilla == 0:

                if tamaño > 1:

                    if tamaño in barcos_oceano:

                        barcos_oceano[tamaño] += 1

                    else:

                        barcos_oceano[tamaño] = 1

                tamaño = 0

            else:

                tamaño += 1



    return iguales(barcos_oceano, cuenta_barcos)





if __name__ == '__main__':

    respuestas = []

    numero_barcos = int(input())

    while numero_barcos > 0:

        lista_barcos = [int(x) for x in input().split()]

        cuenta_barcos = Counter(lista_barcos)

        tamaño_oceano = int(input())

        oceano = []

        for fila in range(tamaño_oceano):

            oceano.append([int(x) for x in input().split()])

        oceano = np.array(oceano)

        if comprobar_barcos(oceano, cuenta_barcos):

            respuestas.append('SI')

        else:

            respuestas.append('NO')

        numero_barcos = int(input())

    for respuesta in respuestas:

        print(respuesta)


Gracias foro ;)
#3
Buenas, 
Hago esta consulta para todos aquellos que estudiamos Python y nos toca hacer practicas. Me toca hacer un juego tipo jumanji y estoy mas perdido que el mar de Bolivia . Tengo hechos los eventos de cada casilla es decir (casilla uno encuentras una espada y se suma a tu inventario). Ahora lo que no se como hacer es que en cada tirada en función de lo que decida el dado que he definido como (dado = random.randint(1,7) ) se vaya a la casilla correspondiente. Ojala podáis echarme un cable.

Muchas gracias foreros ;D
#4
import random, os



baralla = [
    [1, 'Piques'], [2, 'Piques'], [3, 'Piques'],[4, 'Piques'],[5, 'Piques'],
    [6, 'Piques'], [7, 'Piques'], ['J', 'Piques'], ['Q', 'Piques'],['K', 'Piques'],
    [1, 'Diamants'], [2, 'Diamants'], [3, 'Diamants'],[4, 'Diamants'],[5, 'Diamants'],
    [6, 'Diamants'], [7, 'Diamants'], ['J', 'Diamants'], ['Q', 'Diamants'], ['K', 'Diamants'],
    [1, 'Cors'], [2, 'Cors'], [3, 'Cors'],[4, 'Cors'],[5, 'Cors'],
    [6, 'Cors'], [7, 'Cors'], ['J', 'Cors'], ['Q', 'Cors'], ['K', 'Cors'],
    [1, 'Trèvols'], [2, 'Trèvols'], [3, 'Trèvols'],[4, 'Trèvols'],[5, 'Trèvols'],
    [6, 'Trèvols'], [7, 'Trèvols'], ['J', 'Trèvols'], ['Q', 'Trèvols'], ['K', 'Trèvols']
]



#baraja las cartas

random.shuffle(baralla)




cartas_jugador=[]
cartas_maquina=[]

posicion_jugador=-1
posicion_maquina=-2

puntos_jugador=0
puntos_maquina=0

#CARTAS


print("MÀQUINA:") #Muestra cartas de la maquina


cartas_maquina=(baralla[posicion_maquina])
print(cartas_maquina)
posicion_maquina+=-2 # Ya que la del jugador es la ultima y esta es la penultima



print("JUGADOR:") #Muestra cartas del jugador


continuar="s"

while  continuar=="s": # Si quiere otra carta
     if contador_jugador==-1: #Proporciona una carta
        cartas_jugador=[baralla[contador_jugador]]
        print(cartas_jugador)
        contador_jugador-=2
     elif contador_jugador!=1: #Proporciona otra carta
        cartas_jugador.append(baralla[contador_jugador])
        print(cartas_jugador)
        contador_jugador-=1
    elif cartas_jugador[-1][0] == 'J' or  cartas_jugador[-1][0] =='Q' or cartas_jugador[-1][0] == 'K': #Condicion de si tienes una letra te da o,5 puntos
     puntos_jugador += 0.5
    else:
    puntos_jugador += cartas_jugador[-1][0] #Condicion de si tienes una carta que no es una letra te asigne el valor de la carta

    continuar=input("Quieres continuar s/n?")

Muchas gracias de antemano, si alguien me pudiese ayudar le estaría eternamente agradecido ya que se trata de un trabajo que puntua bastante. GRACIAS.
#5
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;
}
}