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.
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
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()
Dejo el repo con mi solución en JS, C y Python.
https://github.com/ceporro/PlatziCodingChallenge/tree/master/Day 46
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)```