2

#PlatziCodingChallenge - Vacas y toros

Crea un programa para jugar “Vacas y toros” con el jugador. El juego consiste en que se genera un número aleatorio de 4 dígitos (no visible) y el usuario debe ingresar un número igualmente de 4 dígitos. Por cada dígito acertado el jugador “obtiene” una vaca y si no acierta alguno “obtiene” un toro. Muestra en pantalla los resultados y termina el juego cuando el usuario tenga 10 vacas.

Escribe tu comentario
+ 2
Ordenar por:
1
7689Puntos

No entendí muy bien las instrucciones, así que utilice las de esta página: http://reglasdejuegosimples.blogspot.com/2013/06/toros-y-vacas-es-un-juego-tradicional.html
Aquí mi resultado:

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Vacas y Toros</title></head><style>
  * {
    margin: 0;
    padding: 0;
  }

  .contenedor {
    width: 100%;
    height: 100vh;
    min-width: 750px;
    display: grid;
    grid-template-rows: 15%17.5%17.5%17.5%7.5%10%15%;
    grid-template-columns: 10%20%20%20%20%10%;
    grid-template-areas: 
    '. titulo titulo titulo titulo .''. compu compu compu compu .''. num num num num .''. . btn btn . .''. vacas vacas toros toros .''. puntajeV puntajeV puntajeT puntajeT .''. . . . . .'
    ;
  }

  #titulo{
    grid-area: titulo;
    display: flex;
    justify-content: center;
    align-items: center;
  }
  #compu{
    grid-area: compu;
    border: 2px solid black;
    border-radius: 15px;
    margin: 4px;
    display: grid;
    grid-template-rows: 100%;
    grid-template-columns: 25%25%25%25%;
    grid-template-areas: 'digitoAlt1 digitoAlt2 digitoAlt3 digitoAlt4';
  }
  #digitoAlt1{
    grid-area: digitoAlt1;
  }
  #digitoAlt2{
    grid-area: digitoAlt2;
  }
  #digitoAlt3{
    grid-area: digitoAlt3;
  }
  #digitoAlt4{
    grid-area: digitoAlt4;
  }
  #num{
    grid-area: num;
    display: grid;
    grid-template-rows: 100%;
    grid-template-columns: 25%25%25%25%;
    grid-template-areas: 'usuario usuario usuario usuario';
  }
  #usuario{
    margin: 4px;
    border: 2px solid black;
    border-radius: 15px;
    grid-area: usuario;
    font-size: 72px;
    text-align: center;
    letter-spacing: 24px;
  }
  #btn{
    margin: 20px;
    grid-area: btn;
    height: auto;
  }
  #vacas{
    grid-area: vacas;
    text-align: center;
  }
  #toros{
    text-align: center;
    grid-area: toros;
  }
  #puntajeV{
    justify-self: center;
    grid-area: puntajeV;
  }
  #puntajeT{
    justify-self: center;
    grid-area: puntajeT;
  }

  .centrado{
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 72px;
  }

  .btn {
    margin: 8px;
    border-radius: 15px;
    outline: none;
    font-size: 24px;
    border: solid 1px black;
    color: #000504;
    text-align: center;
    padding: 16px;
    margin-bottom: 36px;
  }

  .btn:hover {
    cursor: pointer;
    background-color: rgba(0, 0, 0, 0.397);
    color: white;
    transform: scale(1.1);
  }
</style><body><divclass="contenedor"><h1id='titulo'style="margin-bottom: 24px;">Vacas y Toros</h1><divid='compu'class="num"><spanclass="centrado"id='digitoAlt1'></span><spanclass="centrado"id='digitoAlt2'></span><spanclass="centrado"id='digitoAlt3'></span><spanclass="centrado"id='digitoAlt4'></span></div><divid="num"><inputid='usuario'maxlength="4"/></div><buttonid='btn'class='btn'onclick="jugar()">Jugar...</button><h1id='vacas'>Vacas</h1><spanid='puntajeV'>0</span><h1id='toros'>Toros</h1><spanid='puntajeT'>0</span></div><script>
    alert('El juego trata de que habrá un número secreto de 4 dígitos. El otro jugador trata de adivinar el número secreto en varios intentos. Las cifras deberán estar compuestas por diferentes números. Si un número está presente y se encuentra en el lugar correcto es evaluado como toro, si una cifra esta presente pero se encuentra en el lugar equivocado es evaluado como vaca. Al momento de llegar a 10 vacas, o adivinar el número teniendo 4 toros, el juego concluye. Dale a jugar para generar el número y luego ingresa tu propio número para evaluar')
    let numeroSecreto = []

    let flags = {
      existe: false,
      igual: false,
    }

    functionjugar(){
      numeroSecreto = []
      let i = 0while(i<4){
        flags.existe = falselet variable = Math.floor(Math.random()*10)
        numeroSecreto.forEach( num => {
          if (num === variable){
            flags.existe = true
          }
        })
        if(!flags.existe){
          numeroSecreto.push(variable)
          i++
        }
      }
      document.getElementById('digitoAlt1').innerHTML = '?'document.getElementById('digitoAlt2').innerHTML = '?'document.getElementById('digitoAlt3').innerHTML = '?'document.getElementById('digitoAlt4').innerHTML = '?'let button = document.getElementById('btn')
      button.onclick = revisar
      button.innerHTML = 'Revisar...'
    }

    functionrevisar(){
      let usuario = document.getElementById('usuario').value
      let vacas = parseInt(document.getElementById('puntajeV').innerHTML)
      let toros = 0

      usuario = usuario.split('')

      if (usuario.length === 4){
        for (let i = 0; i < 4; i++){
          if (numeroSecreto[i] == usuario[i]){
            toros++
          } else {
            for (let x = 0; x < 4; x++){
              if (numeroSecreto[i] == usuario[x]){
                vacas++
              }
            }
          }
        }
        
        document.getElementById('puntajeV').innerHTML = vacas
        document.getElementById('puntajeT').innerHTML = toros

        if (toros === 4){
          alert('Felicidades! Adivinaste el número')
          document.getElementById('digitoAlt1').innerHTML = numeroSecreto[0]
          document.getElementById('digitoAlt2').innerHTML = numeroSecreto[1]
          document.getElementById('digitoAlt3').innerHTML = numeroSecreto[2]
          document.getElementById('digitoAlt4').innerHTML = numeroSecreto[3]
          let button = document.getElementById('btn')
          button.disabled = true
          $('#btn').css({
              'cursor': 'not-allowed',
              'background-color':'white',
              'transform': 'scale(1)',
              'color': 'black'
          })
        }
        
        if (vacas >= 10){
          alert('Lastima! Se acabaron tus oportunidades')
          document.getElementById('digitoAlt1').innerHTML = numeroSecreto[0]
          document.getElementById('digitoAlt2').innerHTML = numeroSecreto[1]
          document.getElementById('digitoAlt3').innerHTML = numeroSecreto[2]
          document.getElementById('digitoAlt4').innerHTML = numeroSecreto[3]
          let button = document.getElementById('btn')
          button.disabled = true
          $('#btn').css({
              'cursor': 'not-allowed',
              'background-color':'white',
              'transform': 'scale(1)',
              'color': 'black'
          })
        }
      } else {
        alert('Por favor, ingresa un número de 4 dígitos')
      }
    }    
  </script><scriptsrc="https://code.jquery.com/jquery-3.5.1.min.js"integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="crossorigin="anonymous"></script></body></html>

También el código está en 46.VacasyToros.html en https://github.com/Edmundo0994/PlatziCodeChallenge

1
19943Puntos

Reto 46: Vacas y Toros en JavaScript:

// Vacas y Toros en JavaScriptclassVacasYToros{
  constructor() {
    this.generarNumeroSecreto()
    this.toros = 0this.vacas = 0while (this.vacas < 10) {
      this.pedirNumero()
      this.compararNumeros()
    }
    alert(`Resultado: ${this.vacas} vaca(s) y ${this.toros} toro(s)`)
  }
  generarNumeroSecreto() {
    let digitos = newArray()
    for (let i = 0; i < 4; i++) {
      const digito = Math.floor(Math.random() * 10)
      digitos.push(digito)
    }
    this.numeroSecreto = digitos
  }
  pedirNumero() {
    let numero, noEsValido
    do {
      numero = prompt("Introduzca un número de cuatro digitos")
      noEsValido = !numero || numero.length !== 4 || numero.split("").find((d) => isNaN(d))
      if (noEsValido) {
        alert("Debe introducir un número de 4 digitos")
      }
    } while (noEsValido)
    this.numeroUsuario = numero.split("").map(d => parseInt(d))
  }
  compararNumeros() {
    for (let i = 0; i < 4; i++) {
      if (this.numeroSecreto[i] === this.numeroUsuario[i]) {
        this.vacas++
      } else {
        this.toros++
      }
    }
    alert(`Usted tiene ${this.vacas} vaca(s) y ${this.toros} toro(s)`)
  }
}

const juego = new VacasYToros()
1

En Python 😃

import random
mensaje=''' VACAS Y TOROS El juego consiste en adivinar el número de de 4 digitos
y por cada cierto en digito el jugador recibe una vaca sino recibe un toro'''
print(mensaje)

defadivina(punto,toro):
    aleatorio=random.randint(0,9999)
    dig1=int(input('Ingresa el numero a adivinar: '))
    miles=int(aleatorio/1000)
    miles2=int(dig1/1000)
    if miles==miles2:
        print('Felicidades adivinaste el primer digito')
        punto=punto+1else:
        print('No lo adivinaste lo siento')
        toro=toro+1
    aleatorio=aleatorio-miles*1000
    dig1=dig1-miles2*1000

    cientos=int(aleatorio/100)
    cientos2=int(dig1/100)
    if cientos==cientos2:
        print('Felicidades adivinaste el segundo digito')
        punto=punto+1else:
        print('No lo adivinaste lo siento')
        toro=toro+1
    aleatorio=aleatorio-cientos*100
    dig1=dig1-cientos2*100

    decenas=int(aleatorio/10)
    decenas2=int(dig1/10)
    if decenas==decenas2:
        print('Felicidades adivinaste el tercer digito')
        punto=punto+1else:
        print('No lo adivinaste lo siento')
        toro=toro+1
    aleatorio=aleatorio-decenas*10
    dig1=dig1-decenas2*10

    unidades=int(aleatorio/10)
    unidades2=int(dig1/10)
    if unidades==unidades2:
        print('Felicidades adivinaste el cuarto digito')
        punto=punto+1else:
        print('No lo adivinaste lo siento')
        toro=toro+1
    puntaje(punto,toro)

defpuntaje(punto,toro):if punto>=10:
        print(f"FELICIDADES CONSEGUISTE {punto} puntos y tienes {toro} toros")
    else:
        adivina(punto,toro)

if __name__ == '__main__':
    punto=0
    toro=0
    adivina(punto,toro)```